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

Posted

技术标签:

【中文标题】Win32:为啥我的 PRINTDLG(或 PRINTDLGEX)有灰色背景?【英文标题】:Win32: why does my PRINTDLG (or PRINTDLGEX) have gray background?Win32:为什么我的 PRINTDLG(或 PRINTDLGEX)有灰色背景? 【发布时间】:2015-06-28 13:16:11 【问题描述】:

我正在使用 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))

    ...

我的申请有什么问题?

非常感谢。

【问题讨论】:

使用 PrintDlgEx() 代替。 @HansPassant 我已经尝试过使用PrintDlgEx(),但我得到了相同的结果。 请显示您使用PrintDlgEx的代码。 @IInspectable 我已经使用 PrintDlgEx 包含了代码。 【参考方案1】:

您的进程可能没有主题,因为它没有体现 v6 comctl32。非主题对话框默认为按钮面彩色背景。主题对话框具有白色背景。

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

【讨论】:

是的,这解决了我的问题。非常感谢您的帮助!

以上是关于Win32:为啥我的 PRINTDLG(或 PRINTDLGEX)有灰色背景?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的编辑控件在没有使用 MFC 的 win32 c++ 应用程序中看起来很奇怪?

为啥在 Win32 中使用 `GetAsyncKeyState()` 时我的热键会出错?

softwarebundler:win32/xiazai是啥?为啥报病毒?

我想知道为啥我的cadence在win7 32位安装以后打开出现这个错误,我查看license又是正常安装的,

为啥系统会弹出WIN32错误

我的电脑是win7的为啥netstat 命令执行不了啊?