小弟用VC++6.0 +WIN32API 写了一个显示对话框的小程序,对话框能够正常的显示,点击OK按钮能够正常的退出。但是,我发现对话框右上角的退出按钮却实效了,不能够完成推出功能了。
俺实在是不知道为什么了还望各位高手多多指教
以下是源代码#include <windows.h>
#include "resource.h"BOOL CALLBACK DialogProc (HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR lpCmdLine,int nShowCmd)
{
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG),NULL,DialogProc);
}BOOL CALLBACK DialogProc (HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_COMMAND:
if (LOWORD(wParam)==IDOK)
{
EndDialog(hwnd,0);
return TRUE;
}
}
return FALSE;
}资源文件摘录如下(部分)/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//IDD_DIALOG DIALOG DISCARDABLE 0, 0, 187, 100
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "test"
FONT 12, "MS Serif"
BEGIN
DEFPUSHBUTTON "OK",IDOK,69,79,50,14
END#endif // Chinese (P.R.C.) resources
/////////////////////////////////////////////////////////////////////////////
呵呵,你们的意思就是要自己在DialogProc窗口过程中处理WM_SYSCOMMAND 消息。???可是,charles petzold 的windos 程序设计中第11章对话框的第一个例子 about1 他并没有处理WM_SYSCOMMAND 消息,可是却可以用对话框右上角的退出按钮,退出对话框这又是为什么呢????
还请高手指点一二
EndDialog(hwnd,0);
return TRUE;
}
case WM_CLOSE:
EndDialog(hwnd,0);
return TRUE;
case IDOK :
EndDialog (hwndDlg, 0) ;
return true ;搞定后要给偶分,没搞定不要给我分
{
EndDialog(hwnd,0);
return TRUE;
}
也可以解决问题~虽然你没有cancel铵钮