mfc 窗口初始化以及销毁过程

2023-11-05

 1、模式对话框的创建过程

     

     1) DoModal()   重载函数,重载DoModal()成员函数。

     2)  PreSubclassWindow()   重载函数,允许首先子分类一个窗口。

     3)  OnCreate()  消息响应函数,响应WM_CREATE消息,发送此消息以告诉一个窗口已经被创建。

     4)  OnSize()   消息响应函数,响应WM_SIZE消息,发送此消息以告诉窗口大小发生变化。

     5)  OnMove() 消息响应函数,响应WM_MOVE消息,发送此消息,以告诉窗口正在移动。

      6)  OnSetFont()  消息响应函数,响应WM_SETFONT消息,发送此消息,以允许改变对话框中控件的字体。

      7)  OnInitDialog()  消息响应函数,响应WM_INITDIALOG消息,发送此消息以允许初始化对话框中的控件,或者是创建新控件。

      8) OnShowWindow()   消息响应函数,响应WM_SHOWWINDOW消息,该函数被 ShowWindow()函数调用。

      9) OnCtlColor()     消息响应函数,响应WM_CTLCOLOR消息,被父窗口发送已改变对话框或对话框上面控件的颜色。

     10) OnChildNotify()  重载函数,作为WM_CTLCOLOR消息的结果发送。

 

   2、模式对话框的关闭过程:

 

   1) OnClose()    消息响应函数,响应WM_CLOSE消息,当"关闭"按钮被单击的时候,该函数被调用。

    2) OnKillFocus()   消息响应函数,响应WM_KILLFOCUS消息,当一个窗口即将失去键盘输入焦点以前被发送。

    3) OnDestroy()    消息响应函数,响应WM_DESTROY消息,当一个窗口即将被销毁时,被发送。

   4) OnNcDestroy()    消息响应函数,响应WM_NCDESTROY消息,当一个窗口被销毁以后被发送。

   5) PostNcDestroy()  重载函数,作为处理OnNcDestroy()函数的最后动作被CWnd调用。

 

  3、无模式对话框的创建过程:

 

 

   1) PreSubclassWindow()    重载函数,允许用户首先子分类一个窗口。

   2) OnCreate()            消息响应函数,响应WM_CREATE消息,发送此消息以告诉一个窗口已经被创建。

   3) OnSize()               消息响应函数,响应WM_SIZE消息,发送此消息以告诉窗口大小发生变化。

   4) OnMove()             消息响应函数,响应WM_MOVE消息,发送此消息以告诉窗口正在移动。

   5) OnSetFont()           消息响应函数,响应WM_SETFONT消息,发送此消息以允许改变对话框中控件的字体。

 

 4、应用程序窗口的创建过程:

 

  1) PreCreateWindow()   该函数是一个重载函数,在窗口被创建前,可以在该重载函数中改变创建参数(可以设置窗口风格等等)。

  2) PreSubclassWindow() 这也是一个重载函数,允许首先子分类一个窗口。

  3) OnGetMinMaxInfo()   该函数为消息响应函数,响应的是WM_GETMINMAXINFO消息,允许设置窗口的最大或者最小尺寸。

  4) OnNcCreate()   该函数也是一个消息响应函数,响应WM_NCCREATE消息,发送消息以告诉窗口的客户区即将被创建。

   5) OnNcCalcSize()   该函数也是消息响应函数,响应WM_NCCALCSIZE消息,作用是允许改变窗口客户区大小。

  6) OnCreate()    该函数也是一个消息响应函数,响应WM_CREATE消息,发送消息告诉一个窗口已经被创建。

  7) OnSize()       该函数也是一个消息响应函数,响应WM_SIZE消息,发送该消息以告诉该窗口大小已经发生变化。

   8) OnMove()    消息响应函数,响应WM_MOVE消息,发送此消息说明窗口在移动。

   9) OnChildNotify()     该函数为重载函数,作为部分消息映射被调用,告诉父窗口即将被告知一个窗口刚刚被创建。

 

 5、应用程序窗口的关闭过程:

 

  1) OnClose()       消息响应函数,响应窗口的WM_CLOSE消息,当关闭按钮被单击的时候发送此消息。

   2) OnDestroy()     消息响应函数,响应窗口的WM_DESTROY消息,当一个窗口将被销毁时,发送此消息。

   3) OnNcDestroy()   消息响应函数,响应窗口的WM_NCDESTROY消息,当一个窗口被销毁后发送此消息。

   4) PostNcDestroy()  重载函数,作为处理OnNcDestroy()函数的最后动作,被CWnd调用。

 

 6、应用程序处理消息的过程:

 

  1) AfxWndProc()      该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc。

  2) AfxCallWndProc()  该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用 WindowProc()函数。

  3) WindowProc()    该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用DefWindowProc()函数

  4) OnWndMsg()     该函数的功能首先按字节对消息进行排序,对于WM_COMMAND消息,调用OnCommand()消息响应函数,对于WM_NOTIFY消息调用OnNotify()消息响应函数。任何被遗漏的消息将是一个窗口消息。OnWndMsg()函数搜索类的消息映像,以找到一个能处理任何窗口消息的处理函数。如果OnWndMsg()函数不能找到这样的处理函数的话,则把消息返回到WindowProc()函数,由它将消息发送给DefWindowProc()函数。

  5) OnCommand()    该函数查看这是不是一个控件通知(lParam参数不为NULL,如果lParam参数为空的话,说明该消息不是控件通知),如果它是,OnCommand()函数会试图将消息映射到制造通知的控件;如果他不是一个控件通知(或者如果控件拒绝映射的消息)OnCommand()就会调用OnCmdMsg()函数。

  6) OnCmdMsg()   根据接收消息的类,OnCmdMsg()函数将在一个称为命令传递(Command Routing)的过程中潜在的传递命令消息和控件通知。例如:如果拥有该窗口的类是一个框架类,则命令和通知消息也被传递到视图和文档类,并为该类寻找一个消息处理函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mfc 窗口初始化以及销毁过程 的相关文章

  • GetWindowRect 坐标不与屏幕相关

    我正在使用 Visual Studio 2008 C 工作 我有一个 MFC 对话框 里面有一个控件 我正在尝试在控件中放置另一个对话框 第二个对话框上的 SetWindowPos 显然使用屏幕坐标 因此我需要获取控件或父对话框的屏幕坐标
  • Boost::序列化和 MFC Doc/View 架构

    我正在移植现有的 MFC C 应用程序以对 XML 文件使用 Boost Serialization 我的 CDocument 对象包含应用程序的所有数据 我已将序列化函数实现为 template
  • 如何显示非模式对话框并立即在其中显示信息?

    我想在屏幕上显示一个无模式对话框并在其中显示一些信息 但是 如果我按照以下方式使用它 则会出现一些问题 function showdialog XXX heavy work update the dialog heavy work upda
  • 升级后的 MFC 应用程序看起来仍然很旧

    我有一个用 VC6 编写的 MFC 应用程序 我已将其升级到 VS2015 并且它可以构建并运行 该应用程序是一个主可执行文件 其中包含许多包含对话框的 DLL 然而应用仍然looks就像用 VC6 构建的一样 所有 GUI 组件都没有 W
  • 如何将 std::variant 作为 VARIANT* 传递给 ExecWB?

    我看过这篇关于使用的文章std variant https en cppreference com w cpp utility variant 这是因为以下代码引发了代码分析警告 void CChristianLifeMinistryHtm
  • 如何在 MFC 中创建 GUI

    我需要能够即时创建指南 MFC中有没有办法做到这一点 我了解了如何在 net 中做到这一点 但我们还没有做到这一点 如果没有 您是否有一些我可以使用的代码的指针 don t forget to add Rpcrt4 lib to your
  • 如何在现有 Windows 应用程序中获得 ATL 支持

    我正在 Visual Studio 2012 中使用 Qt 5 3 1 构建一个应用程序 我还想使用一个硬件库 这需要我向项目添加一个简单的 ATL 对象 这可以通过使用 Visual Studio 向导来完成 该向导抱怨我的项目既不是 M
  • 如何发光最小。最大和关闭按钮?

    我按照以下指南使用 DWM API 创建自定义 Aero 框架 My work void CMainFrame OnActivate UINT nState CWnd pWndOther BOOL bMinimized CFrameWnd
  • 如何停止对辅助隐式加载 DLL 的 DLL 劫持

    例如 COMDLG32 DLL 隐式链接到以下系统 DLL 以及其他 xmllite dll dll srvcli dll wkscli dll 链接信息库 netutils dll 微星 dll 由于这些是由操作系统隐式加载的 而不是使用
  • 禁用/启用 MFC 功能包的功能区按钮

    我正在使用 MFC 功能包 并且功能区栏上有一些按钮 即 CMFCRibbonButton 的实例 问题是我想在某些条件下启用和禁用其中一些 但在运行时 我怎样才能做到这一点 因为没有具体的方法 我听说解决方案是在运行时附加 分离事件处理程
  • 如何在VC++/MFC中替换字符串中两个子字符串之间的字符串?

    假设我有一个 CString 对象 strMain AAAABBCCCCCCDDBBCCCCCCCCDDDAA 我还有两个较小的字符串 例如 strSmall1 BB strSmall2 DD 现在 我想替换 strMain 中 strSm
  • .NET(或 MFC)的高速图形控件?

    我需要编写一个数字示波器类型的应用程序 有很多很棒的静态绘图控件 但我需要一些可以绘制每秒处理 4000 个样本的 16 条轨迹的东西 有人知道 NET 的高速图形控件吗 我什至会选择 MFC 因为它可以封装到 NET 控件中 谢谢您的帮助
  • 如何在 MFC 中调整对话框大小时移动控件?

    我已经在 MFC 中创建了对话框视图 从下图中可以清楚地看到 如滑块控件和编辑框等 当我调整对话框大小时 这些控件不会移动 在此输入图像描述 https i stack imgur com 7OxAK jpg 我想移动控件以适应对话框 但不
  • 具有键唯一性和按位置排序的 MFC 字典集合

    看着表上http msdn microsoft com en us library y1z022s1 28v vs 80 29 aspx core collection shape features http msdn microsoft
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 为什么我的单选按钮不起作用?

    我正在 Visual C 2005 中开发 MFC 对话框应用程序 我的单选按钮是 m Small m Medium 和 m Large 它们都没有在我的 m Summary 编辑框中显示应有的内容 可能出什么问题了 这是我的代码 Pizz
  • 如何将十六进制字符串转换为无符号长整型?

    我有以下十六进制值 CString str str T FFF000 如何将其转换为unsigned long 您可以使用strtol作用于常规 C 字符串的函数 它使用指定的基数将字符串转换为 long long l strtol str
  • CComboBox DDX_CBString 行为令人困惑

    我在对话框中使用 ComboBox 控件为用户提供一些有用的值 例如 10 20 100 400 800 但让用户根据需要插入准确的值 经过很长时间我发现 如果我输入值40在 Combobox 中 Combobox 始终在 UpdataDa
  • MFC:如何设置CEdit框的焦点?

    我正在开发我的第一个简单的 MFC 项目 但我正在努力解决一个问题 想要设置所有的焦点CEdit其中一个对话框中的框 我的想法是 当打开对话框时 焦点位于第一个编辑框上 然后使用 选项卡 在它们之间交换 我看到了方法SetFocus 但我无
  • 调试器忽略动态加载的 DLL 中的错误

    我有一个与自编码 DLL 的调试相关的非常奇怪的问题 我有一个 MFC 驱动的基于对话框的应用程序 几个静态链接的项目和几个在运行时加载的 DLL 项目 我在调试中构建解决方案 运行应用程序 然后我可以轻松调试这些 DLL 项目 现在问题来

