具有Windows 7外观的消息框

Joh*_*Noa 3 c++ windows winapi visual-c++ windows-7

我在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;
}
Run Code Online (Sandbox Code Playgroud)

我叫ccm(); 当用户想要退出时我会像那样检测到它

case WM_CLOSE:
    ccm();
    return 0;
Run Code Online (Sandbox Code Playgroud)

但我希望看起来像原始窗口样式的代码我不想设计我希望本机代码的自定义消息

Rem*_*eau 6

您正在寻找的那种定制可以通过使用TaskDialog()TaskDialogIndirect()代替而实现MessageBox().它们是Vista和更高版本Windows上的首选消息框功能,因为它们更灵活,并且它们更多地使用标准化的Windows UI元素,以便与其他UI更加一致.

例如:

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

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;
    }
}
Run Code Online (Sandbox Code Playgroud)