对话框单位用于屏幕坐标

Coo*_*ker 0 c++ windows dialog window coordinates

有人可以解释一下如何将对话框单位转换为屏幕坐标值吗?我看到有MapDialogRect函数,但它转换RECT,我想将x,y和cx,cy值转换为屏幕坐标值,我真的不明白如何实现这一点.

提前致谢.

Ray*_*hen 6

如果您已经有一个窗口句柄,那么只需使用该MapDialogRect功能.正如其他人所说,MapDialogRect需要a RECT,所以如果你没有RECT,你可以创建一个.

RECT rc;
rc.left = x;
rc.top = y;
rc.right = x + cx;
rc.bottom = y + cy;
MapDialogRect(hdlg, &rc);
Run Code Online (Sandbox Code Playgroud)

如果您的问题是您首先没有对话框句柄,那么该MapDialogRect函数的文档将告诉您如何执行计算:确定对话框的平均字符维度(文档调用的baseunitX和baseunitY)然后将其插入公式中.

请注意,这会计算对话框的客户端矩形.您仍然需要添加非客户端空间.目前尚不清楚你要做什么,所以我不知道添加非客户空间是否合适.