有一个弹出菜单显示/创建一个对话框? Windows32编程

时间:2012-11-14 14:51:13

标签: c winapi dialog popupmenu

到目前为止,我已经查看了MSDN大约2个小时,我仍然对如何使用对话框感到困惑。我试过在谷歌上阅读几个例子,并且进一步混淆了。

目前我有一个弹出菜单,其选项只是被选中和取消选中,菜单上的最后一项是显示一个对话框,在对话框中我将有一个收音机的组合框按钮,但我不确定在何处创建对话框或要创建哪种对话框以显示弹出菜单。
它是在WM_CREATE消息中创建的,我认为它可能就像创建一个窗口一样简单它看起来不像吗? 或者它是在我触发弹出菜单项的WM_COMMAND中制作的。 案例ID_TOOL_TOOLBOX是应该调用对话框以显示或创建的对象。但是我不确定它是在那里创建的,甚至不是要创建什么样的对话框。

还是其他完全不同的地方?

case WM_COMMAND:

    case ID_TOOL_POLYGON:
        CheckMenuItem(hMenu, Selection, MF_UNCHECKED);
        Selection = LOWORD(wParam);
        CheckMenuItem(hMenu, Selection, MF_CHECKED);
        if (GetMenuState(hMenu, Selection, MF_BYCOMMAND) == MF_CHECKED)
        {
                MessageBox(hwnd, L"Polygon does nothing this is a test popup msgbox.", L"Works", MB_OK);
        }
        break;

    case ID_TOOL_SELECT:
        CheckMenuItem(hMenu, Selection, MF_UNCHECKED);
        Selection = LOWORD(wParam);
        CheckMenuItem(hMenu, Selection, MF_CHECKED);
        break;

    case ID_TOOL_TOOLBOX:

1 个答案:

答案 0 :(得分:2)

这是我们搜索“win32 ShowDialog”时首次出现的点击之一:

http://www.functionx.com/win32/Lesson04.htm

  

使用DialogBox函数创建一个对话框。它的语法是:

     

INT_PTR DialogBox(HINSTANCE hInstance,LPCTSTR lpTemplate,HWND   hWndParent,DLGPROC lpDialogFunc);

     

此函数的第一个参数是应用程序的句柄   正在使用对话框。

     

lpTemplate指定对话框模板。

     

hWndParent是拥有此对话框的父窗口的句柄   框。

     

lpDialofFunc必须是负责创建此过程的过程   对话框。

     

因此,您必须定义一个CALLBACK过程,其语法为:

     

INT_PTR CALLBACK DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,   LPARAM lParam);