MFC框架仿真<一>

六个关键仿真,在去年的某个时候研究过一段时间,并且对这个仿真做了自己的二次仿真,并且做了笔记,可遗憾的是写的代码没有保存下来。

接触的所谓框架不多,但是说实在话,MFC一开始接触真的很难!这次给我极大的教训,就是研究完一个东西,一定要详细的记录下来,包括流程和完整代码!
头文件MFC.H

#include <iostream.h>

class CObject/*根类*/
{
public:
  CObject()  {cout << "CObject 构造 \n";}
  ~CObject() {cout << "CObject 析构 \n";}
};

class CCmdTarget : public CObject /*二级类*/
{
public:
  CCmdTarget()  {cout << "CCmdTarget 构造 \n";}
  ~CCmdTarget() {cout << "CCmdTarget 析构 \n";}
};

class CWinThread : public CCmdTarget
{
public:
  CWinThread()  {cout << "CWinThread 构造 \n";}
  ~CWinThread() {cout << "CWinThread 析构 \n";}
};

class CWinApp : public CWinThread
{
public:
  CWinApp* m_pCurrentWinApp; /*存放当前对象地址*/
public:
  CWinApp()  {
                 cout << "CWinApp 构造 \n";
                 m_pCurrentWinApp = this;
            }
  ~CWinApp() {cout << "CWinApp 析构 \n";}
};

class CDocument : public CCmdTarget
{
public:
  CDocument()   {cout << "CDocument 构造 \n";}
  ~CDocument()  {cout << "CDocument 析构 \n";}
};

class CWnd : public CCmdTarget /*窗口类*/
{
public:
  CWnd()   {cout << "CWnd 构造 \n";}
  ~CWnd()  {cout << "CWnd 析构 \n";}
};

class CFrameWnd : public CWnd
{
public:
  CFrameWnd()   {cout << "CFrameWnd 构造 \n";}
  ~CFrameWnd()  {cout << "CFrameWnd 析构 \n";}
};

class CView : public CWnd
{
public:
  CView()   {cout << "CView 构造 \n";}
  ~CView()  {cout << "CView 析构 \n";}
};

CWinApp* AfxGetApp(); /*全局函数*/

头文件my.H

#include <iostream.h>
#include "mfc.h"

class CMyWinApp : public CWinApp
{
public:
  CMyWinApp()   {cout << "CMyWinApp 构造 \n";}

  ~CMyWinApp()  {cout << "CMyWinApp 析构 \n";}
};

class CMyFrameWnd : public CFrameWnd
{
public:
  CMyFrameWnd()   {cout << "CMyFrameWnd 构造 \n";}                    

  ~CMyFrameWnd()  {cout << "CMyFrameWnd 析构 \n";}
};

MFC.cpp

#include "my.h"
extern CMyWinApp theApp;

CWinApp* AfxGetApp() /*全局函数AfxGetApp,返回对象地址*/
{
  return theApp.m_pCurrentWinApp;
}

MY.CPP

#include "my.h"
CMyWinApp theApp;/*起点->全局对象*/

void main()
{
    CWinApp* pApp = AfxGetApp();/*返回对象地址*/
}

时间: 2024-08-29 07:23:44

MFC框架仿真<一>的相关文章

MFC框架仿真&lt;三&gt;R T T I

RTTI,简单的说,就是判定A类是否为B类的基类.如图所示,我仿真它的用法,虚构了一个类群,分别列出了各个类的派生层次. 怎么能知道一个类是否是另一个类的基类呢?采用的方法是:每个类中放置一个结构体结点,在这个结点中存放几个指针,其中有一个存放该类基类的结构体地址,然后通过类似链表的形式串连起来.比如说:判定B类是否为A1的基类,首先从A1出发,寻找它的基类,于是得到A,再往下寻找...以此类推,路径为:A1->A->Head->Base->NULL,结果发现这条路径上没有B类,于

C++开发人脸性别识别教程(9)——搭建MFC框架之显示图片

