然后在CPropertyPage::OnInitDialog()中我对Page页的大小进行固定,字体是OK了,但是对话框会比较高,将按钮遮住.而且界面也不美观.将Page的对话框资源高度降低后,基本和Win7是一样的了,但是这样的话Win7就显示不完全了.
求大神.
具体情况同该链接一样,里面有图说明:http://bbs.csdn.net/topics/390518284
C++技术网解答:
看到CSDN的扫门贴,有点失望。所谓的贴主,只是形式的管理,缺乏意义。感谢你相信我们网站。
下面是你的问题的效果图:
你这个问题,实际在我们以前发布的文章里提及了。不过是处理win7风格和xp风格的混乱问题,先给你说下原理,然后将那篇文章的链接贴出来,让你进一步阅读学习,然后再去解决自己的问题。
Windows中不同的系统版本,如XP、Win7、win8、win10,有着不同的风格,而Windows是一脉相承的系统。在编程方面可以沿用以前的方式,只是换了一些新的API函数而已。不过内部机制有很大的改变,不过对于我们开发应用程序来说,影响不大。在不同版本表现出来的界面特性,也都是可以自己选择的。默认的,我们在不同的系统下写界面程序,是使用对应的系统下的界面渲染机制。
因此,不同的系统版本的界面的渲染机制还是有差别的,也就表现出不同的界面。XP时代的界面和Win7时代的毛玻璃界面以及win8之后的Metro界面,在界面渲染上,机制不会一样的。不过在编程使用界面时,我们可以选择。一般都在exe对应的manifest文件中。而manifest文件既可以外置,也可以内置在exe中。manifest文件中具体的描述控件版本就不再这里赘述,在稍后给的文章链接有详细说明。
当然,除了manifest文件,我们也可以在代码文件中用预编译指令来指定使用的控件版本。同样,马上给出的文章有解释。
请阅读《MFC如何配置使用Win7风格的控件而不是XP风格控件》来了解详细的说明。
当然,这里说的控件版本不仅仅是说明使用的控件,应该说是一套界面风格,所以,你要让程序在win7上适配win7,那么使用win7系统版本的控件界面版本,如果是win8自然选用win8系统控件版本。如果你想程序自动适配,那么就用预编译指令根据系统版本来设置,而不是预先设置manifest文件。
我们不提供具体的实现,给你指一条可行的路,提供方法,也希望你通过这个问题能够学到真正的东西,而不只是解决这个问题。对于预编译指令识别系统版本,网上很多说明的。