描述:
如题
我这样
Mwin.Create(IDD_MSGWIN_DIALOG);
Mwin.DoModal();
出错
怎么才能显示一个已经存在的对话框?
解决方案1:
Mwin 估计是你的atl对话框:
假如是 模式的,那么:
CAtlDialog Mwin; //CAtlDialog 是你的atl对话框类。
Mwin.DoModal();
销毁对话框 EndDialog();
假如是 无模式的,那么:
CAtlDialog Mwin;
Mwin.Create(parent.m_hWnd);
Mwin.ShowWindow(SW_NORMAL);
销毁对话框 Mwin.DestroyWindow();
本来就是在工程中直接Insert Dialog,谁用“insert -> new alt object -> miscellaneous -> dialog”了?楼主没看清吧?
解决方案3: 1.在控件的一个方法中加入
HWND hwnd = AtlAxCreateDialog(g_hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, NULL, NULL);
DWORD dwRet = GetLastError();
::UpdateWindow(hwnd);
::ShowWindow(hwnd, SW_SHOW);
2. 在控件的头文件中声明
extern HINSTANCE g_hInstace;
3. 在控件的cpp文件中
HINSTANCE g_hInstance;
4. 在DllMain中
g_hInstance = hInstance;