永发信息网

Win32程序下如何创建创建一个对话框

答案:1  悬赏:10  手机版
解决时间 2021-03-25 23:22
  • 提问者网友:相思似海深
  • 2021-03-25 17:25
Win32程序下如何创建创建一个对话框
最佳答案
  • 五星知识达人网友:罪歌
  • 2021-03-25 18:53

对话框

Win32程序下对话框分为模态和非模态两种。其中模态对话框显示后,其父窗口将不能操作。
消息框(例如Windows上常见的系统错误警告)为模态对话框的一种,功能较为简单。

创建显示对话框

通过调用以下函数显示模态对话框:

void DialogBoxW(
   hInstance,   //包含对话框模板的模块的句柄。如为NULL,则视为指定当前运行的可执行程序。
   lpTemplate,  //对话框模板名的字符串,或者对话框模板的标识ID。
   hWndParent,  //父窗口的句柄。
   lpDialogFunc //对话框的消息处理回调函数的指针。
);例如,在应用程序的菜单中点击“删除项目”时,显示模态对话框。该对话框包含三个控件:一个文本框(用于输入删除项目名),“确定”按钮,“取消”按钮。这些控件的标识ID分别为ID_ITEMNAME,IDOK,IDCANCEL。szItemName变量用于存储对话框中输入的删除项目名。

在应用程序主窗口的消息处理回调函数中,响应菜单点击事件,创建显示对话框:
case WM_COMMAND: 
    switch (LOWORd(wParam)) 
    { 
        case IDM_DELETEITEM: 
            if (DialogBox(hinst, 
                    MAKEINTRESOURCE(DLG_DELETEITEM), 
                    hwnd, 
                    (DLGPROC)DeleteItemProc)==IDOK) 
            {
                // 对话框通过点击“确定”关闭
                // 补全代码,实现删除项目操作
            }
            else 
            {
                // 对话框通过点击“取消”关闭
            } 
            break; 
    } 
    return 0L;对话框的消息处理回调函数中,响应“确定”按钮点击事件,将文本框内容保存至szItemName变量后,关闭对话框;响应“取消”按钮点击事件,关闭对话框:
char szItemName[80]; // 用于存储对话框中输入的删除项目名 
 
BOOL CALLBACK DeleteItemProc(HWND hwndDlg, 
                             UINT message, 
                             WPARAM wParam, 
                             LPARAM lParam) 

    switch (message) 
    { 
        case WM_COMMAND: 
            switch (LOWORd(wParam)) 
            { 
                case IDOK: 
                    if (!GetDlgItemText(hwndDlg, ID_ITEMNAME, szItemName, 80)) 
                         *szItemName=0; 
 
                    // 注意此处没有break; 
 
                case IDCANCEL: 
                    EndDialog(hwndDlg, wParam); // 关闭对话框
                    return TRUE; 
            } 
    } 
    return FALSE; 
}具体请仔细阅读MSDN帮助文档:网页链接
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