CRect Rect1;
GetWindowRect(&Rect1); //获得主窗口的位置
int nCaption = ::GetSystemMetrics(SM_CYCAPTION);
int nXEdge = ::GetSystemMetrics(SM_CXEDGE);
int nYEdge = ::GetSystemMetrics(SM_CYEDGE);
CRect Rect2;
GetDlgItem(IDC_POS)->GetWindowRect(&Rect2); //获得框架的位置
Rect1.top=Rect1.top+nCaption+nYEdge; //相对坐标
Rect1.left=Rect1.left+2*nXEdge;
//计算机位置
rectPage.top=Rect2.top-Rect1.top;
rectPage.left=Rect2.left-Rect1.left;
rectPage.bottom=Rect2.bottom-Rect1.top;
rectPage.right=Rect2.right-Rect1.left;rectPage为需要显示控件的窗口
我的问题是:
Rect1.left=Rect1.left+2*nXEdge,这里为什么要乘2?
rectPage的位置为什么是用Rect2来减Rect1?这是什么意思?
GetWindowRect(&Rect1); //获得主窗口的位置
int nCaption = ::GetSystemMetrics(SM_CYCAPTION);
int nXEdge = ::GetSystemMetrics(SM_CXEDGE);
int nYEdge = ::GetSystemMetrics(SM_CYEDGE);
CRect Rect2;
GetDlgItem(IDC_POS)->GetWindowRect(&Rect2); //获得框架的位置
Rect1.top=Rect1.top+nCaption+nYEdge; //相对坐标
Rect1.left=Rect1.left+2*nXEdge;
//计算机位置
rectPage.top=Rect2.top-Rect1.top;
rectPage.left=Rect2.left-Rect1.left;
rectPage.bottom=Rect2.bottom-Rect1.top;
rectPage.right=Rect2.right-Rect1.left;rectPage为需要显示控件的窗口
我的问题是:
Rect1.left=Rect1.left+2*nXEdge,这里为什么要乘2?
rectPage的位置为什么是用Rect2来减Rect1?这是什么意思?
解决方案 »
- VC++ MSComm以及多线程问题
- 用skinmagic对应的tab键会闪,而且菜单栏被覆盖,郁闷
- 调用对话框,对话框中有内容显示运行时老是报错WHY代码如下
- 创建工程失败,提示“'length'为空或不是对象”
- 怎么查看网络是否连接上?
- 高手请进!一个半年也没解决的问题?解决后另开帖给200分
- 近段时间常被人问起在技术上追求的目标是什么,想想还真没考虑过,羞愧,散分
- 今年南京地区的高级程序员考试什么时候报名呀?在哪里报名?报名时需要注意什么?
- 用MFC做Activex控件,如何实现里头的Picture Control跟随控件的大小而改变?
- 请问可否写一个脚本,登录到Win2000不用每次都输入UserName和Password??
- mfc中怎么检查ie版本,若版本低启动mfc文档窗口时就弹出对话框并退出?
- 请问NTP是怎么实现的,就是在局域网内保证所有机器的时间是一致的
http://www.vckbase.com/document/viewdoc/?id=330
GetWindowRect获得的是屏幕坐标,设置子窗口位置需要相对坐标,因此需要用Rect2来减Rect1。
Rect1.left=Rect1.left+2*nXEdge,这样的效果就是rectPage的窗口宽度比IDC_POS的窗口多了一个窗口边框的尺寸。
1. Rect1.left=Rect1.left+2*nXEdge
之所以多加一个nXEdge是因为要去掉page父窗口本身的边框,page父窗口是对话框的一个控件Rect1.top=Rect1.top+nCaption+nYEdge也是一个道理
最后得到的Rect1是page父窗口的client区域的屏幕坐标
2.IDC_POS是用来做page定位的
rectPage是IDC_POS在page父窗口的client坐标。
CRect Rect2;
GetDlgItem(IDC_POS)->GetWindowRect(&Rect2); //获得框架的位置CWnd* pParent = m_page->GetParent(); //m_page是要定位的控件
pParnet->ScreenToClient(&Rect2);rectPage = Rect2;