自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (3)
  • 收藏
  • 关注

原创 VS2013/MFC编程入门之二十二(常用控件:按钮控件的编程实例)

上一节VS2013/MFC编程入门教程中讲了按钮控件Button、Radio Button和Check Box的基本用法,本节就继续讲按钮控件的内容,通过一个实例让大家更清楚按钮控件在实际的软件开发中如何使用。       因为Button控件在前面的例子中涉及到了,比较简单,本文就不作深入分析了,而是重点讲解单选按钮Radio Button、复选框Check Box的使用。 

2016-11-30 23:40:17 4032 4

原创 VS2013/MFC编程入门之二十一(常用控件:按钮控件Button、Radio Button和Check Box)

上一节中讲了编辑框的用法,本节继续讲解常用控件--按钮控件的使用。       按钮控件简介       按钮控件包括命令按钮(Button)、单选按钮(Radio Button)和复选框(Check Box)等。命令按钮就是我们前面多次提到的狭义的按钮控件,用来响应用户的鼠标单击操作,进行相应的处理,它可以显示文本也可以嵌入位图。单选按钮使用时,一般是多个组成一组,组中每个单选按

2016-11-30 16:17:29 3618

原创 VS2013/MFC编程入门之二十(常用控件:编辑框Edit Control)

除了静态文本框外,编辑框(Edit Control)同样是一种很常用的控件,本节要讲的是在编辑框中输入并编辑文本。在前面加法计算器的例子中已经演示了编辑框的基本应用。下面具体讲解编辑框的使用。       编辑框的通知消息       编辑框发生某些事件时会向父窗口发送通知消息。在对话框模板中的编辑框上点右键,选择“添加事件处理程序”,为编辑框添加消息处理函数时,可以在“消息类型”

2016-11-30 16:07:41 8941

原创 VS2013/MFC编程入门之十九(常用控件:静态文本框)

从本节开始讲解各种常用控件的用法。MFC中常用控件主要包括:静态文本框、编辑框、单选按钮、复选框、分组框、列表框、组合框、图片控件、列表控件、树形控件和进度条控件等等。本节先来讲解静态文本框的使用。       控件的通知消息       在将静态文本框的使用之前,先大概讲讲控件的通知消息。       当控件有事件发生时,它会向父窗口发送通知消息。最常发生的事件就是鼠标单

2016-11-30 11:02:10 2528

原创 VS2013/MFC编程入门之十八(对话框:颜色对话框)

在上一节中为大家讲解了字体对话框的使用方法,熟悉了字体对话框,本节继续讲另一种通用对话框--颜色对话框。       颜色对话框大家肯定也不陌生,我们可以打开它选择需要的颜色,简单说,它的作用就是用来选择颜色。MFC中提供了CColorDialog类封装了颜色对话框的所有操作,我们可以通过它显示颜色对话框,并获取颜色对话框中选择的颜色。颜色对话框跟字体对话框一样,也是一种模态对话框。

2016-11-30 09:14:44 2717 1

转载 VS2013/MFC编程入门之十七(对话框:字体对话框)

在上一节为大家讲解了文件对话框的使用,本节则主要介绍字体对话框如何应用。       字体对话框的作用是用来选择字体。我们也经常能够见到。MFC使用CFontDialog类封装了字体对话框的所有操作。字体对话框也是一种模态对话框。       CFontDialog类的构造函数       我们先来了解CFontDialog类。它的常用构造函数原型如下:CFontD

2016-11-28 23:14:45 1751

原创 VS2013/MFC编程入门之十六(对话框:文件对话框)

上一讲介绍的是消息对话框,本节讲解文件对话框。       文件对话框的分类      文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统中经常见到这两种文件对话框。例如,很多编辑软件像记事本等都有“打开”选项,选择“打开”后会弹出一个对话框,让我们选择要打开文件的路径,这个对话框就是打开文件对话框;除了“打开”选项一般还会有“另存为”选项,选择“另存为”后

2016-11-27 12:51:03 3551 2

原创 VS2013/MFC编程入门之十五(对话框:消息对话框)

