1

これまでに約 2 時間 MSDN を調べましたが、ダイアログ ボックスの使用方法についてもまだ非常に混乱しています。私はグーグルでいくつかの例を読んでみましたが、さらに混乱しました。

現在、オプションがオンまたはオフになっているポップアップメニューがあり、メニューにある最後の項目は、ダイアログボックスを表示することです。ダイアログボックス内には、いくつかのラジオボタン用のグループボックスがありますが、ダイアログ ボックスを作成する場所や、ポップアップ メニューに表示するダイアログ ボックスの種類がわかりません
ウィンドウを作成するのと同じくらい簡単かもしれないと思っていましたが、そうではないようです? または、ポップアップメニュー項目をトリガーする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」を検索したときに表示される最初のヒットの 1 つです。

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);

于 2012-11-14T15:02:50.997 に答える