小弟用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
/////////////////////////////////////////////////////////////////////////////

解决方案 »

  1.   

    因为是用WIN32API写的,所以要自己响应消息阿
      

  2.   

    谢谢楼上2位。。
    呵呵,你们的意思就是要自己在DialogProc窗口过程中处理WM_SYSCOMMAND 消息。???可是,charles petzold 的windos 程序设计中第11章对话框的第一个例子 about1 他并没有处理WM_SYSCOMMAND 消息,可是却可以用对话框右上角的退出按钮,退出对话框这又是为什么呢????
    还请高手指点一二
      

  3.   

    case WM_DESTROY:
    EndDialog(hwnd,0);
    return TRUE;
    }
      

  4.   


    case WM_CLOSE:
    EndDialog(hwnd,0);
    return TRUE;
      

  5.   

    楼主。把下面的代码复制上去。保证搞定!!!!!!!!          case IDCANCEL:
     case IDOK :
                  EndDialog (hwndDlg, 0) ;
    return true ;搞定后要给偶分,没搞定不要给我分
      

  6.   

    惨了,好像我没有写清楚。看来没有分了。上面意思是说也可以 if (LOWORD(wParam)==IDCANCEL)
    {
    EndDialog(hwnd,0);
    return TRUE;
    }
    也可以解决问题~虽然你没有cancel铵钮