本节讲解Windows系统中最常用最简单的一类对话框--消息对话框。       我们在使用Windows系统的过程中经常会见到消息对话框,提示我们有异常发生或提出询问等。因为在软件开发中经常用到消息对话框,所以MFC提供了两个函数可以直接生成指定风格的消息对话框,而不需要我们在每次使用的时候都要去创建对话框资源和生成对话框类等。这两个函数就是CWnd类的成员函数MessageBox()和

2016-11-27 11:21:16 2382 2

原创 VS2013/MFC编程入门之十四(对话框:一般属性页对话框的创建及显示)

属性页对话框包括向导对话框和一般属性页对话框两类,上一节讲了如何创建并显示向导对话框,本节将继续介绍一般属性页对话框的创建和显示。       实际上,一般属性页对话框的创建和显示过程和向导对话框是很类似的。本文将上一节中的向导对话框进行少量修改,使其成为一般属性页对话框。       一般属性页对话框的创建步骤:       1.创建属性页对话框资源      

2016-11-27 10:42:41 2311

原创 VS2013/MFC编程入门之十三(对话框:向导对话框的创建及显示)

上一讲讲了属性页对话框和相关的两个类CPropertyPage类和CPropertySheet类,对使用属性页对话框做准备。本节将为大家演示如何创建向导对话框。       仍然以前面的“加法计算器”的例子为基础,在其中加入向导对话框,我们可以用它来说明加法计算器的使用方法,一步一步引导用户操作,这也是比较常见的用法。       加法计算器使用时大概可以分为三步:输入被加数、输入

2016-11-26 22:59:58 5331 2

原创 VS2013/MFC编程入门之十二(对话框:属性页对话框及相关类的介绍)

本节开始讲一种特殊的对话框--属性页对话框。       属性页对话框的分类       属性页对话框想必大家并不陌生,XP系统中桌面右键点属性,弹出的就是属性页对话框,它通过标签切换各个页面。另外,我们在创建MFC工程时使用的向导对话框也属于属性页对话框,它通过点击“下一步”等按钮来切换页面。       属性页对话框就是包含一般属性页对话框和向导对话框两类。它将多个对话

2016-11-26 22:23:02 2543 3

原创 VS2013/MFC编程入门之十一(对话框:非模态对话框的创建及显示)

上一节讲了模态对话框及其弹出过程,本节接着讲另一种对话框--非模态对话框的创建及显示。       前面已经说过,非模态对话框显示后,程序其他窗口仍能正常运行,可以响应用户输入,还可以相互切换。本文中将上一讲中创建的Tip模态对话框改为非模态对话框,让大家看下效果。       非模态对话框的对话框资源和对话框类       实际上,模态对话框和非模态对话框在创建对话框资源

2016-11-25 22:22:17 2802 2

原创 VS2013/MFC编程入门之十(对话框:模态对话框及其弹出过程)

这一节讲讲什么是模态对话框和非模态对话框,以及模态对话框怎样弹出。       一.模态对话框和非模态对话框       Windows对话框分为两类:模态对话框和非模态对话框。       模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互。       非模态

2016-11-24 22:59:30 6967 1

原创 VS2013/MFC编程入门之九(对话框:设置对话框控件的Tab顺序)

前面几节为大家演示了加法计算器程序完整的编写过程,本节主要讲对话框上控件的Tab顺序如何调整。       上一讲为“计算”按钮添加了消息处理函数后,加法计算器已经能够进行浮点数的加法运算。但是还有个遗留的小问题,就是对话框控件的Tab顺序问题。       运行加法计算器程序,显示对话框后不进行任何操作,直接按回车,可以看到对话框退出了。这是因为“退出”按钮是Tab顺序为1的控件

2016-11-24 22:39:26 3710 4

原创 VS2013/MFC编程入门之八(对话框:为控件添加消息处理函数)

创建对话框类和添加控件变量在上一讲中已经讲过,这一讲的主要内容是如何为控件添加消息处理函数。       MFC为对话框和控件等定义了诸多消息,我们对它们操作时会触发消息,这些消息最终由消息处理函数处理。比如我们点击按钮时就会产生BN_CLICKED消息,修改编辑框内容时会产生EN_CHANGE消息等。一般为了让某种操作达到效果,我们只需要实现某个消息的消息处理函数。       

