MFC

MFC实现文本文件的基本操作 几乎每个软件都有"打开"、’'保存"的功能。以“记事本为打开功能”为例,其打开对话画框的界面如下: //截图 其保存对画框,与打开对话框界面基本一样,下面也给程序增加这样的对话框,我们可以使用MFC提供的CFileDialog类来完成; CFileDialg类 CFileDialog类封装了Windows常用的文件对话框。常用的文件对话框提供了一种简单的与Windows标准相一致的文件打开和文件存... 阅读详情

01章 用向导创建文档窗口


MFC教程是小雅最怕写的内容,除了水平问题之外,还有一点就是,MFC将许多程序封装起来,使众多程序员在编程时,即使编出了程序,也不知究竟为什么这样就可以了。这一现象使小雅想到当今的Java程序员,许多人在开发外包项目时,因为整个FrameWork已经建成,自己只是担当其中一部分功能,出了BUG之后,找原因非常困难。

在SDK教程中,小雅将各种功能进行详细解说,而MFC教程中,只是用例子来讲解MFC的原理,学会原理之后,就会感到MFC比SDK编程省了许多事。小雅在SDK教程中,为了讲明API功能,用的方法都是C语言的方法,而MFC用的全是C++的内容,因此,学习MFC必须对C++有较深的了解,不会C语言、C++语言而能够学会MFC的人只能是吹牛。

小雅的“C语言教程”和“C++语言教程”都是按照标准C/C++来写的,在Unix、Linux、Windows都适用,这是很重要的基础。SDK教程主要是让初学者明白WindowsAPI的功能,以及程序的实现方法,基本上是“C语言 + API”,而MFC基本上是“C++ + API”。SDK编程和MFC是可以相互转化,相互调用的,因为MFC封装了绝大部分API,但不是所有的API函数。注意:SDK并不是只能用C语言来写,用C++一样编程,小雅在作教程时为了把内容说清楚,同时兼顾不会C++的人员才使用C语言。

对于初学者,小雅建议在C/C++的基础上用MFC来编程,一是省去了很多编程,二是用上了C++的面向对象编程的思想。当今要找一个C++的项目来一边做一边学是很困难的。小雅自己也一直想找一个C++的工作而未能如愿。通过学习MFC再反过来加强一下学的不是很深的C++,不是很好的一个方法吗?不过,MFC和SDK与C/C++不同点在消息事件处理方面,初学者要学会这一内容。

关于“VC.NET”有“托管”和“非托管”二种编程方式,小雅的SDK教程和MFC教程全部是“非托管”编程,也就是传统编程。微软自己说“托管”方式是为传统编程人员的过渡,既然是过渡的产物,小雅也就不去浪费时间精力去写这种教程了,如果想用“托管”编程,还不如直接用C#或VB.NET。

一、创建一个单文档窗口

MFC编程很大程度上要借助于集成环境中的各种工具,下面我们也通过工具来生成一个基本的窗口程序,再通过这个程序来了解MFC的各主要的类、基本类,学会图标、菜单、资源视图、类视图、解决方案资源管理器、对象浏览器的使用。创建一个单文档窗口的步骤是:

·        用菜单的“文件”→“新建”→“项目”打开“新建项目”对话框。
 

·        在“新建项目”对话框中分别选择设置①类型为“Visual C++ 项目”、②“MFC”、③模板为“MFC应用程序”、④名称为“Test”⑤位置为“C:\MFC”。其中④和⑤可自由设定。最后按“确定”按钮进入“MFC应用程序向导”对话框。 
 

·        在“MFC应用程序向导”对话框中,①选择菜单“应用程序类型”、②选择“单文档”选项。最后按“完成”按钮结束。 
 

二、生成后的文件的作用

生成的文件的作用可以在ReadMe.txt便可知道。当然,后面章节中小雅将对每一部分详细剖析。

================================================================================

    MICROSOFT 基础类库: Test 项目概述

===============================================================================

 

