在控制台程序中想显示对话框,结果对话框显示出来时好像没显示完,也不响应消息,代码如下:
int _tmain(int argc, _TCHAR* argv[])
{
MSG msg; HWND hwnd=::CreateDialog(::GetModuleHandle(NULL),MAKEINTRESOURCE(IDD_DIALOG1),NULL,DialogProc);
::ShowWindow(hwnd,SW_SHOWNORMAL);
while(::GetMessage(&msg,NULL,NULL,NULL))
{
if(!::IsDialogMessage(hwnd,&msg))
{ ::TranslateMessage(&msg);
::DispatchMessage(&msg); 
}
} }

解决方案 »

  1.   

    DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);
      

  2.   

    多谢楼上,不管用不用模态,消息循环都是要的,因为不写循环的话,主程序就退出了,既然要写消息循环,就选了非模态的了,这个问题已经解决了,是自己大意,在DialogProc中最后写了return TRUE;了,造成其实消息的处理被内置处理过程忽略了.
    还是多谢你,结贴了.