2016-11-24 21:09:20 12554 9

原创 VS2013/MFC编程入门之七(对话框:创建对话框类和添加控件变量)

前两讲中为大家讲解了如何创建对话框资源。创建好对话框资源后要做的就是生成对话框类了。再声明下,生成对话框类主要包括新建对话框类、添加控件变量和控件的消息处理函数等。       因为给大家的例程Addition是基于对话框的程序,所以程序自动创建了对话框模板IDD_ADDITION_DIALOG,并自动生成了对话框类CAdditionDlg,它是从CDialogEx类派生的。大家用过VC+

2016-11-23 22:14:45 19114 13

原创 VS2013/MFC编程入门之六(对话框:为对话框添加控件)

创建对话框资源需要创建对话框模板、修改对话框属性、为对话框添加各种控件等步骤,前面一讲中已经讲了创建对话框模板和修改对话框属性,本节继续讲如何为对话框添加控件。       上一讲中创建了一个名为“Addition”的工程,目的是生成一个实现加法运算的应用程序。实现加法计算有几个必要的因素:被加数、加数、和。被加数和加数需要输入,和需要输出显示。那么这几个因素都需要相应的控件来输入或显示,

2016-11-23 17:07:18 20163 2

原创 VS2013/MFC编程入门之五(对话框:创建对话框模板和修改对话框属性)

在上一讲中介绍了MFC的消息映射机制,属于原理方面的知识。对于VC++编程入门学习者来说可能有些抽象,本文会把消息映射的知识渗透到后面的教程中。本节开始为大家讲解偏应用的知识-创建对话框。       对话框,大家应该很熟悉了,在我们常用的软件中大多都有对话框界面,例如,qq的主界面其实就是个对话框,只是它做了很多美工方面的工作,将其大大美化了。       创建对话框主要分两大步

2016-11-23 16:32:18 16779 1

原创 VS2013/MFC编程入门之四(MFC消息映射机制概述)

上一讲为大家简单分析了MFC应用程序框架,这一讲是关于MFC消息映射机制的内容。       前面已经说过,Windows应用程序是消息驱动的。在MFC软件开发中,界面操作或者线程之间通信都会经常用到消息,通过对消息的处理实现相应的操作。比较典型的过程是,用户操作窗口,然后有消息产生,送给窗口的消息处理函数处理,对用户的操作做出响应。       什么是消息       窗

2016-11-23 11:00:32 4576 1

原创 VS2013/MFC编程入门之三(MFC应用程序框架分析)

上一讲讲的是VS2013应用程序工程中文件的组成结构。这一节就为大家分析下MFC应用程序框架的运行流程。       一.SDK应用程序与MFC应用程序运行过程的对比       程序运行都要有入口函数,在之前的C++教程中都是main函数,而Windows应用程序的入口函数是WinMain函数,MFC程序也是从WinMain函数开始的。下面就给出用Windows SDK写的“He

2016-11-23 10:12:39 7567 4

原创 VS2013/MFC编程入门之二(VS2013应用程序工程中文件的组成结构)

在上一讲中为大家演示了如何利用应用程序向导创建单文档应用程序框架。这一节将以上一讲中生成应用程序HelloWorld的文件结构为例,讲解VS2013应用程序工程中文件的组成结构。       用应用程序向导生成框架程序后,我们可以在之前设置的位置下看到以解决方案名命名的文件夹,此文件夹中包含了几个文件和一个以工程名命名的子文件夹,这个子文件夹中又包含了若干个文件和一个res文件夹,创建工程

2016-11-22 22:23:33 5715

原创 VS2013/MFC编程入门之一(利用MFC向导生成单文档应用程序框架)

