怎么形象地理解MFC编程框架

微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。

怎么形象地理解MFC编程框架-Worktile社区

一、MFC 的概念

微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。

MFC除了是一个类库以外,还是一个框架,在vc++里新建一个MFC的工程,开发环境会自动帮你产生许多文件,同时它使用了mfcxx.dll。xx是版本,它封装了mfc内核,所以你在你的代码看不到原本的SDK编程中的消息循环等等东西,因为MFC框架帮你封装好了,这样你就可以专心的考虑你程序的逻辑,而不是这些每次编程都要重复的东西,但是由于是通用框架,没有较好的针对性,当然也就丧失了一些灵活性和效率。但是MFC的封装很浅,所以效率上损失不大。

二、MFC框架的理解

1、MFC为微软基础类库。以程序的形式封装微软的API,即操作系统留给应用程序的调用接口。MFC框架包含应用程序框架,以减少应用程序开发人员的工作量。

  2、MFC框架为窗口对象。MFC是程序直接创建,然后在程序执行中随着窗口类构造函数的调用而生成,随着析构函数的调用而消失。

3、MFC框架可以创建窗口对象。MFC框架下创建窗口对象分两步,首先创建MFC窗口对象,然后创建对应的微软窗口。最后在内存使用上,MFC窗口对象可以自动创建。

转载于:https://www.cnblogs.com/BensonLaur/p/5234575.html

延伸阅读

MFC框架结构的分析

1、框架代码文件的结构

主要有4个部分组成:
1) 资源文件Resource.h:主要是定义资源的ID。
2) 预编译文件:可以用来解决头文件包含冲突的问题,定义一些需要全局性包含的文件。
3) 应用程序类对应文件:项目名称是TestOne,对应类名为CTestOneApp。
4) 对话框类:项目名称是TestOne,对应类名为CTestOneDlg。

2.应用程序类

MFC定义了一个应用程序基类CWinApp,所有基于MFC的应用程序都会继承这个类。TestOne项目也不例外,此时的应用程序类是CTestOneApp,定义如下:

class CTestOneApp : public CWinApp
{
public:
    CTestOneApp();
public:
    // 重载虚函数
    virtual BOOL InitInstance();
    // 实现
    DECLARE_MESSAGE_MAP()
};
 
 
BOOL CTestOneApp::InitInstance()
{  
    //初始化应用程序环境包控件等操作,省略部分代码.    
    CWinApp::InitInstance();..
    //省略部分代码...    
    //定义对话框对象
    CTestOneDlg dlg;
    //保存对话框到全局变量
    m_pMainWnd = &dlg; 
    //显示对话框
    INT_PTR nResponse = dlg.DoModal();
    if (nResponse == IDOK)
    {
        //“确定”来关闭对话框的代码
    }
    else if (nResponse == IDCANCEL)
    {
        //“取消”来关闭对话框的代码
    }
    // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序, 而不是启动应用程序的消息泵。
    return FALSE;
}

InitInstance()这个函数可以看作MFC程序的入口函数,main函数隐藏在这个函数中。在实际的开发中,一般不需要对这个类进行操作,但如果需要在建立主对话框之前处理一些数据或者准备工作,那么就可以把代码添加到这个函数中,主对话框显示之前。

3.对话框类

MFC主对话框类(主对话框是指与项目名称一致的那个类对应的对话框,下同)CTestOneDlg继承CDialogEx类,CDialogEx又继承CDialog类,这个可以通过类转到定义查看,对话框类负责与用户交互,处理用户消息,接受用户输入。类的定义如下:

// CTestOneDlg 对话框
class CTestOneDlg : public CDialogEx
{
public:
    // 标准构造函数
    CTestOneDlg(CWnd* pParent = NULL);
    // 对话框数据
    enum { IDD = IDD_TESTONE_DIALOG }; 
protected:
    // 动态数据交换,负责控件与变量之间的关联
    virtual void DoDataExchange(CDataExchange* pDX);   
protected:
    //应用程序句柄
    HICON m_hIcon;
    //重载初始化对话框
    virtual BOOL OnInitDialog();
    //定义消息WM_SYSCOMMAND处理函数
    afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    //定义消息WM_PAINT处理函数
    afx_msg void OnPaint();
    //定义消息ON_WM_QUERYDRAGICON处理函数
    afx_msg HCURSOR OnQueryDragIcon();
    //消息映射
    DECLARE_MESSAGE_MAP()
};

来源:本文为CSDN博主「「已注销」」的原创文章
原文链接:https://blog.csdn.net/qq_42746890/article/details/123531240

