关于获得对话框中子控件相对该对话框客户区的位置
发布日期:2022-01-31 02:37:32
浏览次数:31
分类:技术文章
本文共 683 字,大约阅读时间需要 2 分钟。
CRect rc; CWnd* pwnd = GetDlgItem(IDC_PIC); pwnd->GetClientRect(&rc); pwnd->MapWindowPoints(this,&rc);前段时间,要实现鼠标点选指定点坐标值功能,由于MFC中鼠标事件(滑动或者单击)中,返回的point的值,其值的坐标原点是响应该事件的窗口的客户区(即不包括标题栏,也就是该对话框窗口的名字(不是ID号))
所以,子控件的位置最好也是基于同样原点。
有两种实现方式:
CRect rc; CWnd* pwnd = GetDlgItem(IDC_PIC); pwnd->GetClientRect(&rc); pwnd->MapWindowPoints(this,&rc);上述代码中,IDC_PIC是子控件的ID号,this表示转换到父窗口的坐标系(具体点就是以这个父窗口的客户区左上角为原点的坐标系)
注意这里一定要用
pwnd->GetClientRect(&rc);
方法2:
CRect rc; CWnd* pwnd = GetDlgItem(IDC_PIC); pwnd->GetWindowRect(&rc); ScreenToClient(&rc);//或者this->ScreenToClient(&rc) 其实,this表示就是当前的父窗口
ScreenToClient(&rc)表示将rc由电脑屏幕坐标系转换到窗口坐标系(具体点就是以窗口的客户区左上角为原点的坐标系)注意:这里一定要用
pwnd->GetWindowRect(&rc);
转载地址:https://blog.csdn.net/LJH0600301217/article/details/8746641 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月20日 09时35分39秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ABAP实现的在Linux里操作shell的报表
2019-04-27
SAP CRM IPM行业解决方案里如何创建IP product
2019-04-27
SAP CRM IPM行业解决方案里如何生成新的IP product
2019-04-27
如何用ABAP代码触发SAP CRM partner determination
2019-04-27
SAP CRM IPM行业解决方案 - 如何删除IP Right Scope
2019-04-27
ABAP内表两种DELETE方式的性能比较
2019-04-27
ABAP关键字组合LOOP AT GROUP BY的用法
2019-04-27
一段ABAP作图程序,可以画一只可爱的哆啦A梦出来
2019-04-27
使用ABAP代码获得底层HANA数据库视图的元数据Metadata
2019-04-27
使用ABAP操作XML DOM时,如何利用filter功能
2019-04-27
使用ABAP内表作为数据结构实现非波拉契数列(fibonacci)的生成
2019-04-27
用ABAP代码调用Netweaver里的where used list功能
2019-04-27
显示所有SAP CRM用户保存的query信息
2019-04-27
如何用代码的方式动态创建ABAP subroutine
2019-04-27
各种类型的ABAP表键table key测试
2019-04-27
显示ABAP Netweaver上登录的所有用户信息
2019-04-27
使用ABAP代码下载有道云笔记的内容
2019-04-27
通过一个简单的ABAP报表窥探ABAP内存分配和管理机制
2019-04-27