关于VS2013和MSDN如何安装,网上有很多教程,再次就不在赘述,相信大家都已经安装好了。本次MFC编程全程使用简体中文专业版VS2013 进行操作。这一讲给大家一个简单的例子,演示如何生成单文档应用程序框架。      解决方案与工程      在VS2013的使用介绍中已经讲了解决方案与工程的概念,这里再重提一下。每个应用程序都作为一个工程来处理,它包含了头文件、源文件和资源

2016-11-22 22:11:18 19645 9

转载 C++编程入门系列之五十(异常处理)

关于面向对象设计的重要特性--多态性到上一节纯虚函数和抽象类就讲完了。这一讲是本C++编程入门教程的最后一讲--异常处理。       我们开发的软件一般按照正常的流程操作时运行不会出问题,但是用户不一定会根据软件工程师的想法来操作软件,而且往往随机性很大,另外,软件的运行环境也会改变,例如硬盘空间不足、文件被移走,这些都可能会导致软件出现异常,甚至崩溃。所以我们进行软件开发时要充分考虑异

2016-11-22 16:24:25 356

转载 C++编程入门系列之四十九(多态性:纯虚函数和抽象类)

上一讲中讲了多态性中的重要概念,虚函数。本节主要讲解另一个软件开发中经常用到的多态概念--抽象类。       抽象类可以为某个类族提供统一的操作接口。外部可以透明的使用抽象类的统一接口,而不需要知道到底是调用的抽象类的哪个派生类的成员函数。其实这些也可以通过在基类中定义虚函数来实现,但抽象类跟一般类不同的是,它使用纯虚函数,不需要定义纯虚函数的实现,而且抽象类不能实例化,即不能定义抽象类

2016-11-22 16:07:37 422

转载 C++编程入门系列之四十八(多态性:虚函数)

前一讲的是运算符重载为类的友员函数。今天讲的是属于包含多态的虚函数。       一.虚函数的意义       在讲赋值兼容规则时给出了一个程序例子,其中包含类Base、Child0和Child1。在程序运行结果中我们看到,main函数中Base类型的指针pBase,分别指向Base、Child0和Child1类的对象时调用的show函数都是基类Base的show函数。因为基类类型

2016-11-22 15:52:02 369

转载 C++编程入门系列之四十七(多态性:运算符重载为类的友元函数)

在上一节中讲了运算符重载为类的成员函数的方式和规则,这一节接着讲运算符重载的另一种方式--运算符重载为类的友元函数。       在编程入门系列之二十二--友元中讲到过,友元函数通过类的对象可以访问类的公有、保护和私有成员,也就是类的所有成员友元函数都能访问到。所以运算符重载为类的友元函数以后也可以访问类的所有成员。       与运算符重载为成员函数时不同的是,重载的友元函数不属

2016-11-22 15:27:31 2353

转载 C++编程入门系列之四十六(多态性:运算符重载为类的成员函数)

上一节中讲到了运算符重载的概念和规则,运算符可以重载为类的成员函数或友元函数,这一节就来讲讲运算符怎样重载为类的成员函数。       运算符重载为类的成员函数后就可以像其他成员函数一样访问本类的数据成员了。在类的外部通过类的对象,可以像原运算符的使用方式那样使用重载的运算符,比如,“+”运算符被重载为类A的成员函数后,A的对象a和其他对象b就可以这样进行加法运算:a+b。    

2016-11-21 08:55:13 404

转载 C++编程入门系列之四十五(多态性:运算符重载的概念和规则)

上一节讲了多态性的概念和类型,多态有四种类型:重载多态、强制多态、参数多态和包含多态。这一节主要介绍重载多态中的运算符重载。       一.运算符重载的概念       为什么我们需要运算符重载?因为自定义数据类型有时也需要使用运算符进行某些运算,比如加法运算,但是预定义的运算符的操作数只能是基本数据类型,所以自定义数据类型的运算需要进行运算符重载。例如,有日期类Date声明如下

2016-11-21 08:48:48 330

转载 C++编程入门系列之四十四(多态性:多态的概念和类型)