文章标题:怎么形象地理解MFC编程框架,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37287

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月7日 下午4:42
下一篇 2023年2月7日 下午5:12

相关推荐

  • 开发平台如何服务isv

    开发平台为ISV提供的服务内容包括以下几个方面:一、SDK和API;二、工具和资源;三、技术支持和服务。开发平台提供的SDK和API可以帮助ISV快速接入各种技术和服务,如支付、消息推送、地图、语音识别等。 一、SDK和API 开发平台提供的SDK和API可以帮助ISV快速接入各种技术和服务,如支付…

    2023年3月21日
    26800
  • 西门子plc通讯协议有哪些

    西门子plc通讯协议有:1、PPI通讯;2、RS485串口通讯;3、MPI通讯;4、以太网通讯;5、PROFIBUS-DP通讯。PPI协议是S7-200CPU最基本的通信方式,通过原来自身的端口( PORT0 或 PORT1 )就可以实现通信,是S7-200CPU默认的通信方式。 1、PPI通讯 P…

    2023年1月10日
    2.7K00
  • 勾股oa系统

    标题:勾股OA系统深度剖析 摘要:勾股OA系统为组织赋予高效协同、安全管理、流程优化3个核心优势。该系统适用于企业内部信息化管理,支持多种设备访问,保障信息传输和数据保密性。具体而言,流程优化是系统节省时间、提升效率不可或缺的一环,通过预设流程模板和灵活的流程设计,企业能够针对不同部门及业务需求制定…

    2024年1月16日
    12500
  • oa常用系统有哪些

    开发企业级在线办公自动化(OA)系统关键在于高效通信、流程管理、以及数据安全。1、协同办公、2、项目管理、3、文档管理 等类别中的系统成为公司运营的核心工具。协同办公软件 例如Microsoft Office 365和Google Workspace,提供了邮件、日程以及文档共享等功能,使团队能在不…

    2024年1月11日
    10600
  • 内存映射文件和直接缓冲区的区别

    内存映射文件和直接缓冲区的区别是:直接缓冲区是在用户态里JVM堆外(RAM上)申请了一块空间,我们在这块空间上进行随机读写数据。内存映射文件,是由一个文件到一块内存的映射。Win32提供了允许应用程序把文件映射到一个进程的函数。 直接缓冲区 是在用户态里JVM堆外(RAM上)申请了一块空间,我们在这…

    2023年2月13日
    42800
  • 工时管理有哪些意义

    工时管理的意义包括以下几点:1、提高企业的工作效率;2、调动员工的工作兴趣;3、激励员工自我提升;4、明确企业规划。工时管理制度实现了企业人力资源的有效配置,最大限度地调动了员工的积极性,提高了企业工作效率和经济效益。 1、提高企业的工作效率 工时制度促使企业从粗放式经营向精细化经营转变,因为工时制…

    2022年11月30日
    1.3K00
  • 管理的含义是什么

    管理是指一定组织中的管理者,通过实施计划、组织、领导、协调、控制等职能来协调他人的活动,使别人同自己一起实现既定目标的活动过程。是人类各种组织活动中最普通和最重要的一种活动。 一、管理的含义 管理是指一定组织中的管理者,通过实施计划、组织、领导、协调、控制等职能来协调他人的活动,使别人同自己一起实现…

    2023年5月7日
    91900
  • 记录工时的软件有哪些

    记录工时的软件有这些:1、PingCode;2、Worktile;3、工时记录;4、上班记录;5、记工时考勤;6、Zoho Projects;7、Harvest。PingCode是简单易用的新一代研发管理平台,致力于让研发管理自动化、数据化、智能化,帮助企业提升研发效能。 1、PingCode Pi…

    2023年4月14日
    85400
  • 如果想开发IOS的应用程序,需要准备什么

    如果想开发IOS的应用程序,需要准备什么:1、Mac 电脑;2、Xcode 开发工具;3、Swift 和 Objective-C;4、客户端库;5、apppark。Mac 电脑是指,开发 iOS App 需要在 Mac 电脑上安装 Xcode 开发工具。 一、如果想开发IOS的应用程序,需要准备什么…

    2023年5月9日
    68000
  • oa包括哪些东西

    该问题的答案并不唯一,因为”OA”可能指办公自动化(Office Automation)系统,或指骨关节炎(Osteoarthritis)。鉴于”东西”一词通常用于指物质或系统组件,这里暂时假定”OA”指的是办公自动化。若需讨论…

    2024年1月11日
    12600

发表回复

登录后才能评论
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部