我想使用c++代码可以设置如图中红色框的选项,但是我在CPrintDialog、 CPageSetupDialog都没找到相关可以设置的地方,百度和谷歌也没找到相关方法,所以特地来c++ 技术网请教!

C++技术网会员解答:

    为了解答这个问题,找了一晚上的MSDN,然后整理清楚了解答这个问题的答案了。如果要想实现各种高级的功能,你是不能仅仅依赖CPrintDialog、 CPageSetupDialog给你提供操作的,你需要直接使用打印机的API函数。

    打印机的所有操作,包括基本的和高级的,全部列出来,并给了中文和英文的函数功能,如果你要全面操作打印机就靠他们了。请阅读文章《打印机操作API大全,有了这些打印机全搞定》。这是最全面的API文章了。

    但是仅仅有这个API列表,你还需要花一些时间去了解,所以为了让你更快上手,这里就多说几句。

    图中你看到的是打印机的属性列表,其中框住的几个不过就是众多高级属性中的几个而已。前面提到的API里是可以搞定的。当然,你需要花一些时间好好学习一番,学习的资料就是MSDN。在这个快速开发的年代,打印机都已经组件化的太厉害了,一般人都不会去写打印机程序了。而且默认的打印对话框就够了,很少需要自己写程序定制,除非是专业的开发,所以这方面的文章也就少了。也就直接学习MSDN比较好。

    而图中众多的属性直接对应的就是文档属性,含打印机属性。在函数DocumentProperties中的第四个参数体现,这个参数就是指向DEVMODE结构体,第四个参数用于接收属性,而第五个参数就是去设置属性了。所以这两个参数都是一个指向DEVMODE结构体的指针了。那么DEVMODE结构体就是图中的内在映射了。结构体中含有各种状态位,然后各种API会操作一些状态。

    有了API函数列表和DEVMODE结构体的了解,完胜打印机程序。当然这个一了解可要花不少时间哦。你想呀,要想牛逼,不花时间和精力怎么行呢?

    好了,这里只能给你指个方向了。只要你愿意花时间,很快你就是打印机专家了。