如何创建一个MFC项目

  1. 选择 MFC 应用程序进行创建,不要使用非英文名  

  2. 选择对话框风格进行编写

  3. 可以通过自定义的设置修改类名

MFC 的基本知识

  • MFC 是纯面向对象的编程,是 SDK 经过 C++ 封装产生

  • MFC 是装了 SDK 大部分的函数,简化了操作,同时保留了原函数(::)

  • MFC 入口函数的定义

    • MFC 的入口函数同样是 WinMain,但是被封装起来了

    • 需要定义一个继承自 CWinApp 的类,并定义一个唯一的全局对象重写 InitInstance 函数

      • InitInstance 扮演的就是用户代码入口点的角色,通常在这里弹出窗口

  • 通过空项目如何创建一个MFC程序

    1. 设置子系统为 GUI,设置MFC的使用方式(静态 \ 共享的)

    2. 包含一些必要的头文件,afxwin.h 是必不可少的

    3. 自己编写一个继承自 CWinApp 的类并重写其中的 InitInstance 作为入口函数

    4. 定义唯一的一个 CMyWinApp 类的全局对象

// 1. 项目属性 -> 链接器 -> 系统 -> 子系统 -> GUI
//   项目属性 -> 常规 -> MFC的使用 -> dll\lib

// 2. 包含必须的头文件 afxwin
#include <afxwin.h>
#include "resource.h"
#include <afxdialogex.h>

// 3. 定义自己的类并且必须继承自 CWinApp
class CMyWinApp : public CWinApp
{
// 5. 必须重写一个虚函数用于充当用户代码的入口
//   应该在其中进行初始化和编写窗口或对话框的操作
virtual BOOL InitInstance() override
{
// 使用 m_pMainWnd 指定当前的主窗口
// 可以使用全局函数 AfxGetMainWnd() 获取到主窗口

// 5.1 创建一个模态对话框对象
CDialog Dialog(IDD_DIALOG1);
this->m_pMainWnd = &Dialog;
    //需要用到头文件<afxdialogex.h>
Dialog.DoModal();

// 5.2 创建一个非模态的对话框
CDialog* pDialog = new CDialog;
this->m_pMainWnd = pDialog;
pDialog->Create(IDD_DIALOG1);
pDialog->ShowWindow(SW_NORMAL);

// 通过对象的 m_hWnd 可以找到它的句柄

return TRUE;
}
};

// 4. 在全局控件创建唯一的 CMyWinApp 对象
CMyWinApp theApp;


// 定义一个继承自 CWinApp 的类,并重写其中的 InitInstance 虚函数
// 最后在全局范围内定义唯一的一个 CMyWinApp 的对象

MFC_1.1 基本知识的更多相关文章

  1. 你必须知道的EF知识和经验

    注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式. 推荐MiniProfiler插件 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,不过随之带来的 ...

  2. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  3. 学点HTTP知识

    不学无术 又一次感觉到不学无术,被人一问Http知识尽然一点也没答上来,丢人丢到家了啊.平时也看许多的技术文章,为什么到了关键时刻就答不上来呢? 确实发现一个问题,光看是没有用的,需要实践.看别人说的 ...

  4. java中的字符串相关知识整理

    字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...

  5. [C#] C# 知识回顾 - 你真的懂异常(Exception)吗?

    你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...

  6. [C#] C# 知识回顾 - 学会处理异常

    学会处理异常 你可以使用 try 块来对你觉得可能会出现异常的代码进行分区. 其中,与之关联的 catch 块可用于处理任何异常情况. 一个包含代码的 finally 块,无论 try 块中是否在运行 ...

  7. [C#] C# 知识回顾 - 学会使用异常

    学会使用异常 在 C# 中,程序中在运行时出现的错误,会不断在程序中进行传播,这种机制称为“异常”. 异常通常由错误的代码引发,并由能够更正错误的代码进行 catch. 异常可由 .NET 的 CLR ...

  8. [C#] C# 知识回顾 - 异常介绍

    异常介绍 我们平时在写程序时,无意中(或技术不够),而导致程序运行时出现意外(或异常),对于这个问题, C# 有专门的异常处理程序. 异常处理所涉及到的关键字有 try.catch 和 finally ...

  9. [.NET] C# 知识回顾 - Event 事件

    C# 知识回顾 - Event 事件 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6060297.html 序 昨天,通过<C# 知识回顾 - ...

随机推荐

  1. mac 终端经常使用命令(三)

    基本命令 1.列出文件 ls 參数 文件夹名        例: 看看驱动文件夹下有什么:ls /System/Library/Extensions 參数 -w 显示中文,-l 具体信息. -a 包含 ...

  2. python爬虫【第2篇】【多进程】

    一.多进程 1.fork方法(os模块,适用于Lunix系统) fork方法:调用1次,返回2次.原因:操作系统经当前进程(父进程)复制出一份进程(子进程),两个进程几乎完全相同,fork方法分别在父 ...

  3. NSSet所有API学习。

    /****************集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址.只是NSArray是有序的集合,NSSet是无序的集合,同一时候NSSet能够保证数据 ...

  4. [办公自动化]凭证纸打印 IE 默认设置

    财务人员需要打印凭证纸,系统windows7,打印机HP P1106 在自定义纸张类型中设置凭证纸. 属性,打印首选项,“纸张和质量”选卡处,单击自定义(需要管理员权限) 输入“PZ” 宽148 高2 ...

  5. 后台发送http请求通用方法,包括get和post

    package com.examsafety.service.sh; import java.io.BufferedReader; import java.io.IOException; import ...

  6. 报表应用系列——图表JFreeChart: 第 4 章 折线图

    双击代码全选 1 2 3 4 5 DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100 ...

  7. sublime —— 强大的插件

    1. 代码 自动补全与智能提示: All Autocomplete:Sublime Text 默认的 Autocomplete 功能只考虑当前的文件,而 All Autocomplete 插件会搜索所 ...

  8. 关于mysql的索引原理与慢查询优化

    大多情况下我们都知道加索引能提高查询效率,但是应该如何加索引呢?索引的顺序如何呢? 大家看一下下面的sql语句(在没有看下面的优化的方法之前)应该如何优化加索引以及优化sql语句: 1.select  ...

  9. 【转载】7条便利的ViewState技巧

    32.Seven handy ViewState tips 32.7条便利的ViewState技巧 Every time I have to deal with a classic ASP.NET W ...

  10. PCB .NET Reactor 加密工具(NecroBit加密技术)

    在PCB行业中,我们使用的软件或脚本绝大多数都用非编译型语言写程序,而从一开始选择这种编程语言,就注定了程序的源码有被曝露风险.我们PCB工程系统用.NET语言编写,C#编译后会被转换为IL代码的中间 ...