MFC编程基础

news2024/10/6 10:39:16

一、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.coloradmin.cn/o/879648.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文简介】PP-OCRv1-v4中文字符识别论文概述

相关论文 2009.PP-OCR: A Practical Ultra Lightweight OCR System 2109.PP-OCRv2: Bag of Tricks for Ultra Lightweight OCR System 2206.PP-OCRv3: More Attempts for the Improvement of Ultra Lightweight OCR System 2308.PP-OCRv4&#xff1a;目前代码已发布&#xff08…

【计算机视觉|生成对抗】带条件的对抗网络进行图像到图像的转换(pix2pix)

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;Image-to-Image Translation with Conditional Adversarial Networks 链接&#xff1a;Image-to-Image Translation with Conditional Adversarial Networks | IEEE Conference Publicati…

EnableAutoConfiguration Attributes should be specified via @SpringBootApplic

在排除数据源加载时&#xff0c;发现这个注解EnableAutoConfiguration(exclude{DataSourceAutoConfiguration.class})会飘红 这是因为在SpringBootApplication中已经有EnableAutoConfiguration注解了&#xff1b; 所以把它改写成以下的格式即可

c# 异步进阶———— paralel

前言 简单整理一下paralel&#xff0c;以上是并行的意思。 正文 我们在工作中常常使用task await 和 async&#xff0c;也就是将线程池进行了封装&#xff0c;那么还有一些更高级的应用。 是对task的封装&#xff0c;那么来看下paralel。 static void Main(string[] args)…

猿辅导Motiff与IXDC达成战略合作,将在UI设计领域推动AI革新更多可能性

近日&#xff0c;“IXDC 2023国际体验设计大会”在北京国家会议中心拉开序幕&#xff0c;3000设计师、1000企业、200全球商业领袖&#xff0c;共襄为期5天的用户体验创新盛会。据了解&#xff0c;此次大会是以“设计领导力”为主题&#xff0c;分享全球设计、科技、商业的前沿趋…

如何手动创建可信任证书DB并配置 nss-config-dir

以阿里云免费邮箱为例 1. 如何下载证书链 证书链说明 使用 gnutls gnutls-cli --print-cert smtp.aliyun.com:465 < /dev/null > aliyun-chain.certs使用 openssl showcerts $ echo -n | openssl s_client -showcerts -connect smtp.aliyun.com:465 | sed -ne /-BE…

PHP8的字符串操作2-PHP8知识详解

今日继续分享《php8的字符串操作》昨天一天都没有写多少&#xff0c;内容多&#xff0c;今天继续&#xff1a; 昨天分享的是1、使用trim()、rtrim()和ltrim()函数去除字符串首尾空格和特殊字符。2、使用strlen()函数和mb_strlen()函数获取字符串的长度。 3、截取字符串 PHP对…

基于强化学习的自动化裁剪CIFAR-10 分类任务(提升模型精度+减少计算量)

基于强化学习的自动化裁剪&#xff0c;提升模型精度的同时减少计算量。 介绍 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RFnHlyQG-1691544546106)(./pic/APT-main.png)] 目前的强化学习工作很多集中在利用外部环境的反馈训练agent&#xff0c…

大数据:什么是数据分析及环境搭建

一、什么是数据分析 当今世界对信息技术的依赖程度在不断加深&#xff0c;每天都会有大量的数据产生&#xff0c;我们经常会感到数据越来越多&#xff0c;但是要从中发现有价值的信息却越来越难。这里所说的信息&#xff0c;可以理解为对数据集处理之后的结果&#xff0c;是从…

【Sklearn】基于逻辑回归算法的数据分类预测(Excel可直接替换数据)

【Sklearn】基于逻辑回归算法的数据分类预测&#xff08;Excel可直接替换数据&#xff09; 1.模型原理2.模型参数3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果 1.模型原理 逻辑回归是一种用于二分类问题的统计学习方法&#xff0c;尽管名字中含有“回归”&#xff0c…

