1

到目前为止,我已经看了大约 2 个小时的 MSDN,但我仍然对如何使用对话框感到非常困惑。我试过在谷歌上阅读几个例子,只是更加困惑。

目前我有一个弹出菜单,它的选项只是被选中和取消选中,我在菜单上的最后一项是显示一个对话框,在对话框内我将有一个用于一些单选按钮的组框,但我'我不确定在哪里创建一个对话框或创建什么样的对话框以由弹出菜单显示。
它是在 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:
4

1 回答 1

2

这是我们搜索“win32 ShowDialog”时出现的第一个点击:

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

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

INT_PTR 对话框(HINSTANCE hInstance,LPCTSTR lpTemplate,HWND hWndParent,DLGPROC lpDialogFunc);

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

lpTemplate 指定对话框模板。

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

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

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

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

于 2012-11-14T15:02:50.997 回答