MFC编程基础

一、MFC类库简介
        ●微软基础类库( Microsoft Foundation Classes, MFC )是Microsoft公司提供的关于Win32 API的C++类库集,它定义了一个标准的应用程序框架。
        ●借助这个框架,用户可以轻松地开发标准的Windows应用程序。
        ●MFC实现了标准的用户接口,它提供的代码可以管理窗口、菜单、对话框,可以实现基本的输入/输出和数据据存储。
        ●MFC还提供了大量可重用代码,隐藏了程序设计中许多复杂工作,这也是面向对象方法的典型体现。

1.1 MFC类的层次结构

1.2 MFC中常用类

1.根类CObject
        ●Microsoft基本类库中的大多数类都是由CObject类派生而来。
2. MFC应用结构类
        ●MFC应用结构类对大多数应用提供了通用功能,用于构造一个应用的框架,用户可以在框架中添加应用特定的功能。
        ●AppWizard可以产生几种类型的应用,所有这些都以不同的方式使用应用框架。
                (1)应用程序和线程支持类        (2)命令相关类
                (3)文档类                                 (4)文档模板类

3.窗口、对话框和控件类
        (1) CWnd类        (2)框架窗口类        (3)对话框类
        (4)视图类        (5)控件类        (6)控件条类
4.菜单类
5.绘图和打印类
6.简单的数据类型类
7.数组、列表和映射类

8.文件和数据库类
        (1)文件I/O类        (2) DAO类        (3) ODBC类
9. Internet和网络类: Internet和网络类允许与其他使用ISAPI的计算机或一个Windows Socket交换信息。
10. OLE类(Object Linking and Embedding)
11.调试和异常类

12. AFX函数:MFC提供的API全局函数,提供给C++开发Windows应用程序的人员直接调用,函数名均以Afx开头。
1.3 一个简单的Windows MFC应用程序
(1)在File下拉菜单中选择New选项,以建立项目文件。
(2)在弹出的New对话框中,选择Projects选项卡,并选择Win32 Project项,输入创建项目文件名Myapi
(3选择Empty project选项,创建一空项目文件。
(4)点击C++ Files(.cpp)源文件,选择Add添加新建项,以建立新C++源文件。
(5)选择菜单项目-*属性配置属性,选择"在共享DLL中使用MFC"
主窗口类:

#include <afxwin.h>
// MFC头文件
class CMainFrame : public CFrameWnd // 声明主框架(窗口)类
{
public:CMainFrame() // 构造函数中创建主窗口{Create(NULL, "我的窗口", WS_OVERLAPPEDWINDOW, CRect(0, 0, 400, 300));}protected:afx_msg void OnL ButtonDown(UINT nFlags, CPoint point);DECLARE_ESSAGE MAP()
};
// 消息映射入口
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)ON_WM_LBUTTONDOWN()                                                           // 单击鼠标左键消息的映射宏
END_MESSAGE_MAP() 
void CMainFrame::OnL ButtonDown(UINT nFlags, CPoint point) // 定义消息映射函数
{MessageBox("你好,我的Visual C++世界! ", "问候",0);CFrameWnd::OnLButtonDown(nF lags, point);
}

应用程序类:

class CHelloApp : public CWinApp
// 声明应用程序类
{
public:virtual BOOL InitInstance();
};
CHelloApp theApp;
// 建立应用程序类的实例
BOOL CHelloApp::InitInstance() // 每当应用程序首次执行时都要调用的初始化函数
{m_pMainWnd = new CMainFrame();       // 构造函数创建主窗口m_pMainWnd->ShowWindow(m_ nCmdShow); // 显示主窗口m_pMainWnd->UpdateWindow();// 更新主窗口return TRUE;
}

运行结果:

鼠标右键后显示“你好,我的Visual C++世界!”

 二、使用AppWizard开发MFC应用程序

        ●应用程序框架包括了用于生成应用程序所必需的各种面向对象组件。
        ●MFC AppWizard可以帮助程序员创建一个MFC应用程序框架,并且自动生成这个MFC应用程序框架所需要的全部文件。
        ●在此基础上,程序员利用资源管理器和类向导ClassWizard进一步编程,为应用程序添加实现特定功能能的代码,以实现应用程序所要求的功能。

1.生成MFC应用程序框架
例:使用MFC AppWizard生成简单的MFC应用程序。
(1)启动MFC AppWizard :定义项目名称。
在File菜单下选择New,出现New对话框,在模板中选择"MFC应用程序”, 定义项目名称为MyMFC。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/67559.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP ABAP 直接把内表转换成PDF格式(smartform的打印函数输出OTF格式数据)