ORCA优化器浅析——IMDRelation Storage type of a relation GP6与GP7对比

如上图所示IMDRelation作为Interface for relations in the metadata cache&#xff0c;其定义了Storage type of a relation表的存储类型&#xff0c;如下所示&#xff1a; enum Erelstoragetype {ErelstorageHeap,ErelstorageAppendOnlyCols,ErelstorageAppendOnlyRows,Erels…

如何使用CSS实现一个模态框(Modal)效果?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用CSS实现模态框&#xff08;Modal&#xff09;效果⭐ HTML 结构⭐ CSS 样式⭐ JavaScript⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎…

重磅:谷歌发布多平台应用 AI 编程神器

前几天&#xff0c; 谷歌发布了一个多平台应用开发神器&#xff1a;IDX 。 IDX 背靠 AI 编程神器 Codey&#xff0c;支持 React、Vue 等框架&#xff0c;还能补全、解释代码。 更有特色的一点就是&#xff1a;这是一款基于浏览器的开发全栈、用于多平台应用开发的工具。 这款开…

C语言题目的多种解法分享 2之字符串左旋和补充题

前言 有的时候&#xff0c;这个系列专栏中的解法之间并无优劣&#xff0c;只是给大家提供不同的解题思路 我决定将代码实现的过程写成注释&#xff0c;方便大家直接找到对应的函数&#xff0c;只有需要补充说明的知识才会单拿出来强调 这个系列的文章会更的比较慢&#xff0…

级联(数据字典)

二级级联&#xff1a; 一&#xff1a;新建两个Bean 父级&#xff1a; /*** Description 数据字典* Author WangKun* Date 2023/7/25 10:15* Version*/ Data AllArgsConstructor NoArgsConstructor TableName("HW_DICT_KEY") public class DictKey implements Seri…

学习笔记整理-JS-06-函数

一、函数基本使用 1. 什么是函数 函数就是语句的封装&#xff0c;可以让这些代码方便地被复用。函数具有"一次定义&#xff0c;多次调用"的优点。使用函数&#xff0c;可以简化代码&#xff0c;让代码更具有可读性。 2. 函数的定义和调用 和变量类似&#xff0c;函…

C++:模拟实现list及迭代器类模板优化方法

文章目录 迭代器模拟实现 本篇模拟实现简单的list和一些其他注意的点 迭代器 如下所示是利用拷贝构造将一个链表中的数据挪动到另外一个链表中&#xff0c;构造两个相同的链表 list(const list<T>& lt) {emptyinit();for (auto e : lt){push_back(e);} }void test_…

【ES】【elasticsearch】分布式搜索

文章目录 ☀️安装elasticsearch☀️1.部署单点es&#x1f338;1.1.创建网络&#x1f338;1.2.下载镜像&#x1f338;1.3.运行 ☀️2.部署kibana&#x1f338;2.1.部署&#x1f338;2.2.DevTools ☀️3.安装IK分词器&#x1f338;3.1.在线安装ik插件&#xff08;较慢&#xff0…

ARM汇编快速入门

本文主要分享如何快速上手ARM汇编开发的经验、汇编开发中常见的Bug以及Debug方法、用的Convolution Dephtwise算子的汇编实现相对于C版本的加速效果三方面内容。 前言 神经网络模型能够在移动端实现快速推理离不开高性能算子&#xff0c;直接使用ARM汇编指令来进行算子开发无疑…

ad+硬件每日学习十个知识点(32)23.8.12 (元器件封装、PCB封装、3D的PCB封装)

文章目录 1.元器件封装属性值说明2.PCB封装标准说明&#xff08;M、N、L&#xff09;3.电阻的PCB封装&#xff08;阻焊层&#xff09;4.电感的PCB封装&#xff08;CD、CDRH&#xff09;1.CD31的意思是&#xff0c;直径3mm&#xff0c;高度1mm![在这里插入图片描述](https://img…