博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
getparent方法的一些陷阱、m_pParentWnd
阅读量:6364 次
发布时间:2019-06-23

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

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

以下CTestDlg构造的时候传递窗口对象的指针,当前传的窗口对象指针是CMyboleView对象的指针

记住一点:子窗体(例如View)不能作为对话框的父窗体

当前情况下,以下函数获得的类型如下所示,

①、要获得对话框构造的时候的“父窗体”,只能用m_pParentWnd;子窗体获得父窗体指针

②、GetParent获得父窗口的指针(对话框有点不同)

③、GetParentFrame获得CFrameWnd的指针,不管子窗体还是对话框

④、GetParentOwner获得最直接的父窗体或者自己,只要不是子窗体,默认是它的父窗体

⑤、GetOwner,查看msdn如下:

If the window has no owner, then a pointer to the parent window object is returned by default. Note that the relationship between the owner and the owned differs from the parent-child aspect in several important aspects. For example, a window with a parent is confined to its parent window's client area. Owned windows can be drawn at any location on the desktop.

The ownership concept of this function is different from the ownership concept of GetWindow. 

 

转载于:https://www.cnblogs.com/develop-me/p/5744773.html

你可能感兴趣的文章
环球花木网的目标就是致力于打造成为“园林相关行业的专业性门户网站
查看>>
《编写高质量代码:改善c程序代码的125个建议》—— 建议14-1:尽量避免对未知的有符号数执行位操作...
查看>>
《C语言编程魔法书:基于C11标准》——2.2 整数在计算机中的表示
查看>>
全球程序员编程水平排行榜TOP50,中国排名第一
查看>>
HDFS 进化,Hadoop 即将拥抱对象存储?
查看>>
Edge 浏览器奇葩 bug:“123456”打印成“114447”
查看>>
Sirius —— 开源版的 Siri ,由 Google 支持
查看>>
《OpenGL ES应用开发实践指南:Android卷》—— 2.7 小结
查看>>
《Windows Server 2012活动目录管理实践》——第 2 章 部署第一台域控制器2.1 案例任务...
查看>>
Java Date Time 教程-时间测量
查看>>
Selector.wakeup实现注记
查看>>
《Java EE 7精粹》—— 第1章 Java EE 1.1 简介
查看>>
《Exchange Server 2013 SP1管理实践》——导读
查看>>
syslog:类Unix系统常用的log服务
查看>>
使用Annotation设计持久层
查看>>
深入实践Spring Boot2.4.1 Neo4j依赖配置
查看>>
Zen Cart 如何添加地址栏上的小图标
查看>>
SecureCrt 连接Redhat linux
查看>>
[NHibernate]持久化类(Persistent Classes)
查看>>
安装oracle数据库提示“程序异常终止”解决方案
查看>>