注册 登录
编程论坛 VC++/MFC

[Win32编程]创建了一个对话框资源,如何来显示它?

hust_sj 发布于 2010-08-09 22:05, 2301 次点击
对话框资源ID:IDM_ADD, 点击主窗口菜单项:添加  就弹出个自己建立的对话框IDM_ADD ,这个怎么实现?
6 回复
#2
shn5212010-08-09 23:25
http://www.
第7讲
#3
hust_sj2010-08-10 00:48
回复 2楼 shn521
那个我看过,使用MFC做的 ,要是不通过MFC向导, 怎么自己写代码? (我建立的工程是 Win32 Application,不是MFC)
#4
东海一鱼2010-08-10 09:16
用下面的API创建。
DialogBoxParam
int DialogBoxParam(
HINSTANCE hInstance,      //进程实例句柄  
LPCTSTR lpTemplateName,   //对话框模板文件名或资源ID
HWND hWndParent,          //父窗口句柄
DLGPROC lpDialogFunc,     //对话框消息处理函数指针
PARAM dwInitParam);       //初始化参数,可为空
#5
JackRap2010-08-10 12:45
创建一个模式对话框,通常需要三步:
1、在资源文件中定义对话框模板,比如:
AddDB1 DIALOG 18,18,140,100
CAPTION "输入信息"
STYLE DS_MODALFRAME|WS_POPUP|WS_CAPTION|WS_SYSMENU
{
 LTEXT "请输入:", -1, 20, 20,  50, 20
 EDITTEXT      ID_EDIT1, 65, 18,  40, 14
 DEFPUSHBUTTON "确定",     IDOK, 30,70,38,20
 PUSHBUTTON    "取消", IDCANCEL, 80,70,38,20
}

2、定义对话框函数,比如:
BOOL CALLBACK AddDialog1(HWND hdwnd,UINT message,
                         WPARAM wParam,LPARAM lParam)
{
 char buf[80];
 static HWND hEd1;

 switch (message)
 {
  case WM_INITDIALOG:
     ……
     ……
         hEd1=GetDlgItem(hdwnd,ID_EDIT1);
         SetFocus(hEd1);
         return 0;

  case WM_COMMAND:
   switch (LOWORD(wParam))
   {
    case IDOK:
     ……
          GetWindowText(hEd1,buf,50);
     ……
          EndDialog(hdwnd,1);
          return 1;

    case IDCANCEL:
          EndDialog(hdwnd,0);
          return 1;
   }
 }
 return 0;
}

3、调用对话框,比如:
 switch (message)
 {
 ……
  case WM_COMMAND:
   switch (LOWORD(wParam))
   {
    case IDM_ADD:
      DialogBox(hInst,"AddDB1",hwnd,(DLGPROC)AddDialog1);
      break;
     ……
     ……


PS:程序不一定正确,但原理是这样。

#6
longren4882010-08-10 20:51
有模式对话框和无模式对话框,两种情况
#7
DongDong0012011-05-13 00:43
hao
1