• 【MFC】一个最简单的MFC程序(9)


    了解完MFC程序的流程后,会有 “果然不需要了解这些东西,直接用就可以了” 的感觉。这应该是MFC的初衷吧——按照框架来,集中精力做应用。但是没有了解呢?

    最简单的MFC程序

    步骤:

    1、创建WIN32应用程序,空工程

     

     2、使用MFC,动态链接和静态链接二选一(静态的方法直接编译进应用程序,可以运行于没用所需DLL的环境)

    右键工程-》属性-》常规

     下面的字符集也顺便换成   使用多字节字符集

     3、添加stdafx.h  和 stdafx.cpp 两个文件(预编译头文件,提高编译效率,非必要)

    stdafx.h 

    1. #pragma once
    2. #include

    stdafx.cpp

    #include "stdafx.h"

    4、添加应用程序类(右键项目或者菜单命令),继承于CWinApp(功能见前文)

    如CWinApp未被识别,在类的头文件添加包含文件:

     5、添加窗口类:

    同样方法解决 CFrameWnd 未被识别的问题。

    6、类向导里添加虚函数:

     如没有虚函数列表,可以通过关闭工程,重新打开开完成,当然,手动添加也是可以的。(BUG)

    很显然,这就是前文中,通过多态实现的应用程序接口。

    7、在应用程序类的CPP文件中,定义全局的应用程序类(见前文)

     名字可以任意。

    8、在 InitInstance 函数中实现主窗口的创建:

    应用程序类代码如下:

    1. #include "MyApp.h"
    2. #include "MyFrame.h"
    3. CMyApp::CMyApp(void)
    4. {
    5. }
    6. CMyApp::~CMyApp(void)
    7. {
    8. }
    9. CMyApp thapp;
    10. BOOL CMyApp::InitInstance()
    11. {
    12. // TODO: 在此添加专用代码和/或调用基类
    13. CWinApp::InitInstance();
    14. CMyFrame *temp = new CMyFrame();
    15. temp->Create(NULL,"MFC02");
    16. this->m_pMainWnd = temp;
    17. this->m_pMainWnd->ShowWindow(SW_SHOW);
    18. this->m_pMainWnd->UpdateWindow();
    19. return true;
    20. }

    几点说明:

    A、 先创建窗口对象,再调用Create函数,才能显示窗口。(创建窗口不放在窗口类的构造函数,是因为创建窗口需要指定窗口的类型、菜单等等,见前文窗口类注册)

    B、采用new的方法保证窗口对象在离开函数调用后不被销毁(局部对象自动回收)

    C、m_pMainWnd 是应用程序类的一个成员变量(CWnd 的指针),CWnd 又是CFrameWnd 的父类,CWnd 的Create函数比较复杂,CFrameWnd 则可以用NULL来使用默认的窗口类型。

    D、没用注册窗口类,是因为使用了默认的窗口类型(MFC已经注册好)

    E、父类的初始化应该放到派生类初始化的前面,CWinApp::InitInstance();

    编译运行发现其实两个类,几行代码就完成了MFC程序的创建,关键是流程非常的清晰。

  • 相关阅读:
    【Python百日进阶-WEB开发】Day179 - Django案例:11短信验证码
    亚马逊,沃尔玛,敦煌卖家借力自养号测评补单,提升核心关键词权重,流量飙升
    Excel表格总是处于只读状态怎么解决?
    【鸿蒙NEXT】设置全屏
    单商户商城系统功能拆解03—店铺主页编辑
    理解Go中的布尔逻辑
    Java--SpringMVC之RequestMapping请求映射和处理器方法参数
    互联网架构演进之路
    超市结算系统|Springboot+Vue通用超市结算收银系统
    【进阶C语言】排序函数(qsort)与模拟实现(回调函数的实例)
  • 原文地址:https://blog.csdn.net/yixiaobo2001/article/details/127982826