阅读:1712回复:3
不用MFC,怎么使用对话框啊?
我的代码如下,但是一旦把2个按扭去掉就没办法关掉了。
现在也有问题。好象关不干净。程序结束了,进程里面还有。 #include <windows.h> #include\"resource.h\" INT_PTR CALLBACK DlgProc1(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); int PASCAL WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow) { MSG msg; DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL,(DLGPROC)DlgProc1); while (GetMessage (&msg, NULL, 0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (0); } INT_PTR CALLBACK DlgProc1(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { LRESULT result=0; switch(message) { case WM_INITDIALOG: break; case WM_CLOSE: EndDialog(hDlg, result); break; case WM_DESTROY: EndDialog(hDlg, result); break; case WM_QUIT: EndDialog(hDlg, result); break; case WM_COMMAND: switch(LOWORD (wParam)){ case IDOK: EndDialog(hDlg, IDOK); break;} break; case WM_SYSCOMMAND: switch(wParam){ case SC_CLOSE: EndDialog(hDlg, result); break;} break; default: return DefWindowProc(hDlg,message,wParam,lParam ); } return FALSE; } rc文件也贴下吧!虽然没啥用。 IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 187, 100 STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION \"死了\" FONT 10, \"System\" BEGIN DEFPUSHBUTTON \"OK\",IDOK,130,7,50,14 PUSHBUTTON \"Cancel\",IDCANCEL,130,24,50,14 END ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO // #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO DISCARDABLE BEGIN IDD_DIALOG1, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 180 TOPMARGIN, 7 BOTTOMMARGIN, 93 END END #endif // APSTUDIO_INVOKED #endif // Chinese (P.R.C.) resources |
|
沙发#
发布于:2005-03-06 22:21
应该在dialog里处理消息而不是在winmain里处理。
|
|
板凳#
发布于:2005-03-07 00:17
我的代码如下,但是一旦把2个按扭去掉就没办法关掉了。 同志,你的问题是混淆了对话框的消息处理和窗口的消息处理。 其实你在按下对话框按钮的时候,对话框已经结束了。但是你的主程序还在不停地取消息和分发消息;都没给人机会退出,你却在对话框的消息过程里大做文章:) 所以你只要在主消息泵里增加一个条件,这个条件发生时PostQuitMessage(0);这样下一个GetMessage才会返回假,你的循环才有可能结束呀 |
|
|
地板#
发布于:2005-03-07 00:22
对了,你把小蚂蚁的例子下来看看
人家大公无私把代码公开了,我们不要辜负了他的一番美意 参见: 续:如何使模板资源创建的对话框作为主窗口显示?我已经解决这个问题,现提供代码给象我一样的菜鸟 |
|
|