考虑单窗口情况: 假设自己通过new创建了一个窗口对象pWnd,然后pWnd->Create.则销毁窗口的调用次序: 1. 手工调用pWnd->DestroyWindow(): 2. DestroyWindow会发送WM_DESTROY: 3. WM_DESTROY对应的消息处理函数是OnDestroy(): 4. DestroyWindow会发送WM_NCDESTROY: 5. WM_NCDESTROY对应的消息处理函数是OnNcDestroy: 6. OnNcDestroy最后会调用Pos…
这篇讲得很清楚,就转过来了,原文如下: 因项目需要,最近在学习MFC,下午在一篇教程中提到了临时窗口.永久窗口,作者让读者自行查阅MSDN,了解临时窗口与永久窗口的概念,出于好奇,出于方便,直接百度一下,看到了几篇题为解释临时窗口与永久窗口的文章,随后网友在论坛中附上了MSDN中的原文,仔细翻译一下,发现网上查到的几篇文章,对这个概念的解释是有问题和不足的. 首先我要说明一点的就是窗口是没有临时与永久之分的,窗口是一种资源,随着CreateWindow的调用而产生,随着DestroyWindow…
CVC_MFC_firstDlg dlg; //定义对话框对象m_pMainWnd = &dlg;  //这个定义的对话框 dlg 成为主窗口 应用程序对象成员变量m_pMainWnd是一个窗口指针,即主窗口的指针.在初始化实例时,要给这个指针进行赋值.如果这个指针为空,则在默认的接下来的消息循环中,将不继续往下执行,也就是说,程序执行完初始化后,程序就退出了.只要这个指针的值非空且合法,程序就能够继续执行下去.你可以在初始化实例时创建N多个窗口,而只有这个指针指向的才是主窗口.在初始化实例函数…
考虑单窗口情况: 假设自己通过new创建了一个窗口对象pWnd,然后pWnd->Create.则销毁窗口的调用次序: 1. 手工调用pWnd->DestroyWindow(): 2. DestroyWindow会发送WM_DESTROY: 3. WM_DESTROY对应的消息处理函数是OnDestroy(): 4. DestroyWindow会发送WM_NCDESTROY: 5. WM_NCDESTROY对应的消息处理函数是OnNcDestroy: 6. OnNcDestroy最后会调用Pos…
转载声明: 本文转载自:http://www.cnblogs.com/BeyondTechnology/archive/2011/03/25/1995934.html 感谢BeyondTechnology.. 在windows系统中,每个窗口对象都对应有一个数据结构,形成一个list链表.系统的窗口管理器通过这个list来获取窗口信息和管理每个窗口.这个数据结构中有四个数据用来构建list,即child.sibling.parent.owner四个域.所以我们可以看到,窗口之间的关系有两种:ow…
一.概念和区别 在windows系统中,每个窗口对象都对应有一个数据结构,形成一个list链表.系统的窗口管理器通过这个list来获取窗口信息和管理每个窗口.这个数据结构中有四个数据用来构建list,即child.sibling.parent.owner四个域.所以我们可以看到,窗口之间的关系有两种:owner-owned 关系和 parent-child关系.前者称之为拥有/被拥有关系,后者称之为父/子关系.在这篇文字中,我把owner窗口称之所有者窗口.换句话说,一个窗口在有一个父窗口(pa…
转载请说明原出处.谢谢~~ 看到群里朋友有人讨论WTL中的thunk技术,让我联想到了duilib的类似技术. 这些技术都是为了解决c++封装的窗口类与窗口句柄的关联问题. 这里是三篇关于thunk技术的博客,不懂的朋友能够先看一下: WTL学习之旅(三)WTL中 Thunk技术本质(含代码) 深入剖析WTL-WTL框架窗体分析 (5) 学习下 WTL 的 thunk 我这里直接引用其它博客的一部分文字来说明窗口类与窗口句柄关联的重要性和相关的问题,然后说明一下duilib中的解决方法: ---…
分割窗口概述 分割窗口,顾名思义,就是将一个窗口分割成多个窗格,在每个窗格中都包含有视图,或者是同一类型的视图,或者是不同类型的视图. MFC分割窗口的方式有两种,动态分割和静态分割. 动态分割窗口通常用于创建同一个文档对应的多个视图,而且这些视图一般都是同一类型的视图,能够在用户编辑文档的不同部分时提供方便. 大家看下Word里的动态分割窗口就很明白了,以Word 2007文档为例,在菜单中点击“视图”->“拆分”,就可以看到一条随鼠标移动的分隔条,当我们在文档中某个位置按下鼠标左键时,分割条…
1.CWinApp(包括了这个类的导出类):代表了我们的程序.封装了消息循环等. 2.CFrameWnd:代表了程序的框架窗口.封装了窗口的注册.创建.显示.刷新.等等窗口操作. 3.Win32中.一个窗口:注册->显示->信息循环. 4.CFrameWnd类来做窗口. 4.1. //创建一个代表框架窗口的类对象 CFrameWnd *pFrame = new CFrameWnd; //在框架窗口和主程序类之间建立联系 this->m_pMainWnd = pFrame; //创建窗口…
1 在主窗口中实例化子窗口 在主窗口中实例化子窗口,而不是在按钮中实例化子窗口对象. Form2 f2 = new Form2(); 2 通过按钮来显示主窗口 在按钮中需要实现的是窗口的显示 private void Config_Click(object sender, EventArgs e) { f2.Show(); } 3 关闭子窗口而不释放子窗口对象的方法 经查询和实证,修改子窗口中Dispose(在子窗口设计器中寻找修改)的方法是可行的.更改如下: protected overrid…