ClientToScreen 和ScreenToClient用法

ClientToScreen 和ScreenToClient用法ClientToScre 是把窗口坐标转换为屏幕坐标 ScreenToClie 是把屏幕坐标转换为窗口坐标屏幕坐标是相对于屏幕左上角的 而窗口坐标是相对于窗口用户区左上角的 VC 下 有些函数使用窗口坐标 有些使用屏幕坐标 使用时要分清 一个窗体分为两部分 系统区和客户区象标题和菜单之类的是系统区 由系统来控制 客户区就是你的地盘喽 Width Heig

bool m_bIsLButtonDawn =false; void CDrawDlg::OnMouseMove(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CWnd *pwnd=GetDlgItem(IDC_EDIT1); CDC *pdc=pwnd->GetDC(); CRect rect; this->ClientToScreen(&point); pwnd->ScreenToClient(&point); pwnd->GetClientRect(&rect); // HCURSOR hcur=::LoadCursorFromFile("pen.cur"); // SetClassLong(GetSafeHwnd(),GCL_HCURSOR,(LONG)hcur); // CPen pen(PS_INSIDEFRAME,-1,RGB(255,255,255)); // CPen* olePen=pdc->SelectObject(&pen); if(rect.PtInRect(point) && m_bIsLButtonDawn ) { pdc->DPtoLP(&m_fp); pdc->MoveTo(m_fp); pdc->DPtoLP(&point); pdc->LineTo(point); } m_fp=point; // pdc->SelectObject(olePen); ReleaseDC(pdc); CDialog::OnMouseMove(nFlags, point); } void CDrawDlg::OnLButtonUp(UINT nFlags, CPoint point) { m_bIsLButtonDawn =false; // TODO: Add your message handler code here and/or call default ///* CWnd *pwnd=GetDlgItem(IDC_EDIT1); CDC *pdc=pwnd->GetDC(); CRect rect; this->ClientToScreen(&point); pwnd->ScreenToClient(&point); pwnd->GetClientRect(&rect); if(rect.PtInRect(point)) { pdc->DPtoLP(&m_fp); pdc->MoveTo(m_fp); pdc->DPtoLP(&point); pdc->LineTo(point); } ReleaseDC(pdc);*/ CDialog::OnLButtonUp(nFlags, point); } void CDrawDlg::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CWnd *pwnd=GetDlgItem(IDC_EDIT1); CDC *pDC=pwnd->GetDC(); CRect rect; this->ClientToScreen(&point); pwnd->ScreenToClient(&point); pwnd->GetClientRect(&rect); if(rect.PtInRect(point)) { m_fp.x=point.x; m_fp.y=point.y; } ReleaseDC(pDC); m_bIsLButtonDawn =true; CDialog::OnLButtonDown(nFlags, point); } 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225884.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午8:19
下一篇 2026年3月17日 上午8:20


相关推荐

  • Canny边缘检测算法及实现

    Canny边缘检测算法及实现提取图片的边缘信息是底层数字图像处理的基本任务之一

    2026年3月18日
    1
  • phpstorm2021 激活码破解方法[通俗易懂]

    phpstorm2021 激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    79
  • js全局替换回车换行符

    js全局替换回车换行符踩了个坑,记录一下。全局换行符是这样用php加上的因为显示的时候需要换行显示但是保存的时候不能把回车换行符保存进数据库呀,所以在保存之前要再次把回车换行符替换没了,发现用js替换\r\n无效,思考了一下,可能是html显示是自动过滤了\r,而以\n来显示吧。于是把替换代码改成:varemialStr=$(“#mail”).val();emialStr=emialStr.r

    2022年5月23日
    134
  • 使用pycharm画图不显示

    使用pycharm画图不显示项目场景 提示 这里简述项目相关背景 例如 项目场景 示例 通过蓝牙芯片 HC 05 与手机 APP 通信 每隔 5s 传输一批传感器数据 不是很大 问题描述 提示 这里描述项目中遇到的问题 例如 数据传输过程中数据不时出现丢失的情况 偶尔会丢失一部分数据 APP 中接收数据代码 Overridepubl bytes mmInStream read buffer mHandler obta

    2026年3月27日
    2
  • 惊!我的 Redis 被挖矿脚本注入了

    惊!我的 Redis 被挖矿脚本注入了发现周五在个人服务器上新部署了redis做测试加了个几个key,过了个快乐周末,周一回来一看原key都没了,估计是用了flushall,而且多了这四个key。 k v backup1 */2****rootcd1-fsSLhttp://194.87.139.103/cleanfda/init.sh|sh backup2 */3****rootwget-q-

    2022年7月14日
    25
  • 嵌套是什么意思_循环结构能不能嵌套

    嵌套是什么意思_循环结构能不能嵌套思路:在嵌套使用repeater控件时,内部的repeater控件就要动态绑定数据源。就下面的代码示例来说,外部的repeater控件是rptTr,内部的repeater控件是rptTd。需要在rptTr的 onitemdatabound的处理函数中动态绑定数据源。前台:

    2022年10月9日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号