博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
控件移动
阅读量:6401 次
发布时间:2019-06-23

本文共 1455 字,大约阅读时间需要 4 分钟。

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窗口。

控件动态移动事例:

     int nOffY = 100;

     GetDlgItem(CtrlID)->GetWindowRect(rMove);

     rMove.top += nOffY;
     rMove.bottom += nOffY;
     ScreenToClient(rMove);
     GetDlgItem(CtrlID)->MoveWindow(rMove);
     GetDlgItem(CtrlID)->Invalidate();

转载于:https://www.cnblogs.com/cwbo-win/articles/3408346.html

你可能感兴趣的文章
ASA 5510 V821 EASY ×××配置
查看>>
ubuntu server 更换源
查看>>
SQL SERVER 2008安装
查看>>
EXT中的gridpanel自适应窗口的方法
查看>>
【转】CSRF 攻击的应对之道
查看>>
unary operator expected
查看>>
IPC之共享内存
查看>>
新加坡之旅
查看>>
IBM X3650 M3服务器上RAID配置实战
查看>>
Mysql DBA 高级运维学习之路-索引知识及创建索引的多种方法实战
查看>>
go语言与java nio通信,解析命令调用上下文拉起ffmpeg,并引入livego做的简单流媒体服务器...
查看>>
JavaScript面向对象轻松入门之多态(demo by ES5、ES6、TypeScript)
查看>>
mysql 存储过程创建
查看>>
【数据结构】线性表(一):顺序列表
查看>>
利用Mallet工具自动挖掘文本Topic
查看>>
Windows下oracle打补丁步骤
查看>>
Python教程(一)Python简介
查看>>
asp.net forms认证
查看>>
一帧图像的两种显示器建模方式
查看>>
Hadoop 公平调度器算法调度解析
查看>>