应用程序向导已为您创建了此 Test 应用程序。此应用程序不仅介绍了使用 Microsoft 基

础类的基本知识,而且是编写应用程序的起点。

 

此文件包含组成 Test 应用程序的每个文件的内容摘要。

 

Test.vcproj

    这是使用“应用程序向导”生成的 VC++ 项目的主项目文件。

    它包含有关生成文件的 Visual C++ 版本的信息,以及有关用“应用程序向导”所选择

    的平台、配置和项目功能的信息。

 

Test.h

    这是应用程序的主头文件。  它包含其他项目特定的头文件(包括Resource.h),并声

    明 CTestApp 应用程序类。

 

Test.cpp

    这是包含应用程序类 CTestApp 的主应用程序源文件。

 

Test.rc

    这是程序使用的所有 Microsoft Windows 资源的列表。它包含存储在 RES 子目录中的图

    标、位图和光标。 可直接在 Microsoft Visual C++ 中编辑此文件。 项目资源包含在

    2052 中。

 

res\Test.ico

    这是一个图标文件,用作应用程序的图标。  此图标包含在主资源文件 Test.rc 中。

 

res\Test.rc2

    此文件包含不由 Microsoft Visual C++ 编辑的资源。应将所有不能由资源编辑器编辑的

    资源放在此文件中。

/////////////////////////////////////////////////////////////////////////////

 

对于主框架窗口:

    项目将包含标准的 MFC 界面。

MainFrm.h, MainFrm.cpp

    这些文件包含框架类 CMainFrame,该类派生自 CFrameWnd 并控制所有的 SDI 框架功能。

res\Toolbar.bmp

    此位图文件用于创建工具栏的平铺图像。初始工具栏和状态栏在 CMainFrame 类中构造。

    使用资源编辑器编辑此工具栏位图,并更新 Test.rc 中的 IDR_MAINFRAME TOOLBAR 数组

    以添加工具栏按钮。

/////////////////////////////////////////////////////////////////////////////

 

应用程序向导将创建一种文档类型和一个视图:

 

TestDoc.h、TestDoc.cpp - 文档

    这些文件包含 CTestDoc 类。  编辑这些文件以添加特殊的文档数据并实现文件的保存和

    加载(通过 CTestDoc::Serialize)。

TestView.h、TestView.cpp - 文档视图

    这些文件包含 CTestView 类。

    CTestView 对象用于查看 CTestDoc 对象。

/////////////////////////////////////////////////////////////////////////////

 

其他功能:

 

ActiveX 控件

    应用程序支持使用 ActiveX 控件。

 

打印支持和打印预览支持

    应用程序向导已生成了一些代码,通过从 MFC 库调用 CView 类中的成员函数来处理打印、

    打印设置和打印预览命令。

/////////////////////////////////////////////////////////////////////////////

 

其他标准文件:

 

StdAfx.h、StdAfx.cpp

    这些文件用于生成名为 Test.pch 的预编译头文件(PCH)和名为 StdAfx.obj 的预编译类型

    文件。

 

Resource.h

    这是标准头文件,它定义新资源 ID。

    MicrosoftVisual C++ 将读取并更新此文件。

 

/////////////////////////////////////////////////////////////////////////////

 

其他说明:

 

应用程序向导使用“TODO:” 来指示应添加或自定义的源代码部分。

 

如果应用程序在共享 DLL 中使用 MFC,且应用程序使用的语言不是操作系统的当前语言,则需

要从 Microsoft Visual C++ 光盘上 Win\System 目录下将相应的本地化资源 MFC70XXX.DLL

复制到计算机的 system 或 system32 目录下,并将其重命名为 MFCLOC.DLL。 (“XXX”代表

语言缩写。  例如,MFC70DEU.DLL包含翻译成德语的资源。)  如果不这样做,应用程序的某

些 UI 元素将保留为操作系统的语言。

02章 用向导创建对话框窗口


一、应用程序的窗口种类

