可以运行,但是不显示对话框,不知道怎么回事?请大家看看:mp.cpp#include <windows.h>
#include "mp_01.h"BOOL CALLBACK DialogFunc(
  HWND hwndDlg,  // handle to dialog box
  UINT uMsg,     // message
  WPARAM wParam, // first message parameter
  LPARAM lParam  // second message parameter
);int WINAPI  WinMain(
  HINSTANCE hInstance,      // handle to current instance
  HINSTANCE hPrevInstance,  // handle to previous instance
  LPSTR lpCmdLine,          // command line
  int nCmdShow              // show state
)
{
MSG msg;
HWND hDlg;
hDlg=CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DLG),NULL,(DLGPROC)DialogFunc);
ShowWindow(hDlg,SW_SHOW);
UpdateWindow(hDlg);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}BOOL CALLBACK DialogFunc(
  HWND hDlg,  // handle to dialog box
  UINT uMsg,     // message
  WPARAM wParam, // first message parameter
  LPARAM lParam  // second message parameter
)
{
switch(uMsg)
{
case WM_INITDIALOG:
return TRUE; 
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDD_OPEN:
MessageBox(hDlg,"you click open","",MB_OK);
return TRUE;
}

case WM_CLOSE:
DestroyWindow(hDlg);
return TRUE;
break;
case WM_DESTROY:
PostQuitMessage(0);
return TRUE; 
break;
}
return FALSE;
}
mp.h#define IDD_OPEN 100
#define IDD_DLG 101mp.rc#include <windows.h>
#include "mp_01.h"MyDB DIALOG 30,30,150,250
CAPTION "mp_01"
STYLE DS_MODALFRAME|WS_POPUP|WS_CAPTION|WS_SYSMENU
CLASS "Dlg"
{
DEFPUSHBUTTON "open",IDD_OPEN,40,40,30,13,
WS_CHILD|WS_VISIBLE|WS_TABSTOP
}

解决方案 »

  1.   

    hDlg=CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DLG),NULL,(DLGPROC)DialogFunc);
    这里对话框ID是IDD_DLG,
    RC文件中对话框又是MyDB DIALOG 30,30,150,250,当然不能显示了,根本就没有IDD_DLG这个对话框模板
      

  2.   

    首先指出的是:
    switch(uMsg)
    里面的case,请每个都加一个break!
    case WM_COMMAND:
            switch(LOWORD(wParam))
            {
            case IDD_OPEN:
                MessageBox(hDlg,"you click open","",MB_OK);
                return TRUE;
            }
        
        case WM_CLOSE:
            DestroyWindow(hDlg);
            return TRUE;
            break;
    此处,如果不是 IDD_OPEN ,那么,就执行了WM_CLOSE了!
      

  3.   

    可以不加的,因为他的代码中每个分支最后都用return 返回了。
      

  4.   

    不好意思,上面说错了,确实是要加break
      

  5.   

    我想问一下sdk中怎么使IDD_DLG关联我想显示的那个对话框?
      

  6.   

    我都加了break了,可是还是不行
      

  7.   

    我上面不是说了吗?你的RC文件中的对话框模板名和CreateDialog中引用的不一样啊,另外用对话框的话不用注册的。
      

  8.   


    他的意思是 你把MyDB DIALOG 30,30,150,250 改成 IDD_DLG DIALOG 30,30,150,250