首 页 » 程序开发 » 将对话框单位转换到屏幕像素

将对话框单位转换到屏幕像素

[ 2010-05-02 21:59 | 浏览次数: 1,442次 | 0条评论 ]

搞了一天这个,现在也不知道为什么要搞清楚这个了。

先写下来,如有人也被这个烦恼,可以看看我这个方案

问题:

我想知道上面的按钮在对话框上的坐标对应真正显示到屏幕上的坐标是多少。

网上的方案是

left=(left1*baseunitX)/4;right=(right1*baseunitX)/4

top=(top1* baseunitY)/ 8; bottom=(bottom1* baseunitY)/ 8

left,top…为像素坐标,可以使用movewindows定位,left1,top1….为 对话框坐标,其是虚拟的,真正的坐标随对话框的字体变化而变化。

baseunitX,baseunitY基本单位为模扳给定的字体中的字符的平均宽度和高度,单位为像素。

基于以上认识,我开始将baseunitX,baseunitY设为字体的平均高度和宽度,但和VC弹出来的对话框总有些差别。

查了很久,终于发现一篇关于windows ce开发文章里提到了这个方法

RECT rc;
rc.top=0;
rc.left=0;
rc.right=4;
rc.bottom=8;
MapDialogRect(GetWnd(),&rc);
m_baseunitX=rc.right;
m_baseunitY=rc.bottom;

这个方法得到的就和VC弹出来的一模一样了。

您可以任意转载本文,但转载时请勿删除作者信息。
作者:hgyxbll,原文链接:http://shashanzhao.com/archives/272.html
上一篇: | 下一篇:

沙发为空,还不快枪?[点此发言]

目前还没有任何评论.