Windows应用程序的窗口类型主要有二种即文档类型(Document)和对话框类型(Dialog),通常说的表单类型(Form)是介于这2种类型之间,主要是对话框类型。VB.NET、C#等主要就是这种表单类型的窗口,实现起来相当简单。

文档类型的应用程序的界面,大部分区域用于文字或画图等读写操作,常见的有Word、Excel、写字板等。文档类型的窗口又分单文档和多文档2种类型。所谓多文档类型就是在一个窗口框架内有多个子窗口,常见的有Word、Excel、当前编写VC++的IDE等。单文档类型当然就不可能有多个子窗口了,常见的有附件中的写字板、画图等。文档类型的窗口的编程相对对话框来说要复杂得多,是我们学习的主要对象。

对话框类型的界面中使用了很多控件,输入输出主要是针对控件,常见的有计算器、音量控制等。编程相对比较简单,另外公共对话框也是这种类型,不过不需要任何编程,因为这些是操作系统的东西,只调用就可以了。对话框类型是日常我们编程用的最多的,也就是表单类型。另外,对话框类型也可以象文档类型一样进行文字、画图等处理,而文档类型窗口中同样也可以使用控件。

对于文档窗口一般可以改变大小,并且有滚动条,背景多数为白色。而对话框窗口的大小一般是固定的,背景一般是淡灰色,没有滚动条,通常有OK、Cancel等按钮。要注意,对话框窗口有模态和非模态2种类型。所谓模态对话框就是当前对话框不关闭,就不能切换到调用该对话框的父窗口;而所谓非模态窗口就是不关闭当前对话框,也同样可以切换到调用该对话框的父窗口。绝大多数对话框都是模态方式,非模态方式比较少,例如VC.net集成环境中按Ctrl+F弹出的“查找”对话框就是非模态方式。

二、创建一个基于对话框的窗口

在上一章生成单文档应用程序的最后一步中,选择“基于对话框”后再按“完成”按钮。

 

三、阅读原程序的方法

下面,我们要学会用用四种工具来查看或修改生成好的程序。①解决方案资源管理器(以前称为项目管理器);②类视图;③资源视图;④属性。

  

“解决方案资源管理器”中显示项目中的所有文件,如果要删除一个既存的程序,或添加一个新程序或头文件等,都是利用这个工具来完成。

“资源视图”中包含菜单、鼠标光标、对话框、图标、工具条、字符串常量表、版本信息表、快捷键、HTML等,在“解决方案资源管理器”中鼠标双击后缀为rc的文件便可打开“资源视图”。添加、修改、删除“资源”都是在“资源视图”中操作。

这些“资源”文件其实都是文本文件,内容基本上是资源的定义(图标等除外),完全可以直接手动编写,但手动编写既容易出错,也不方便。另外,对话框的设计还需要和“属性”工具一起使用,这些都是微软Visual Studio集成工具的基本使用常识,MFC教程中不再详细叙述。

“类视图”是学习MFC最重要的工具,小雅认为初学者要学会或者说习惯这个工具的使用。一个很简单的程序,经过MFC生成之后,便是一个“庞大”的程序,初学者如果一行一行地去读,往往头晕目眩,越看越烦。而通过“类视图”从整体上来分析,能很好地把握整个的设计思路,通过“类视图”能很准确地定位到你想编程的“位置”。例如,添加类成员变量或成员函数,消息处理等,利用工具,多个地方的程序将被同进更新。

通过“类视图”还可以很方便地看到父类的全部信息,从而了解当前的类还有哪些功能可以使用。同时可以看到想相关类的全部信息。这比Java的集成环境(如:Websphere等)不知要方便多少倍。

“属性”使用该窗口查看和更改位于编辑器和设计器中的选定对象的设计时属性及事件。也可以使用“属性”窗口编辑和查看文件、项目及解决方案属性。 “属性”窗口显示编辑字段的不同类型,这取决于特定属性的需要。这些编辑字段包括编辑框、下拉列表以及到自定义编辑器对话框的链接。属性以灰色显示且是只读的。