在之前的博客中我们已经实现读取用户选定的文件夹,并将其路径保存在相应的变量中,在这篇博文中我们将介绍如何借助CvvImage类将图片显示在picture控件中,并自动读取文件夹下的其他图片. 一.添加“下一张”按钮 由于我们需要读取文件夹下的所有图像文件,而非某一张文件,因此有必要添加一个按钮来进行控制,具体功能就是:每单击一次这个按钮,程序就会自动读取下一张图片并显示在界面上.由于之前已经详细介绍了MFC中添加Button控件的方式,这里不再赘述.添加一个按钮,命名为“下一张”,将ID更改为I

介绍MFC框架中涉及到的设计模式(一)

最近看了几篇有关MFC框架中涉及到的设计模式的论文,为帮助大家深入了解MFC框架特此总结,希望能帮助到大家. 简单介绍设计模式 设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 设计模式分为三种类型:创建型模式.结构型模式,行为型模式. 设计模式分为三种类型,共23种. 创建型模式:单例模式.抽象工厂模式.建造者模式.工厂模式.原型模式. 结构型模式:适配器模式.桥接模式.装饰模式.组合模式.外观模

C++开发人脸性别识别教程(7)——搭建MFC框架之界面绘制

在之前的博客中我们已经将项目中用到的算法表述完毕,包括人脸检测算法以及四种性别识别算法,在这篇博客中我们将着手搭建基本的MFC框架. 一.框架概况 在这篇博文中我们将搭建最基本的MFC框架,绘制MFC界面. 二.搭建流程 1.新建一个MFC工程并配置OpenCv 打开VS,按下“ctrl+n”,在新建窗口中选择“MFC应用程序”,命名为GenderRecognitionMFC: 单击确定,程序类型选择“基于对话框”,MFC使用选择“在静态库中使用MFC”: 直接单击“完成”,创建完毕.OpenC

MFC框架

第一点:类别型录网的搭建: 类别型录网搭建的目的是为了实现所谓的"执行期类型识别",也就是在程序运行的时候识别出某个对象是否是某个类的实例(基类也可以).这里还不是很明白为什么需要实现"执行期类型识别",这种技巧具体被应用在哪里. 例如在MFC中CView继承于CWnd,那么可以进行这样的判断: CView view; bool result = view.IsKindOf(CWnd); // result == true 如上,通过调用IsKindOf函数,可以判

MFC框架类、文档类、视图类相互访问的方法

1.获取应用程序指针 CMyApp* pApp=(CMyApp*)AfxGetApp(); 2.获取主框架指针 CWinApp 中的公有成员变量 m_pMainWnd 就是主框架的指针 CMainFrame* pMainFrame = (CMainFrame*)(AfxGetApp()->m_pMainWnd); 或者 CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd(); 3.获取菜单指针 CMenu* pMenu = AfxGetMain

C++开发人脸性别识别教程(8)——搭建MFC框架之读取文件夹信息

在上一篇博客中我们已经绘制了MFC界面,在这篇博客中我们将添加响应代码,为MFC框架添加一个最基本的功能:打开一个文件夹. 一.添加相关头文件 这里头文件主要包含三类:opencv头文件.批量读取文件相关的头文件.CvvImage.这里需要强调CvvImage这个头文件,这个是用来关联OpenCv和picture控件,并且这个头文件是隶属于OpenCv1.x的,在2.x版本中已经将这个类移除,因此需要手动下载这两个文件(CvvImage.h和CvvImage.cpp),下载地址:CvvImage

介绍MFC框架中涉及到的设计模式(二)

接着上一篇<介绍MFC框架中涉及到的设计模式(一)>介绍 单例模式(Singleton Pattern) 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案. 单例模式的要点有三个: 1.某个类只能有一个实例: 2.它必须自行创建这个实例: 3.它必须自行向整个系统提供这个实例. 单例模式典

MFC框架剖析和消息机制

即便是基于MFC的应用程序,建立窗口类也是会遵循如下的过程: 设计窗口类->注册窗口类->生成窗口->显示窗口->更新窗口->消息循环->消息路由到窗口过程函数处理.下面就剖析一下在MFC中是如何完成上述过程的. (1)每个应用程序都有且仅有一个应用类的全局变量theApp,全局变量先于WinMain函数进行处理. (2)WinMain函数体在APPMODUL.CPP文件中,定义如下: extern "C" int WINAPI _tWinMain(