我提到了这篇关于自定义消息框设计的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风格 我不想设计我想要原生代码的自定义消息
答案 0 :(得分: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);
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;
}
}