1.使用静态链接编译方式编译项目
2.在DLL窗口资源中
<2.1模态
void showdialog()
{
HINSTANCE save_hInstance = AfxGetResourceHandle();
AfxSetResourceHandle(AfxGetInstanceHandle());
CDialog dlg(IDD_DIALOG_INOUT_CONTROL); //打开ID为2000的对话框
dlg.DoModal();
AfxSetResourceHandle(save_hInstance);
}
<2.2非模态
CDialog dlg(IDD_DIALOG_INOUT_CONTROL); //打开ID为2000的对话框
void showdialog()
{
HINSTANCE save_hInstance = AfxGetResourceHandle();
AfxSetResourceHandle(AfxGetInstanceHandle());
dlg.create();//伪代码
dlg.showwindow();
AfxSetResourceHandle(save_hInstance);
}
3.
typedef void (*lpFun)(void);
HINSTANCE hDll; //DLL句柄
hDll = LoadLibrary(L"DialogInOutControl.dll");
if (NULL==hDll)
{
AfxMessageBox(L"DLL加载失败");
}
lpFun addFun; //函数指针
lpFun pShowDlg = (lpFun)GetProcAddress(hDll,L"DialogShowMode");
if (NULL==pShowDlg)
{
AfxMessageBox(L"DLL中函数寻找失败");
}
HINSTANCE exe_hInstance = GetModuleHandle(NULL);
HINSTANCE dll_hInstance = GetModuleHandle(L"DialogInOutControl.dll");
AfxSetResourceHandle(dll_hInstance); //切换状态
pShowDlg();
AfxSetResourceHandle(exe_hInstance); //恢复状态
FreeLibrary(hDll);