如何等待一个非模态对话框结束?
在WinMain()中创建一个非模态对话框,如何等待这个非模态对话框结束?
代码如下:
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
CMyDialog CMainDlg;
CMainDlg.Create(NULL); //传入参数:对话框的父窗口句柄
ShowWindow(CMainDlg.m_hWnd, SW_SHOW);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
CMyDialog是自己用sdk封装的对话框类。在对话框的WM_DESTROY消息处理函数中添加代码:PostQuitMessage(0);
实际运行结果是,对话框结束后,GetMessage()的返回值始终不为0,程序死在循环的地方。
请问如何实现创建非模态对话框后的等待代码??
[解决办法]
在CMainDlg的消息处理中在Close的时候给你的当前的线程法发个消息就ok了,用PostThreadMessage.
在你MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
...这里接收对话框发来的消息就ok!
TranslateMessage(&msg);
DispatchMessage(&msg);
}