现在的位置: 首页 > 综合 > 正文

getparent方法的一些陷阱

2014年01月14日 ⁄ 综合 ⁄ 共 349字 ⁄ 字号 评论关闭

在mfc中大家经常用GetParent方法获取父窗口指针,但你会发现有时候他返回的并不是你理解上的父窗口,为什么了? 这是变态的微软隐含的一些约束导致的。 

 

子窗口是不可以作为Dialog的父窗体的,至少MFC中是不能。
// a popup window cannot be owned by a child window
while (hWnd != NULL && (::GetWindowLong(hWnd, GWL_STYLE) & WS_CHILD))
hWnd = ::GetParent(hWnd);

如果想获得Dialog的父窗体,请使用Dialog::m_pParentWnd。

 

在文档视图模型中由于view是mainframe的子窗口,则以view作为父窗口的对话框等通过getparent获取的都是mainframe窗口。

抱歉!评论已关闭.