元素

图形

说明

对象名

列出当前选定的一个或多个对象。只有活动编辑器或设计器中的对象可见。当选择多个对象时,只出现所有选定对象的通用属性。

按分类顺序

按类别列出选定对象的所有属性及属性值。可以折叠类别以减少可见属性数。展开或折叠类别时,可以在类别名左边看到加号 (+) 或减号 (-)。类别按字母顺序列出。

按字母顺序

1.4 单文档MFC应用程序实例 对话框应用程序使用简洁高效,所以被广泛的使用。对话框在默认情况下缺少状态栏、工具栏等界面元素,不能算作是“完整”的Windows应用程序。而单文档界面,可以看作是“标准”的Windows应用程序界面。1.4.1 技术要点: MFC的单文档应用程序结构的一大特点是数据和界面分离,在单文档应用程序中,程序中数据的保存、加载和处理等功能由CDocument完成,而数据的显示由CView来完成。这种结构又被 阅读详情

相关推荐

MFC有三个选项:MFC ActiveX控件、MFC应用程序、MFC DLL,如何选择?

标准控件:这些是由操作系统或开发框架预定义的控件,如按钮、文本框等。它们通常是现成的,可以直接使用并提供基本的用户界面功能。自定义控件:这些是开发人员根据特定需求创建的控件,可以扩展标准控件的功能或提供全新的功能和外观。MFC ActiveX控件:选择这个选项如果您需要创建一个可嵌入到其他应用程序中的控件。MFC应用程序:选择这个选项如果您需要创建一个独立的Windows桌面应用程序。MFC DLL:选择这个选项如果您需要创建一个动态链接库以便其他应用程序调用,或者实现插件功能。

深耕CV 2756

MFC_1、第一个MFC工程

写在前面的话 老规矩,每篇博客开头前乱扯几句。好长时间没有写博客了,最近有点闲时间,就接着写一些东西吧。我之前以为自己用心写的一些东西好像没有什么人看,这段时间陆陆续续有人加我QQ详细问一些东西,我才发现优快云原来是非常的有魅力。所以,就有了接着写下去的动力了。请各位道友也能坚持下去,相互学习,相互进步。 好了,言归正传,之前写的很多代码都是在黑框中跑的,可能很多小伙...

吾理小子的博客 3987

MFC之MFC的初始化过程

当你创建好一个MFC程序时,你可能要去找程序的入口,然后各种编辑,各种搞。若你是第一次接触MFC,则会发现怎么也找不到WinMain函数或main函数,一个程序不可能没有程序入口的,这就是接下来要讲的MFC初始化过程。 MFC将WinMain函数封装起来了,还做了一系列的初始化过程。 MFC的组成(MFC的初始化过程): 1.必须有一个CwinApp的派生类 2.必须用派生类在全局定义一个

XGamer 6627

MFC 打开并显示文本文件的例子-文档视图模型

mfc-文档视图范例。内容:MFC 打开并显示文本文件的例子-文档视图模型。

锐捷交换机堆叠配置举例

一、组网需求: 1)四台S2628G进行堆叠; 2)设备在堆叠前先设置好优先级; 3)使用光口堆叠的设备如RG-S2928G-E相关配置 二、组网拓扑 三、配置要点: 普通堆叠设备不需要配置,只要把堆叠模块和线缆连接好即可 堆叠模块不支持热插拔,即插在模块连上线缆后不能立即生效,需要重启设备才生效。 如果拔掉堆叠插槽后,想再插上模块堆叠,那么必须重启设备才生效 设备堆叠需要协商参数,时间会比较久,请耐心等待 堆叠时设备建议是...

dongsheng_9234的专栏 8283

BambuStudio学习笔记:GCode 类

