MFC框架程序剖析

简介:

1、MFC(Microsoft Foundation Class 微软基本类库)

(1)每一个MFC程序有且仅有一个从应用程序类(CWinApp)派生的类,每一个MFC程序实例有且仅有一个该派生类的实例化对象。

(2)Afx前缀的函数代表应用程序框架函数。在MFC中为全局函数,可以在程序的任何地方调用。

WinMain—> AfxWinMain(WINMAIN.CPP里包括该函数的定义)

           AfxGetThread(THRDCORE.CPP)

           AfxGetApp(AFXWIN1.INL)

CMainFrame::PreCreateWindow—>CFrameWnd::PreCreateWindow(WINFRM.CPP)
CMainApp派生于CWinThread类

CFrameWnd派生于CWnd类

窗口创建功能是由CWnd类的CreateEx(声明AFXWin.h,定义WINCORE.CPP)函数实现的。
CFrameWnd类的LoadFrame函数调用CFrameWnd的Create(声明AFXWin.h,定义WINCORE.CPP)函数,Create函数内部调用CWnd的CreateEx函数

消息循环

CWinThread类Run函数完成

AfxWinMain函数中调用Run函数(定义THRDCODE.CPP)

2、窗口类,窗口类对象,窗口

联系:c++窗口类对象内部定义一个窗口句柄变量,保存了与这个c++窗口类对象相关的那   个窗口句柄。

区别:窗口销毁,对应的窗口类对象销毁与否关键看其生命周期是否结束。

      窗口类对象销毁,与之对应的窗口也销毁。

3、视类窗口与框架窗口。

框架窗口:菜单栏、标题栏都位于非客户区

          工具栏位于客户区。显示的按钮会占领工具栏的地方。
视类窗口:显示的按钮会直接在客户区,不会占领非客户区的地方。


本文转自 韬光星夜 51CTO博客,原文链接:http://blog.51cto.com/xfqxj/476987,如需转载请自行联系原作者

相关文章
|
存储
SAP扩充物料的采购视图和会计视图
你一定想,哇,我们已经创建了供应商主数据,是不是我们就可以开始采购了?no你想买什么呢?你想买的是物料。你的物料,采购主数据创建了吗?没有。所以MM50扩充采购视图。但是,朋友,你太幼稚了。如果你想要采购某个物料,你对于物料主数据的维护顺序是这样的:基本视图--会计视图--采购视图不维护会计视图的话,创建采购信息记录的时候,会提示物料没有在1020工厂中维护。
5096 0
|
6月前
|
Web App开发
如何彻底解决 Edge 浏览器无法安装扩展程序的问题
Edge浏览器扩展安装失败(如提示“程序包无效:CRX_REQUIRED_PROOF_MISSING”或按钮灰色无法启用)时,可尝试以下两种解决方法: **方法一(推荐):** 通过下载并配置 `msedge.adm` 策略文件,在本地组策略编辑器中添加扩展ID白名单,重启浏览器后即可正常使用。 **方法二:** 将扩展文件从 `.crx` 改为 `.zip`,拖拽至扩展管理页面或解压后使用“加载解压缩的扩展”功能安装(但可能被自动删除)。
2584 2
|
存储 人工智能 自然语言处理
轻松改造公众号:10分钟实现智能客服自动化!
在阿里云平台上,仅需10分钟即可将微信公众号(订阅号)升级为AI智能客服,提供7x24小时客户支持,显著提升用户体验。方案包括四步:创建大模型问答应用、搭建微信公众号连接流、引入AI智能客服以及增加私有知识库,确保客服能精准回答复杂咨询,助力业务竞争力提升。整个过程简单快捷,在免费试用额度内费用为零。
729 7
轻松改造公众号:10分钟实现智能客服自动化!
|
10月前
|
人工智能 自然语言处理 测试技术
在IDE里使用DeepSeek-V3 和 DeepSeek-R1 满血版模型
如何在IDE里使用DeepSeek-V3 和 DeepSeek-R1 满血版模型
1168 97
|
前端开发 数据安全/隐私保护
应用架构设计 - 智能物流柜
应用架构设计 - 智能物流柜
195 1
|
SQL Oracle 关系型数据库
Oracle19c静默部署文档
本文档详细介绍了如何在Linux环境下静默部署Oracle 19c数据库。内容涵盖系统基础配置、用户及目录创建、系统配置文件修改、数据库安装与配置、监听配置与启动,以及数据库的启动与关闭操作。此外,还提供了SQL*Plus的改进方法和Navicat远程连接Oracle的解决方案。通过步骤化的指导,帮助读者顺利完成Oracle 19c的安装与配置。文档适用于Oracle 21C及之前的版本,附带多张示意图,便于理解和操作
Oracle19c静默部署文档
|
Java Maven
使用javadoc生成maven项目的文档
本文介绍了如何在Maven项目中使用maven-javadoc-plugin插件来生成项目的JavaDoc文档,并展示了配置插件、编写代码、运行Maven命令以及查看生成文档的完整步骤。
491 0
使用javadoc生成maven项目的文档
|
Python
Python实现rician莱斯衰落和rician莱斯信道
本文提供了一个Python类实现莱斯(Rician)衰落信道的模拟,包括理论概率密度函数的计算和实际随机变量的生成。
665 3
|
人工智能 决策智能
【AI Agent系列】【阿里AgentScope框架】2. Pipeline模块入门:使用Pipeline模块实现最简单的多智能体交互
【AI Agent系列】【阿里AgentScope框架】2. Pipeline模块入门:使用Pipeline模块实现最简单的多智能体交互
820 0