screentoclient(GetClientRect,GetWindowRect,ClientToScreen,ScreenToClient这四个函数如何理解)
本文目录
GetClientRect,GetWindowRect,ClientToScreen,ScreenToClient这四个函数如何理解
GetClientRect的CRect是相对它的窗口的客户区的原点而言的,即它的左上角坐标总是(0,0),大小总是客户区的长宽。GetWindowRect得到的CRect则是相对于屏幕坐标而言的,它的左上角坐标就是窗口在屏幕上的左上角坐标,它的大小就是整个窗口的大小。 ClientToScreen,可以把一个CPoint对象或CRect对象的坐标从客户区坐标系(以客户区左上角为原点)变换为屏幕坐标系(以屏幕左上角为原点)。 如: // 把对话框的大小变成客户区的大小 void CAboutDlg::OnButton1() { CRect myRect; GetClientRect(&myRect);//取得客户区的大小 ClientToScreen(myRect);//转换为屏幕坐标 MoveWindow(myRect.left, myRect.top, myRect.Width(), myRect.Height());//MoveWindow使用的是屏幕坐标 } ScreenToClient,则可以把一个CPoint对象或CRect对象的坐标从屏幕坐标系变换为客户区坐标系。 例如: CPoint pos( ::GetMessagePos() ); //::GetMessagePos() 得到发生事件时鼠标的屏幕坐标 ScreenToClient(&pos);//把它转换为客户区坐标以便随后在绘图时使用 ... 使用以下代码,可以把对话框移到刚好覆盖的地方: CRect rcTab; // 整个Tab CRect rcItem; // Tab上方的按钮 // 取得并计算要移动的矩形框 m_tab1.GetWindowRect(&rcTab); // 屏幕坐标 ScreenToClient(rcTab); // 化成父窗口的客户区坐标 m_tab1.GetItemRect(0, &rcItem); // 取得Tab上方按钮的大小 rcTab.DeflateRect(0,rcItem.bottom+1,0,0); // 缩小Tab的矩形 // 把对话框移动到这个矩形框上 m_Page1-》MoveWindow(rcTab); // 相对于父窗口的客户区移动 补充: 关于这些函数的最权威、最详细的描述,请参看MSDN。 GetClientRect(),GetWindowRect()这两个函数都是CWnd类的成员函数,或称为方法(Method)。所以调用它们得到的矩形都是属于调用它们的那个CWnd对象的窗口的,如m_tab1.GetWindowRect(&rcTab); 得到的矩形rcTab就是Tab控件的窗口大小和位置(屏幕坐标系)。“它的大小就是整个窗口的大小“这句话中说的窗口就是发出GetWindowRect()调用的这个CWnd窗口。
易语言中screentoclient 怎么用 x和y要怎么写
.版本 2
.DLL命令 ScreenToClient, 整数型, , “ScreenToClient“, , 该函数应用hWnd参数标识的窗口和POINT结构给定的屏幕坐标来计算用户坐标,然后以用户坐标来替代屏幕坐,新坐标是相对于指定窗口的领域的左上角。
.参数 hwnd, 整数型
.参数 lpPoint, POINT
.版本 2
.数据类型 POINT
.成员 x, 整数型
.成员 y, 整数型
.版本 2
.子程序 _时钟2_周期事件
.局部变量 点, POINT
_启动窗口.标题 = 到文本 (取鼠标水平位置 ()) + “.” + 到文本 (取鼠标垂直位置 ())
点.x = 取鼠标水平位置 ()
点.y = 取鼠标垂直位置 ()
标签1.标题 = 到文本 (ScreenToClient (_启动窗口.取窗口句柄 (), 点))
更多文章:
迅捷斥候出装(迅捷斥候 最好的出装!经验只谈不要给我复制官方的)
2023年4月17日 06:20
我已经知道如何架设诛仙单机版了…就那个422的改成局域网也会现在想把它弄成私服和朋友一起玩,不盈利?传奇世界最变态的装备是什么
2024年9月16日 15:00
beatmaker(filmmakers和producer的区别)
2023年12月2日 10:20
支付宝密码被锁定怎么办(支付宝的支付密码忘记了,被锁了怎么办)
2024年6月6日 03:16
中国电信网速测试软件在哪里下?中国电信的网速测试网站网址是多少
2023年6月3日 13:00
陕西一码通外地人怎么注册?起底西安一码通:仅花3天研发,是什么人研发了这个一码通
2024年6月5日 20:47
金融帝国2联机(玩过《金融帝国2金融帝国实验室>的大神请进)
2024年9月2日 14:10
传奇归来什么职业好?传奇归来怎么在盟重地图是黑的,我下的是最新版本为0.0.5.10,怎么还是黑的啊
2023年4月14日 01:20
dnftp点(DNF为什么有的人多了2点TP技能点请问是从哪里来的)
2024年1月22日 18:20