对话框面板中的大小和实际不一样?

时间:2023-01-19 19:23:55
    本人在面板(即rc中)设置的对话框大小是288*240,但在程序中GetClientRect得出的结果却是432*360,长和宽都各自增加了0.5倍,百思不得其解,请问是什么原因导致出现这样的差异呢?

6 个解决方案

#1


肯定不一样的。具体原因网上搜一下就知道了。

#2


RC里的那个单位是逻辑单位,是跟字体大小相关的,不是实际像素单位。

#3


这个大小,我也弄得有点糊涂,好像还是需要好好研究一下才好

#4


对话框单位是字体无关单位,窗口是受字体宽度影响的,需要用MapDialogRect转换成屏幕单位(像素)

#5


这个和字体有关,这里有篇文章,说得很清楚
http://support.microsoft.com/default.aspx?scid=kb;en-us;145994

对话框逻辑单位(dialog logical units =dlu)是与分辨率无关的坐标单位,它对于对话框中控制部件的布置很有作用。从dlu到象素有一个映射,此映射是基于对话框所用的字体的。dlu的一个x方向的坐标单位相当于对话框中所用字体的平均宽度的1/4,y方向的坐标单位相当于对话框对话框所用字体高度的1/8。注意字体平均宽度的计算并非是所有字符的平均,而是字母a…z(包括大写)的宽度的平均,换句话说,它等于字符串”A…Za…z”的长度除以52(这个是从微软的帮助里推算出来的)。

#6


wefrwqarfwaerf

#1


肯定不一样的。具体原因网上搜一下就知道了。

#2


RC里的那个单位是逻辑单位,是跟字体大小相关的,不是实际像素单位。

#3


这个大小,我也弄得有点糊涂,好像还是需要好好研究一下才好

#4


对话框单位是字体无关单位,窗口是受字体宽度影响的,需要用MapDialogRect转换成屏幕单位(像素)

#5


这个和字体有关,这里有篇文章,说得很清楚
http://support.microsoft.com/default.aspx?scid=kb;en-us;145994

对话框逻辑单位(dialog logical units =dlu)是与分辨率无关的坐标单位,它对于对话框中控制部件的布置很有作用。从dlu到象素有一个映射,此映射是基于对话框所用的字体的。dlu的一个x方向的坐标单位相当于对话框中所用字体的平均宽度的1/4,y方向的坐标单位相当于对话框对话框所用字体高度的1/8。注意字体平均宽度的计算并非是所有字符的平均,而是字母a…z(包括大写)的宽度的平均,换句话说,它等于字符串”A…Za…z”的长度除以52(这个是从微软的帮助里推算出来的)。

#6


wefrwqarfwaerf