直接上代码&#xff1a; REPORT zcycle055.DATA: lt_tab TYPE TABLE OF zpps001. DATA: ls_tab TYPE zpps001.ls_tab-werks 1001. ls_tab-gamng 150.00. ls_tab-gstrp 20201202. ls_tab-aufnr 000010000246. ls_tab-auart 标准生产. ls_tab-gltrp 20201205. ls_tab-matn…

首发 | FOSS分布式全闪对象存储系统白皮书

一、 产品概述 1. 当前存储的挑战 随着云计算、物联网、5G、大数据、人工智能等新技术的飞速发展&#xff0c;数据呈现爆发式增长&#xff0c;预计到2025年中国数据量将增长到48.6ZB&#xff0c;超过80%为非结构化数据。 同时&#xff0c;数字经济正在成为我国经济发展的新…

JVM 内存结构快速入门

文章目录 一、简介二、JVM内存区域2.1 方法区2.3.2 永久代和元空间 2.2 堆2.1.2 对象的创建和销毁 2.2 栈内存2.2.1 栈帧的组成和作用2.2.2 栈的特点 2.4 程序计数器2.4.1 程序计数器的作用和使用场景 一、简介 Java 内存模型&#xff08;Java Memory Model&#xff0c;JMM&…

Qt读写Excel--QXlsx编译为静态库2

1、概述&#x1f954; 在使用QXlsx时由于源码文件比较多&#xff0c;如果直接加载进项目里面&#xff0c;会增加每次编译的时间&#xff1b; 直接将源码加载进项目工程中&#xff0c;会导致项目文件非常多&#xff0c;结构变得更加臃肿&#xff1b; 所以在本文中将会将QXlsx编译…

基于docker部署的Selenium Grid分布式自动化测试

01、什么是Selenium Grid Selenium Grid是Selenium套件的一部分&#xff0c;它专门用于并行运行多个测试用例在不同的浏览器、操作系统和机器上。 Selenium Grid有两个版本——老版本Grid 1和新版本Grid 2。我们只对新版本做介绍&#xff0c;因为Selenium团队已经逐渐遗弃老版…

UE5 实现残影效果

文章目录 前言实现效果示例1示例2示例3示例4实现扩展前言 本文采用虚幻5.2.1版本,对角色生成残影效果进行讲解,以一种简单的、通俗易懂的、高性能的方式来实现此效果。此效果可以在角色使用某一技能时触发,比如使用攻击招式、闪现等等。 实现效果 示例1 在昏暗的环境示例…

mysql主从复制搭建(一主一从)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言MySQL复制过程分为三部&#xff1a; 一、准备工作二、配置>主库Master三、配置>从库SlaveSlave_IO_Running: YesSlave_SQL_Running: Yes 四、测试至此&am…

【虫洞攻击检测】使用多层神经网络的移动自组织网络中的虫洞攻击检测研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【Redis实践篇】使用Redisson 优雅实现项目实践过程中的5种场景

文章目录 1.前言2.使用方式1. 添加Redisson依赖&#xff1a;2. 配置Redis连接信息3. 使用场景3.1. 分布式锁3.2. 限流器&#xff08;Rate Limiter&#xff09;3.3. 可过期的对象&#xff08;Expirable Object&#xff09;3.4. 信号量&#xff08;Semaphore&#xff09;3.5. 分布…

一百五十五、Kettle——Linux上安装的kettle9.3连接MySQL数据库

一、目的 kettle9.3在Linux上成功安装后&#xff0c;就建立数据库连接&#xff0c;第一个就是MySQL数据库 二、前提准备 提前准备好MySQL驱动包 &#xff08;一&#xff09;MySQL版本 &#xff08;二&#xff09;注意&#xff1a;由于我的MySQL版本比较高&#xff0c;所以特…

应急响应-钓鱼邮件的处理思路溯源及其反制

0x00 钓鱼邮件的危害 1.窃取用户敏感信息&#xff0c;制作虚假网址&#xff0c;诱导用户输入敏感的账户信息后记录 2.携带病毒木马程序&#xff0c;诱导安装&#xff0c;使电脑中病毒木马等 3.挖矿病毒的传输&#xff0c;勒索病毒的传输等等 0x01 有指纹的钓鱼邮件的溯源处理…

numba 入门示例

一维向量求和&#xff1a; C A B 在有nv 近几年gpu的ubuntu 机器上&#xff0c; 环境预备&#xff1a; conda create -name numba_cuda_python3.10 python3.10 conda activate numba_cuda_python3.10conda install numba conda install cudatoolkit conda install -c nvi…