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

解决方案 »

  1.   

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

  2.   

    这个和字体有关,这里有篇文章,说得很清楚
    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(这个是从微软的帮助里推算出来的)。