随机推荐

  • 微信小程序如何调用API实现数据请求-wx.request()

    前言 微信小程序不存在ajax 那么它是如何实现数据请求功能的呢 微在信中提供了API的调用wx request OBJECT 这个是很不错的 下面就讲一下如何请求数据 简单到不行 wx request 看文档时 提供了示例模板如下 wx
  • tcpdump使用详解

    1 tcpdump的语法格式 tcpdump option proto dirction type option 可选参数 proto 协议过滤器 可识别的关键词有 http tcp udp icmp ip ip6 arp rarp typ
  • 算法和数据结构项目练习6-基于Karp‐Rabin 算法的字符串搜索

    Karp Rabin String Search 项目介绍 代码实现 项目介绍 本项目实现了Karp Rabin字符串搜索算法 程序读取的txt文件包含两个字符序列 分别在不同的测试行上 第一行是目标序列T 第二行是搜索序列S 读取这两个字
  • JetBrains IDE Support Chrome插件之各种问题解决

    webstorm前端调试工具 JetBrains IDE Support Chrome插件之各种问题解决 现在网上的那些教程都是很老旧的 我看了大量的资料都没有一个能实现 故我将自己摸索了很久之后找出来的解决办法分享给大家 给大家指明方向
  • Qt5.5.1配置MSVC2010编绎器和windbg调试器

    Qt5 5 1配置MSVC2010编绎器和windbg调试器 windbg下载 windbgDebuggingToolsforWindows C 文档类资源 CSDN下载 1 安装vc 2010 express 2 设置编绎器 32位 64
  • Bean property 'transactionManagerBeanName' is not writable or has an invalid set

    2017 02 07 11 38 48 458 localhost startStop 1 org springframework beans factory support DefaultListableBeanFactory 523 D
  • ChatGPT国内镜像站初体验:聊天、Python代码生成等

    ChatGPT国内镜像站初体验 聊天 Python代码生成 本文获得CSDN质量评分 92 学习的细节是欢悦的历程 Python 官网 https www python org Free 大咖免费 圣经 教程 python 完全自学教程 不
  • 计算模型的GFLOPs和参数量 & 举例VGG16和DETR

    近期忙于写论文 分享一下论文中表格数据的计算方法 目录 一 FLOPS FLOPs和GFLOPs的概念 二 计算VGG16的GFLOPs和参数量 三 计算DETR的GFLOPs和参数量 四 整理数据表格 一 FLOPS FLOPs和GFLO
  • python画填色图时,如何让分层的填色变为渐变色

    python画填色图时 如何让分层的填色变为渐变色 注 自己用来备忘的 以画海洋的地形图为例 数据为一个三维数据 有经度 lon 纬度 lat 高度 z 三个变量 我们绘制的地形图为了美观 只想让colobar显示 100 0之间的高度 我
  • 深入解析java.lang.ClassNotFoundException异常

    1 引言 在Java开发中 我们经常会遇到各种异常 其中 java lang ClassNotFoundException异常是一种常见的异常 本文将深入解析这个异常的定义 作用 产生原因以及常见场景 1 1 介绍ClassNotFound
  • docker elastic search 设置密码,修改密码

    设置密码 1 在docker compose 中添加配置 开启验证功能 在docker compose xml 的 environment 项下添加 xpack security enabled true 2 进入docker 容器 3 随
  • (2)Hibernate实现CRUD

    HibernateUtil package util import org hibernate Session import org hibernate SessionFactory import org hibernate cfg Con
  • Kafka压力测试(官方自带)

    1 Kafka压测 用Kafka官方自带的脚本 对Kafka进行压测 Kafka压测时 可以查看到哪个地方出现了瓶颈 CPU 内存 网络IO 一般都是网络IO达到瓶颈 kafka consumer perf test sh kafka pr
  • Django Orm 查询总结

    Django提供了一套非常方便的类似lingQ的通过对象调用的方式操作数据库表的Orm框架 关于Django Orm的操作方式做下整理 Django Orm 操作主要分为以下几类 增 向表内插入一条数据 删 删除表内数据 物理删除 改 up
  • [leetcode] 1675. 数组的最小偏移量

    题目链接 来源 力扣 LeetCode 链接 https leetcode cn problems minimize deviation in array 著作权归领扣网络所有 商业转载请联系官方授权 非商业转载请注明出处 示例 1 输入
  • AMR 文件解析及编解码流程

    CONTENT AMR简介 AMR 话音质量评定 AMR 文件结构解析 AMR 帧结构解析 AMR 帧读取算法 AMR 解码原理及流程 AMR 模式选择自适应机制 一 AMR 简介 基于新的网络和新的要求 无论是从节省传输频带资源 还是保持
  • Java学习之线程安全问题,关于synchronized 和 Lock 的使用

    1 Lock 解决线程安全问题的方式三 Lock锁 JDK5 0新加 synchronized 与 Lock的区别 相同点 都是解决线程的安全问题 不同点 1 Lock是显示锁 手动开启和关闭锁 synchronized是隐式锁 出了 作用
  • 智能算法系列之遗传算法

    本博客封面由ChatGPT Midjourney共同创作而成 文章目录 前言 1 算法思想 2 细节梳理 2 1 DAN编码 2 2 种群初始化及超参选择 2 3 适应度函数 2 4 选择 交叉 交配 与变异 2 5 终止条件 3 算法实现
  • MDK 出现#68-D: integer conversion resulted in a change of sign

    出现这种情况 原因如下 1 出现了无符号转换成有符号数 但是数据的最高位是符号位 可能会导致数字的值突变 2 有符号数被转换成了无符号数 经常在代码中会定义状态 错误的宏定义 出现 1等等负数 然而程序的返回值类型是 uint8 t uin
  • mfc 窗口初始化以及销毁过程

    1 模式对话框的创建过程 1 DoModal 重载函数 重载DoModal 成员函数 2 PreSubclassWindow 重载函数 允许首先子分类一个窗口 3 OnCreate 消息响应函数 响应WM CREATE消息 发送此消息以告诉