none
PrintDlg 创建的打印对话框,如何设置才能像 notepad 那样显示的精细呢? RRS feed

  • 问题

  • hi,

    我使用PrintDlg 函数创建了打印对话框,点击properties 按钮,弹出 properties 对话框,看起来效果有些粗糙,我想让它的显示效果如notepad一样,怎么才能做到呢?

    2016年10月10日 2:15

答案

  • 想要清晰的效果需要用高分辨了重绘这个对话框

    可以通过子类化的方式实现

    当然你可以可以自己写一个对话框实现相应的功能


    新浪微博http://weibo.com/xianglitian,欢迎围观

    • 已标记为答案 Urgerly 2016年10月11日 2:37
    2016年10月10日 12:16

全部回复

  • Hi Urgerly,

    感谢在MSDN论坛发帖。

    >>我使用PrintDlg 函数创建了打印对话框,点击properties 按钮,弹出 properties 对话框,看起来效果有些粗糙,我想让它的显示效果如notepad一样,怎么才能做到呢?

    在我的Win10, vs2015上显示正常,所以很抱歉没办法重现你的问题。请提供一下PrintDlg的具体代码,以便发现根本原因。

    实际上,Windows Print Property Sheet也没有对字体的属性设置。或者你可以尝试初始化PRINTDLGEX 结构体,并使用PrintDlgEx 显示Print Property Sheet。详情参考以下文档。

    https://msdn.microsoft.com/en-us/library/windows/desktop/ms646966(v=vs.85).aspx

    希望对你有所帮助。

    Best Regards,

    Sera Yu


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.

    2016年10月10日 8:13
  • hi, Sera

    非常感谢你的回复,我这里也是可以正常显示的,但是在告DPI下,比如200%,总觉得效果有些模糊,如我上传的第一张图;

    我想让显示的效果如第二张图一样,是否有什么方法;我试着使用SetProcessDpiAwareness 去设置,也没有达到想要的效果。

    代码如下:

        PRINTDLG pdPrint;
        memset(&pdPrint, 0, sizeof(PRINTDLG));
        pdPrint.lStructSize = sizeof(PRINTDLG);
        pdPrint.hwndOwner = this->GetSafeHwnd();
        pdPrint.Flags = PD_PRINTSETUP;
        pdPrint.hInstance = AfxGetInstanceHandle();
        PrintDlg(&pdPrint);

    2016年10月10日 9:29
  • 想要清晰的效果需要用高分辨了重绘这个对话框

    可以通过子类化的方式实现

    当然你可以可以自己写一个对话框实现相应的功能


    新浪微博http://weibo.com/xianglitian,欢迎围观

    • 已标记为答案 Urgerly 2016年10月11日 2:37
    2016年10月10日 12:16