ClientToScreen 和ScreenToClient
ClientToScreen( )是把窗口坐标转换为屏幕坐标
ScreenToClient( )是把屏幕坐标转换为窗口坐标
屏幕坐标是相对于屏幕左上角的,而窗口坐标是相对于窗口用户区左上角的
VC下,有些函数使用窗口坐标,有些使用屏幕坐标,使用时要分清。
一个窗体分为两部分:系统区和客户区
象标题和菜单之类的是系统区,由系统来控制,客户区就是你的地盘喽!!!
Width, Height 是指整体的,ClientWidth, ClientHeight是指客户区的,两者相减就是
系统区的啦!!!
ClientToScreen是把坐标从当前窗体转化成全屏幕的!!!
ScreenToClient是把屏幕坐标转化成相对当前窗体的坐标!!!!
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://www.cnblogs.com/kex1n/archive/2011/10/11/2206895.html
ClientToScreen 和ScreenToClient相关推荐
- MFC ClientToScreen 和 ScreenToClient
ClientToScreen( )是把窗口坐标转换为屏幕坐标 ScreenToClient( )是把屏幕坐标转换为窗口坐标 屏幕坐标是相对于屏幕左上角的,而窗口坐标是相对于窗口用户区左上角的 ...
- ClientToScreen 和ScreenToClient 及绘图
http://blog.csdn.net/ljh0600301217/article/details/8736494 ClientToScreen( )是把窗口坐标转换为屏幕坐标 pWnd->G ...
- ClientToScreen( )和ScreenToClient( )区别
ClientToScreen( )是把窗口坐标转换为屏幕坐标 ScreenToClient( )是把屏幕坐标转换为窗口坐标 屏幕坐标是相对于屏幕左上角的,而窗口坐标是相对于窗口用户区左上角的 VC下, ...
- (转载博文)VC++API速查
窗口处理 2.1 窗口简介 2.2.1 创建普通窗口(CreateWindow.CreateWindowEx) 2.2.2 关闭窗口(CloseWindow) 2.2.3 销毁窗口(DestroyWi ...
- 【2012年终总结】之一 opencv + ds采集摄像头视频 MFC点点滴滴
1.MFC单文档多文档程序 不让MFC来更新菜单 1 在CMainFrame::CMainFrame中添加 2 3 m_bAutoMenuEnable = FALSE; 标题栏图标的更改 1 //cu ...
- 第05章 图形基础
图形设备接口(GDI:Graphics Device Interface)是Windows的子系统,它负责在视讯显示器和打印机上显示图形.正如您所认为的那样,GDI是Windows非常重要的部分.不只 ...
- MFC函数书本速查 API函数大全
基础类 CObject AssertValid p3 Dump p3 IsSerializable p4 Serializable p4 GetRuntimeClass p4 IsKindOf p5 ...
- 循序渐进全球化 镜像识别
循序渐进全球化 镜像识别 本页内容 概述和说明 示例 Win32 中的镜像 镜像 .NET Framework 网页中的镜像 概述和说明 对 于从右向左 (RTL) 的语言,不但文本对齐和文本阅读顺序 ...
- MFC利用定时器实现图片移动
(1)在窗口中放入Picture Static控件,并设置控件图片属性为Bitmap,如图所示 (2)插入资源图片 选择Resource视图,插入需要的加载的图片资源. (3)设置需要显示的图片 HB ...
- QT源码拾贝6-11(qwindowswindow)
目录 6 窗口激活相关的函数QWindowsForeignWindow::setParent 7 QDebug运算符<<重载 8 vscode的windows的变量提示很有意思 9 ...
最新文章
- 2017高级软件工程第1次作业
- Apache Dubbo 被曝出“高危”远程代码执行漏洞
- open、read、write、文件类型
- python pp模块_python常用模块
- Day13-日历模块
- mysql表空间界限_MySQL5.7 import表结构报错超出表空间界限
- weakhashmap_Java WeakHashMap keySet()方法与示例
- 【Spark】Spark Streaming的back pressure
- Windows注册表相关示例(重装Chrome、思迅条码软件、清除远程痕迹等)
- logrotate日志轮转
- java js对象转字符串数组_js 转json格式的字符串为对象或数组(前后台)的方法
- Bootstrap 后台模板-AdminLTE
- Mac OS X下的截屏功能和使用技巧
- linux dbx 进程,dbx 命令命令详解
- Linux下如何安装jdk
- wd移动硬盘不能识别_wd移动硬盘xp无法识别 移动硬盘无法识别的解决方法
- 数据库脏读、不可重复读、幻读以及对应的隔离级别
- 智慧景区光传输解决方案
- 解决Mac上plt画图中文无法显示的问题
- 洛谷 P1008三连击 C语言
热门文章
- OverFeat(译)
- 机器学习中的 Shapley 值怎么理解?
- 南邮 | 离散数学实验一:利用真值表法求取主析取范式以及主合取范式的实现
- 一年Java的阿里电话面试全纪录
- 计算机鼠标知识,计算机基础知识:鼠标的使用
- 【课程设计】企业职工工资管理系统 C语言版
- 基于STM32 HAL库硬件SPI的ST7789驱动(TFT-LCD 240*320)
- 金山文字和Word中的格式刷更顺手(转)
- 计算机中丢失d3dx11 43.dll,帮您设置win10系统运行软件提示计算机丢失d3dx11_43.dll的图文办法...
- 8000计算机论文范文,计算机毕业论文_计算机论文范文8000字_毕业论文8000字范例...