3

メッセージ ボックスのデザインのカスタマイズに関する次の MSDN の記事を参照しました。

ユーザー インターフェイス テキスト

ネイティブ メッセージ ボックスは次のようになります。

しかし、私のメッセージボックスは次のようになります:

そして、ここに私が欲しいものがあります:

私はC++を使用しています。これが私のコードです(終了メッセージの確認用):

int ccm()
{
    int msgbox = MessageBox(
        NULL,
        (LPCWSTR)L"Do you really want to quit?",
        (LPCWSTR)L"Music",
        MB_ICONQUESTION  | MB_YESNO | MB_DEFBUTTON2
    );

    switch (msgbox)
    {
        case IDYES:
            initdw();
            break;
        case IDNO:
            adw();
            break;
    }

    return msgbox;
}

私は ccm(); を呼び出します。ユーザーが終了したいとき、私はそれをそのように検出します

case WM_CLOSE:
    ccm();
    return 0;

しかし、元の Windows スタイルのようなコードが欲しい カスタム メッセージをデザインしたくない ネイティブ コードが欲しい

4

1 に答える 1

6

探している種類のカスタマイズは、 の代わりにTaskDialog()またはを使用して実現できます。これらは、Vista 以降のバージョンの Windows で推奨されるメッセージ ボックス機能です。柔軟性が高く、標準化された Windows UI 要素をより活用して、他の UI との一貫性のある外観を実現できるからです。TaskDialogIndirect()MessageBox()

例えば:

TaskDialog(hMyWnd, hInstance, L"Music", L"You have the latest version of Music", NULL, TDCBF_OK_BUTTON, MAKEINTRESOURCE(MY_MUSIC_ICON_ID), NULL);

int iBtn = IDNO;
if (TaskDialog(hMyWnd, NULL, L"Music", L"Do you really want to quit?", NULL, TDCBF_YES_BUTTON | TDCBF_NO_BUTTON, NULL, &iBtn) == S_OK)
{
    switch (iBtn)
    {
        case IDYES:
            initdw();
            break;
        case IDNO:
            adw();
            break;
    }
}
于 2013-07-16T21:14:37.383 に答える