懒有时候真的会促进世界的发展。
今天练习一个颜色碰撞检测的程序时,实在不想通过编代码的方式来设定窗口的大小(为了和我的位图匹配)。
想通过手动调试对话框资源来改变,然而发现好像我们的mfc中资源的大小度量单位和pixel有一点区别,于是
就百度了一下,还真有讲解的。
对话框资源中的尺寸数值是对话框单位,该大小的单位不是像素而是DLU(dialog logical units),
它是与分辨率无关的坐标单位。它与像素之间的转换关系与当前对话框字体有关。
如果我们想进行手动计算,
那么我们可以通过MapDialogRect函数来进行转换。
函数原型:BOOL MapDialogRect(HWND hDlg,LPRECT IpRect);
其中第一个参数时对话框句柄,第二个参数是Rect结构指针;
这个函数假定Rect结构中的起始坐标作为对话框单位,那么我们将他们转换为像素,还要经过以下算法:
pixelX = MulDiv(dialogX, 对话框水平基本单位, 4)
pixelY = MulDiv(dialogY, 对话框垂直基本单位, 8)
以上是关于vc++中的一些基本内容,我想做的是简单明了的设置我的对话框,找到了方法:
设置对话框的字体为Verdana,然后将其调整为10号字号,设置完成,此时我们的字体相当于等宽字体,
假设我们将想要将我们的对话框调整为800300(像素单位),那么我们就将窗口调整为400150即可。