MFC对话框exe程序如何转换成dll程序?
大家有没有好的方法?我说说我的做法,但是有点问题。
我在对话框exe工程导出一个函数
void show()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CDllwndDlg * dlg = new CDllwndDlg();
dlg->DoModal();
};
然后将该工程的编译输出类型给为dll类型。
然后再另外一个工程中加载并调用该dll,代码如下:
void CtestDllDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
typedef void (*Msgs)(void);
HINSTANCE h = ::LoadLibrary(L"Dllwnd.dll");
if (h == NULL) return;
Msgs dllfun = (Msgs)::GetProcAddress(h, "show");
dllfun();
::FreeLibrary(h);
}
窗体弹出正常,但是我调试时发现程序执行到
HINSTANCE h = ::LoadLibrary(L"Dllwnd.dll");
语句就弹出了对话框,也就是还没有调用函数,而仅仅是加载dll就弹出了对话框,这个是什么原因呢?导出的函数是不带参数的,要是需要带参数调用的话估计就不行了。大家说说我的问题在哪里,有好方法的请求共享下。谢谢!