clienttoscreen(GetClientRect,GetWindowRect,ClientToScreen,ScreenToClient这四个函数如何理解)

本文目录
- GetClientRect,GetWindowRect,ClientToScreen,ScreenToClient这四个函数如何理解
- 关于ClientToScreen
- VC++关于ClientToScreen
- clienttoscreen 参数怎么变成lppoint
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窗口。
关于ClientToScreen
void Clip()
{
HWND hwnd = ::FindWindow(“Warcraft III“,“Warcraft III“);
if(hwnd){
RECT r;
::GetClientRect(hwnd,&r); POINT pt;
pt.x = 0;
pt.y = 0; ::ClientToScreen(hwnd,&pt); r.top = pt.y;
r.left = pt.x;
r.right = r.right + pt.x;
r.bottom = r.bottom + pt.y; ::ClipCursor(&r);
}
}
VC++关于ClientToScreen
我认真看了一下
friendbutton.GetClientRect(&rectbutton1); 现在rect坐标系是friendbutton本身(left=0,top=0)
friendbutton.ClientToScreen(&rectbutton1); 现在坐标系是屏幕
ScreenToClient(&rectbutton1); 现在坐标系是窗口(隐藏一个this)
也就是最终目的是取得this窗口坐标系的坐标
clienttoscreen 参数怎么变成lppoint
姹 2
.DLL命令 ClientToScreen, 整数型, , ;ClientToScreen;, , 非零表示成功,零表示失败
.参数 窗口句柄, 整数型, , hwnd,要取出区域坐标的窗口句柄
.参数 位置变量, 坐标型, , lpPoint,返回的坐标点
返回的是坐标型
坐标.x就是窗口的顶点x
坐标.y就是窗口的顶点y
例程:
.版本 2
坐标.x = 0
坐标.y = 0
ClientToScreen (窗口句柄, 坐标)

更多文章:
dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)
2026年10月11日 08:50
易语言网页api接口怎么调用(易语言,怎么读取网页json的api)
2026年10月11日 08:00
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40
another time(another time和other time的区别)
2026年10月11日 05:00






