对话框使用对话框单位(Dialog Unit)。横向的一个对话框单位等于对话框基本单位(Dialog Base Unit)的1/4宽,纵向的一个对话框单位等于对话框基本单位的1/8。横向的对话框基本单位等于系统字体的平均宽度,纵向的对话框基本单位等于系统字体的平均高度。
说白了就是:
pixelX = (dialogunitX * baseunitX) / 4  
pixelY = (dialogunitY * baseunitY) / 8 
或:
dialogunitX = (pixelX * 4) / baseunitX  
dialogunitY = (pixelY * 8) / baseunitY
其中的baseunit可以通过GetDialogBaseUnits获得。
还可以使用函数MapDialogRect将dialogunit转化为pixel。
也就是说,对话框实际的像素大小将和字体有关。

解决方案 »

  1.   

    azuo_lee ,你好
    因为我是菜鸟,能不能再详细一点,需要修改哪里才能指定对话框大小用象素为单位
      

  2.   

    其实说起来,在对话框设计的时候是无法知道像素的。因为对话框模板中使用的就是对话框单位,而不是像素。虽然在模板中可以指定一个字体,但这只是个期望的逻辑字体,真正在对话框创建时会采用的真实字体只有运行时才可能得到,设计时无法知道。换句话说,假设你在对话框中指定的字体,在一台机器上安装了,而另一台机器没有装,那么对话框在两台机器上显示出来的实际大小将是不一样的。
    尽管如此,你还是可以用这个字体根据上面的公式来大概估算对话框的大小,但不能保证都很精确。
    最后说明一点,即使VC的对话框编辑器显示的对话框大小也不见得与对话框实际运行时的大小一致——虽然它已经能够根据字体调整大小。你可以试着将对话框字体设为MS Sans Serif,8号尺寸,就可以看到这一点。