上一节讲完赋值兼容规则后,编程入门中继承与派生的部分就讲完了。今天开始讲解面向对象设计中的多态性。       先介绍一个概念:消息。消息在C++编程中指的是对类的成员函数的调用。多态就是指相同的消息被不同类型的对象接收会引起不同的操作,直接点讲,就是在不同的情况下调用同名函数时,可能实际调用的并不是同一个函数。       以“+”运算符为例,“+”可以实现整型变量之间、浮点型变

2016-11-21 08:26:07 924

转载 C++编程入门系列之四十三(继承与派生:赋值兼容规则)

上一节讲了虚基类及其派生类的构造函数,本节来讲讲赋值兼容规则。       前面说过,派生类如果是从基类公有继承的,则它会包含基类中除构造函数和析构函数外的所有成员,基类的公有成员也成为派生类的公有成员,又因为对象只能访问类的公有成员,所以基类对象具有的功能,派生类对象都有。这样就引出了赋值兼容规则。       赋值兼容规则就是指在基类对象可以使用的地方都可以用公有派生类对象来代

2016-11-20 22:32:41 339

转载 C++编程入门系列之四十二(继承与派生:虚基类及其派生类的构造函数)

在上一讲中讲了作用域分辨符。今天主要讲解虚基类及其派生类的构造函数。       1.虚基类的概念及用法       上一讲中说过,如果派生类的全部或者部分基类有共同的基类,那么派生类的这些直接基类从上一级基类继承的成员都具有相同的名称,定义了派生类的对象后,同名数据成员就会在内存中有多份拷贝,同名函数也会有多个映射。访问这些同名成员时,为了唯一标识它们可以使用上一讲中的作用域分辨

2016-11-20 21:56:02 531

转载 C++编程入门系列之四十一(继承与派生:作用域分辨符)

在前两节中讲了派生类的构造函数和析构函数,现在来讲讲通过作用域分辨符访问派生类成员的问题。       访问派生类的成员有可见性和唯一性两个问题,我们只能访问到具有唯一性的可见成员。       先说说可见性的问题。如果有两个以上具有包含关系的作用域,外层作用域中的标识符在内层作用域中没有同名标识符则它在内层作用域中也是可见的,但是如果在内层作用域中存在同名标识符则外层的标识符被屏

2016-11-20 10:22:32 390

转载 C++编程入门系列之四十(继承与派生:派生类的析构函数)

在三十九中讲了派生类的构造函数,提到构造函数就不能不说析构函数,这一节主要讲讲派生类析构函数的相关内容。       派生类的析构函数也是在派生类对象释放的时候进行清理工作的。前面说过,派生类无法继承基类的析构函数,所以如果需要的话就要自己定义析构函数。派生类析构函数的定义方式与一般类的析构函数是一样的,也是没有返回类型,没有参数,所以比构造函数需要注意的东西少多了。      

2016-11-20 10:16:24 304

转载 C++编程入门系列之三十九(继承与派生:派生类的构造函数)

派生类通过公有继承、保护继承和私有继承控制对基类成员的访问属性在前两节讲完了。今天讲讲派生类的构造函数。       前面说过,基类的构造函数和析构函数派生类是不能继承的。如果派生类需要对新成员初始化或者进行特定的清理工作,就需要自己定义构造函数和析构函数了。从基类继承的成员的初始化仍可通过基类的构造函数来完成。       我们使用派生类的对象以前需要对它的数据成员进行初始化赋值

2016-11-20 10:00:00 286

转载 C++编程入门系列之三十八(继承与派生:派生类对基类成员的访问控制之保护继承与私有继承)

这一节接着讲剩下的两种继承方式:保护继承和私有继承。       一.保护继承       在保护继承方式中,基类的公有成员和保护成员被派生类继承后变成派生类的保护成员,而基类的私有成员在派生类中不能访问。因为基类的公有成员和保护成员在派生类中都成了保护成员,所以派生类的新增成员可以直接访问基类的公有成员和保护成员,而派生类的对象不能访问它们,上一讲说过,类的对象也是处于类外的,不

2016-11-19 23:11:52 740

转载 C++编程入门系列之三十七(继承与派生:派生类对基类成员的访问控制之公有继承)

