MFC程序,在改变系统DPI后,控件显示位置混乱的问题
之前在自己机器上做的程序,
在周边几台机子运行都没有问题,
直到发给另外一人,程序界面在他那完全混乱了,后来查资料发现是因为各自系统DPI设置不同的问题,
首先,解释DPI
英文全称为Dot per inch,就是一英寸上显示的点,而这个点并不是意义上的像素。 一般来说,显示器是96DPI,也就是说96像素等于1 inch,但实际上不应该是这样,因为显示器的分辨率可以调整。
96DPI可以理解为用96象素来表示一英寸,而变成120DPI的时候,是用120像素来表示一英寸,而系统的对象(字体,图像)的是用英寸数来表示的,所以120DPI时,图象和字体就变大了。界面上的控件也就相应发生了变化。
在网上找了很多答案,没找到很完美的解决方案,
最后只好采取一种比较笨的方法,
因为在控件调用MoveWindow后控件的位置后不会再随dpi设置改变,所以对于每个控件,都MoveWindow一次,这样就基本可以解决这个问题,虽然复杂了些