读书人

父窗口移动时子窗口也随着移动?解决思

发布时间: 2012-02-01 16:58:19 作者: rapoo

父窗口移动时子窗口也随着移动?
父窗口与子窗口都是popup,我想令子窗口跟随父窗口一起移动,应该在wm_move中如何响应SetWindowPos函数?要不要先调用SetParent?

[解决办法]
OnMove里面加入以下代码试试(设子窗口的指针为CWnd *pChild):

if (pChild-> GetSafeHwnd())
{
static CPoint s_Pt(-1,-1);
if ((s_Pt.x == -1) && (s_Pt.y == -1))
{
CRect tRct;
pChild-> GetWindowRect(&tRct);
ScreenToClient(&tRct);
s_Pt = tRct.TopLeft();
}
else
{
CRect tRct;
GetWindowRect(&tRct);
pChild-> SetWindowPos(NULL,tRct.left+s_Pt.x,tRct.top+s_Pt.y,0,0,SWP_NOZORDER|SWP_NOSIZE);
}
}

差不多这个意思,s_Pt也就是子窗口相对父窗口的坐标你自己设定一下。

读书人网 >VC/MFC

热点推荐