如何获得vc控件的屏幕坐标
来源:互联网 发布:上海软件定制 编辑:程序博客网 时间:2024/04/28 22:54
//本文来自http://wanyozxy.blog.hexun.com/1676441_d.html, 在此感谢原文作者(wanyozxy's Blog的主人)
VC6的资源文件中会保存dialog中控件的坐标,格式是x,y,cx,cy。其中x,y是控件左上角的坐标,cx是控件的width,cy是控件的height。如下例是一个进度条控件在rc文件中的定义:
CONTROL Progress1",IDC_PROGRESS1,"msctls_progress32",PBS_SMOOTH | WS_BORDER,137,68,80,14
但这个坐标并不是真正的pixel unit,而是dialog unit。我在实际编程时为了能在进度条中显示数字,所以就重载了进度条类,替换原来的进度条控件。在调用新的派生类的Create()方法时,必须给出控件在dialog中的相对坐标。我直接使用了资源文件中原来进度条控件的坐标,结果发现误差很大。通过查询MSDN才搞清楚,原来资源文件中的坐标并不是pixel unit, 而是dialog unit。要想实现从dialog unit到pixel unit的转换可以调用api MapDialogRect() ,MFC已经封装了这个函数。
下面的代码根据rc文件中定义的控件坐标,获得该控件在dialog client area中以像素为单位的坐标。注意这个坐标是dialog内的相对坐标,不是整个screen内的绝对坐标。
RECT progressbar_rect;
TCHAR szBuf[256];
progressbar_rect.left = 137; // dialog unit
progressbar_rect.top = 68; // dialog unit
progressbar_rect.right = progressbar_rect.left + 80; // dialog unit
progressbar_rect.bottom = progressbar_rect.top + 14; // dialog unit
MapDialogRect(&progressbar_rect);
// display new pixel unit
_stprintf(szBuf, "Progress Bar (%d,%d) - (%d,%d)",
progressbar_rect.left, progressbar_rect.top,
progressbar_rect.right, progressbar_rect.bottom);
MessageBox(szBuf);
- 如何获得vc控件的屏幕坐标
- 获得控件的屏幕坐标
- VC控件坐标与屏幕坐标
- 如何得到一个控件相对于屏幕左上角的坐标
- Silverlight如何获取控件的屏幕坐标位置
- VC 如何获取对话框中控件的坐标
- VC如何获取对话框中控件的坐标
- VC如何获取对话框中控件的坐标
- VC如何获取对话框中控件的坐标
- VC.net中如何获得屏幕尺寸
- android获得控件在屏幕中的绝对坐标
- android获得控件在屏幕中的绝对坐标
- Android获得控件在屏幕中的绝对坐标
- android获得控件在屏幕中的绝对坐标
- android获得控件在屏幕中的绝对坐标
- android获得控件在屏幕中的绝对坐标
- android获得控件在屏幕中的绝对坐标
- android获得控件在屏幕中的绝对坐标
- adsa
- 在jstl中遇见的错误!!!!!!
- struts2乱码解决
- Java重载、覆盖、多态、隐藏的区别与联系
- SQL 日志清除技巧
- 如何获得vc控件的屏幕坐标
- 查询语句select的解析顺序
- PLMN字符的比较
- My beginning in embeded system--ARM7
- .NET中Const和ReadOnly的区别与相同点
- oracle10g的删除
- C# GridView 控件绑定下拉列表框及给下拉列表框设定默认值
- 成功人士的七个良好习惯
- 关于图表中的日期坐标问题