上一讲中讲了派生类从基类继承的过程,其中提到了通过继承方式可以控制对从基类继承的成员的访问属性,这一讲主要讲解公有继承方式怎样控制访问属性。       前面说过,派生类从基类继承时有三个步骤,第一个步骤是吸收基类成员,吸收了基类中除构造函数和析构函数之外的所有数据成员和函数成员,第二个步骤就是修改基类成员,包括修改对基类成员的访问属性和覆盖基类成员,第三个步骤是添加新成员。第二个步骤中修

2016-11-19 23:03:37 318

转载 C++编程入门系列之三十六(继承与派生:派生类从基类继承的过程)

上一讲讲了继承与派生的概念和派生类的声明,继承与派生是编程入门的重要内容,是以后进阶的基础。这一讲是关于派生类从基类继承的过程。       在使用上一讲中讲到的声明方式声明派生类之后,再实现派生类的成员函数,这样派生类就算完整了。       根据前面所讲,派生类从基类继承的过程可以分为三个步骤:吸收基类成员、修改基类成员和添加新成员。吸收基类成员就是代码复用的过程,修改基类成员

2016-11-19 22:56:06 549

转载 C++编程入门系列之三十五(继承与派生:概念介绍与派生类的声明)

前面关于数组、指针和字符串的内容鸡啄米讲完了。现在开始将会介绍C++编程入门的一个很重要的知识点--继承与派生。       一.继承与派生的概念       在之前的教程中我们学习了类的抽象性、封装性以及数据的共享等以后,我们就可以对于现实中的问题进行抽象和处理了。但是面向对象设计中代码的复用性和扩展性还没有体现出来。对于某个问题前人已经有了既有成果,我们怎样不做重复性劳动而直接

2016-11-18 22:44:37 491

转载 C++编程入门系列之三十四(数组、指针和字符串:string类)

存放和处理字符串有两种方式,一种是用字符数组,另一种是用C++标准类string。今天就大概讲下string类及其用法。       C++从C语言继承了用字符数组存放字符串的方式,并且可以使用像strcpy等系统函数来处理字符串,但是这种方式大家应该也感觉不是很方便。数据与处理数据的函数分离开也不符合面向对象的设计思想。为此C++提供了处理字符串的string类,其中封装了字符串的一些属

2016-11-18 21:44:34 449

原创 C++编程入门系列之三十三(数组、指针和字符串:用字符数组存放和处理字符串)

上一讲讲了动态内存分配和释放的内容,今天要讲的是字符串,是编程入门必须要掌握牢的内容之一。       字符串是用双引号括起来的字符序列。比如,"China”。字符串常量会在字符序列末尾添加'\0'作为结尾标记。字符串在内存中按照串中字符的排列顺序存放,并在末尾会添加'\0'作为结尾标记。对于ASCII码来说每个字符占一个字节,而对Unicode码来说每个字符占两个字节。本教程只讲ASCI

2016-11-18 21:21:29 861

分数阶傅里叶变换

分数阶Fourier变换是信号在时频平面内坐标轴绕原点逆时针旋转任意角度后构成的分数阶Fourier域上的表示方法,是一种广义的Fourier变换。

2017-12-25

Matlab时频工具箱 tftb-0.2

安装方法: [size=-1] 比如我要添加时频分析工具箱tftb,步骤如下: 1,把tftb文件夹复制到toolbox下,如路径为:[size=-1]D:\Program Files\MATLAB\R2008a\toolbox\tftb-0.2[size=-1]。 2 在matlab命令行输入如下命令: addpath(genpath('D:\Program Files\MATLAB\R2008a\toolbox\tftb-0.2')); 3. savepath保存路径

2016-10-30

Matlab时频工具箱 tftb-0.1

安装方法: [size=-1] 比如我要添加时频分析工具箱tftb,步骤如下: 1,把tftb文件夹复制到toolbox下,如路径为:[size=-1]D:\Program Files\MATLAB\R2008a\toolbox\tftb-0.1[size=-1]。 2 在matlab命令行输入如下命令: addpath(genpath('D:\Program Files\MATLAB\R2008a\toolbox\tftb-0.1')); 3. savepath保存路径

2016-10-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除