读书人

获得窗口相对于屏幕柜型的有关问题

发布时间: 2012-02-04 15:43:09 作者: rapoo

获得窗口相对于屏幕柜型的问题
GetClientRect(m_hWnd,&m_rcWin);

ClientToScreen(m_hWnd,(LPPOINT)&m_rcWin);
//(LPPOINT)&m_rcWin把RECT变成什么样子了?
ClientToScreen(m_hWnd,(LPPOINT)&m_rcWin+1);
//为什么要+1?RECT的结构是什么样的?

不明白为什么上面两句就能把窗口此时相对于屏幕的柜型值赋给m_rcWin?

---------------------------
GetClientRect(m_hWnd,&m_rcWin);
POINT pt;
ClientToScreen(m_hWnd,&pt);
OffsetRect(m_rcWin,pt.x,pt.y);
和上面的那几句效果一样吗?

[解决办法]
可以就可以,不可以就不可以,一用便知,!
GetClientRect(m_hWnd,&m_rcWin);
POINT pt={0,0};
ClientToScreen(m_hWnd,&pt);
OffsetRect(m_rcWin,pt.x,pt.y);

这部分代码能得到正确结果!

BOOL OffsetRect(LPRECT lprc, int dx, int dy);
这个函数的作用将 lprc所指向的矩形移动(dx,dy)的距

当左上角的坐标为(0,0)时,这就相当于移动到点(dx,dy)了!
这也是我强调的m_rcWin.left和m_rcWin.top都是为0。

读书人网 >C++

热点推荐