关键成员解析 核心配置组件 状态跟踪系统 功能模块集成 核心方法剖析 主输出管道 实现多阶段处理: 分层处理流程: 实现智能路径规划: 关键特性: 实现模板故障检测: 采用三级流水线: 支持扩展类型: 实现多通道输出: 采用: 实现: 支持: 支持模块化编译: 典型流程: 实现功能:

zzzkk2009的专栏 927

2-6-1-1 QNX编程入门之进程和线程(一)

文章围绕进程和线程展开介绍。先是将进程类比为房子,线程类比为居住者,阐述其基本概念,如进程占用内存,线程可共享内存。接着讲解同步相关内容,介绍了互斥,线程通过互斥锁来控制对特定资源的访问,像使用浴室一样。还提到优先级,线程按优先级和等待时长来决定获取资源顺序。此外,说明了信号量,以厨房为例,区分计数为 1 和大于 1 的信号情况,且指出信号量可当互斥锁用,但互斥锁是特殊用途信号量,二者存在区别,最后提及后续会介绍其他同步机制。

星原飞火的博客 1323

315、弱电基础知识介绍

常见的弱电系统包括:闭路电视监控系统、防盗报警系统、门禁系统、电子巡更系统、停车场管理系统、可视对讲系统、家庭智能化系统及安防系统、背景音乐系 统、LED显示系统、等离子拼接屏系统、DLP大屏系统、三表抄送系统、楼宇自控系统、防雷与接地系统、寻呼对讲及专业对讲系统、弱电管道系统、UPS不 间断电源系统、机房系统、综合布线系统、计算机局域网系统、物业管理系统、多功能会议室系统、有线电视系统、卫星电视系统、卫星通讯系统、消防系统、电话 通讯系统、酒店管理系统、视频点播系统、人力资源管理系统等等。

qq_43416206的博客 1364

使用ChatGPT工具阅读文献的实战教程

本文介绍核心内容为使用ChatGPT工具阅读文献,希望对学习和使用ChatGPT的同学们有所帮助。为了兼顾质量和速度,本专栏的更新频率为一周一到两更。 文章目录 1. 前言 2. 实战教程 2.1 下载工具并登录 2.2 提取文献中的关键信息

herosunly的博客 15万+

Scale-up,scale-out技术概述

本文系统分析了Scale-up与Scale-out两种扩展技术在现代计算中的应用与发展。Scale-up通过增强单节点性能,适用于高耦合任务,而Scale-out通过横向扩展节点,实现高可用性和无限扩展。在芯片层面,Chiplet技术推动Scale-up发展;在数据中心层面,二者协同工作构建强大集群。光模块在长距离高带宽传输中发挥关键作用。文章对比了NVIDIA、AMD和Broadcom三家公司的技术路线,指出NVIDIA采用封闭生态,AMD选择开放标准,Broadcom则主导底层连接技术。未来发展方向将聚

元直的博客 1445

在 ABAP 平台上搭建 OAuth 2.0 Server:架构、流程、权限与落地实战

摘要:本文为SAP ABAP开发人员提供将ABAP平台配置为OAuth 2.0授权服务器的实战指南。重点介绍两种授权流程(授权码和SAML Bearer)的实现方案,包括核心事务配置(SOAUTH2/SAML2)、授权对象(S_SCOPE)管理以及端点交互规范。通过具体配置清单和三类典型集成场景(第三方Web应用访问OData、企业集成平台调用、BTP应用对接)的落地示例,帮助读者快速构建安全的OAuth 2.0服务架构。文档强调SSL/TLS基础安全、scope最小授权原则以及授权与令牌端点的标准交互模式

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 307

【webrtc】openh264编码:动态配置码控参数触发IDR编码

SetRates 下发RateControlParameters 给到openh264 编码器 void SetRates(const RateControlParameters& parameters) override; LayerConfig 编码器这边的配置是layerconfig,具体到层的: std::vector<LayerConfig> configurations_; void H264EncoderImpl::SetRates(const RateCo.

突围 723

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: vc
下一篇: 菜单
MagichenLL
博客等级 码龄17年 1粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值