Win32:为什么我的PRINTDLG(或PRINTDLGEX)有灰色背景?

时间:2015-06-28 13:16:11

标签: c++ user-interface winapi

我正在使用Microsoft Visual Studio Community 2015 RC创建一个Win32应用程序。我正在使用C ++。

当我致电PrintDlg()PrintDlgEx()时,生成的对话框会显示灰色背景。无论如何,我检查的所有其他程序中的相同对话框都有白色背景。

我看到有办法处理WM_CTLCOLORDLG来设置对话框的背景颜色,但由于所有其他应用程序具有相同的行为,我认为它们都不是为了处理此消息而构建的。同样的方式。

我在这里包含了用于打开PrintDlg()对话框的代码:

PRINTDLG print_dialog{
    sizeof(PRINTDLG),
    hWnd,
    NULL, NULL, NULL,
    0,
    0, 0, 0, 0,
    1,
    NULL, 0,
    NULL,
};
if (PrintDlg(&print_dialog))
{
    ...
}

PrintDlgEx()的代码:

PRINTDLGEX print_dialog = {};
print_dialog.lStructSize = sizeof(PRINTDLGEX);
print_dialog.hwndOwner = hWnd;
print_dialog.Flags = PD_NOPAGENUMS;
print_dialog.nStartPage = START_PAGE_GENERAL;
if (PrintDlgEx(&print_dialog))
{
    ...
}

我的申请有什么问题?

非常感谢。

1 个答案:

答案 0 :(得分:1)

可能你的过程不是主题,因为它没有表现出v6 comctl32。非主题对话框默认为按钮面彩色背景。主题对话框具有白色背景。

将comctl32 v6清单添加到您的可执行文件中。