getparent方法的一些陷阱、m_pParentWnd

在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构造的时候

时间: 2024-08-20 04:57:12

getparent方法的一些陷阱、m_pParentWnd的相关文章

List.add()方法中的陷阱

今天在做微信项目时,发现了一个奇怪的问题,代码如下: JSONObject j = new JSONObject(); List<JSONObject> list = new ArrayList<JSONObject>(); j.put("author", "1yuqiaotech"); j.put("title", "1测试标题"); //在图文消息页面点击"阅读原文"后的页面 j

非模态窗口的创建方法

粘贴一些关键代码(IN  FILE_MYBOLE): CMyboleView窗口类中 void CMyboleView::OnMenuDialog() { // TODO: 在此添加命令处理程序代码 //非模态对话框的使用,要更改 OnOK 这个虚函数 if(m_pDlg) { m_pDlg->SetActiveWindow(); } else { m_pDlg = new CTestDlg(this); m_pDlg->Create(IDD_ONE_DLG, this); m_pDlg-&g

运行jar应用程序引用其他jar包的四种方法

方法一.使用Bootstrap Classloader来加载这些类. 我们可以在运行时使用如下参数: -Xbootclasspath:完全取代系统Java classpath.最好不用.-Xbootclasspath/a: 在系统class加载后加载.一般用这个.-Xbootclasspath/p: 在系统class加载前加载,注意使用,和系统类冲突就不好了. win32     java -Xbootclasspath/a: some.jar;some2.jar;  -jar test.jar

File:方法(详细)

File方法: Name()方法:获取File的名称. getPath()方法:获取File的路径. getAbsolutePath()方法:获取文件或目录的绝对路径名称. getParent()方法:获取文件或目录的父路径名称. isAbsolute ()方法:判断文件或目录的父路径是否绝对路径. File file=new File("e:/111"); System.out.println(file.getName()); //111 System.out.println(fil

C/C++返回内部静态成员的陷阱(转)

在我们用C/C++开发的过程中,总是有一个问题会给我们带来苦恼.这个问题就是函数内和函数外代码需要通过一块内存来交互(比如,函数返回字符串),这个问题困扰和很多开发人员.如果你的内存是在函数内栈上分配的,那么这个内存会随着函数的返回而被弹栈释放,所以,你一定要返回一块函数外部还有效的内存. 这是一个让无数人困扰的问题.如果你一不小心,你就很有可能在这个上面犯错误.当然目前有很多解决方法,如果你熟悉一些标准库的话,你可以看到许多各式各样的解决方法.大体来说有下面几种: 1)在函数内部通过mallo

C/C++返回内部静态成员的陷阱

在我们用C/C++开发的过程中,总是有一个问题会给我们带来苦恼.这个问题就是函数内和函数外代码需要通过一块内存来交互(比如,函数返回字符串),这个问题困扰和很多开发人员.如果你的内存是在函数内栈上分配的,那么这个内存会随着函数的返回而被弹栈释放,所以,你一定要返回一块函数外部还有效的内存. 这是一个让无数人困扰的问题.如果你一不小心,你就很有可能在这个上面犯错误.当然目前有很多解决方法,如果你熟悉一些标准库的话,你可以看到许多各式各样的解决方法.大体来说有下面几种: 1)在函数内部通过mallo

JSP自定义标签

假设 向浏览器输出当前客户的IP地址 ,我们现在可以这样写 <% //获取当前用户的IP地址 String ip=request.getRemoteHost(); out.print("当前用户的IP地址是:"+ip); %> 但我们现在为了要在jsp页面尽量减少java代码,这个时候我们可以向前面学标签一样,自己来定义一个标签,通过调用标签来达到实现显示客户端的ip地址. 首先第一步我们要创建一个普通的java类,继承SimpleTagSupport类,叫标签处理器类(用

Bootstrap源码:dropdown.js

bootstrap的dropdown.js,封装了一个非常灵活易用的下拉组件,在各种下拉场景中稍加变换,都能实现目标效果,还能跟其他的组件良好地结合,比如前面的tab.js,搭配完成更强大的组件功能.这个组件除了js之外,html的结构和css的配合更是精妙,我从这个组件里面学到了不少有用的经验和技巧,下面是它的html结构: <div class="dropdown"> <a href="#" class="dropdown-toggl

JavaWeb:标签(二)

接上一节 setJspContext: 一定会被 JSP 引擎所调用,先于 doTag, 把代表JSP 引擎的 pageContext 传给标签处理器类. 带属性的自定义标签: 1).先在标签处理器类中定义 setter 方法,建议把所有的属性类型都设置为 String 类型. 例如: private String value; private String count; public void setValue(String value) { this.value = value; } pub