自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (6)
  • 收藏
  • 关注

原创 Qt应用———Qt Style sheets样式表(2)

2、style sheet句法(the Style Sheet Syntax)Qt Style Sheet的术语和句法规则几乎与HTML CSS的完全一样。如果你已经了解CSS,你可以快速浏览这一章内容。Style RulesStyle Sheets(样式表)是由一系列的style语句规则构成的。一条style语句由一个选择语句和一个声明语句构成。选择语句指明了哪一个控件被这条语句影响...

2019-09-12 14:27:19 273

原创 Qt应用———Qt Style sheets样式表(1)

Qt的界面设计,难以绕过的一个知识点就是样式表。经过一番摸索应用开发,经过几个项目程序的经验之后,让我又返回头重新仔细研究一下Qt Style Sheets样式表。用样式表可以实现很多好看的UI界面,功能非常强大。而浏览了网络上许多人的分享和总结之后,发现各个知识点比较琐碎,而要系统的学习一下样式表的知识,最好的地方还是Qt帮助文件。所以我花了几天的时间一边阅读研究Qt Style Sheets文...

2019-09-12 14:25:36 632 1

原创 c++基础知识总结——const限定符的使用

使用目的及优点:(1)如果在程序中多个地方使用同一个常量,则需要修改这个常量时,不用每一个使用的地方都修改,只需在定义的地方修改即可。比如:在头文件中声明一个表明一年中月份数的符号常量:const int Month = 12;这样,在以后程序中用到12这个月份数的时候都可以用Month来代替,假如项目需要月份数变为13了,那么不需要一个地方一个地方的去将12改为13,只需要修...

2019-08-27 13:31:12 275

原创 MFC之路 串口通信篇(之三)

上一节中我们完成了串口监听线程的创建和线程响应函数的创建,在线程响应函数中,有这样一条语句:if(ComStat.cbInQue) //如果有数据到达 {// AfxMessageBox("receive"); pDlg->ProcessCOMMNotification(EV_RXCHAR,0); }从上面的语句知道,当监听线程检测到有数据到达读缓冲区时,调用Pro

2017-07-28 14:51:46 4320 1

原创 MFC之路 串口通信篇(之二)

在前面一个章节的文章中,我们对串口进行了打开和参数的设置,接下来我们需要创建一个新的线程完成对串口的数据监听功能。

2017-07-28 11:30:20 2137

原创 MFC之路 第二节 串口通信篇

因为我自己正好也在为项目写一个控制软件,所以自己做到哪就写到哪吧。项目中软件与下位机之间通过232串口进行数据通信,所以今天打算实现串口通信的相关功能,那么就随着我一步一步地来完成串口通信功能吧。为了全面的学习串口通信的各种功能,我们一起完成一个常用的串口通信助手软件。

2017-07-27 16:09:13 4256 1

原创 MFC软件设计经验分享

第一节  MFC软件开发界面设计的探索之路之前因为项目的需要,需要为仪器设备开发上位机控制软件,经过一番调查权衡之后最终决定采用C++语言进行软件的开发工作,并最终决定采用MFC基础类库实施软件的编写。首先,自己学习了MFC的相关知识,主要入门参考的资料有孙鑫的MFC教学视频和侯俊杰的《深入浅出MFC》。通过对这两个经典教材的学习,可以对MFC的整体框架和机理有个大概的了解,直白的说,看完视频

2017-07-26 11:35:38 2034

原创 SQL Server数据库系列——锁和并发

最近在使用数据库,综合各方面原因,选择了SQL Server2008.为了对使用的工具有更加深入的了解,所以仔细地阅读了经典翻译书籍《SQL Server 2008高级程序设计》,在此将读书过程中的感想和理解记录下来,以备以后查询温习,也希望对其他使用SQL Sercer的小伙伴们有启发帮助。

2016-07-20 20:36:26 4601

原创 学习笔记之深入浅出MFC 第9章 仿真MFC之二

RTTI(执行期类型识别)在前面章节中我们介绍过Visual C++4.0支持RTTI,重点不外乎是:1、编译时需选用/GR(/GR的意思是enable C++ RTTI)2、包含typeinfo.h3、使用新的typeid运算符。其实,MFC在编译器支持RTTI之前,就有了这项能力。我们现在要以相同的手法,在Console程序中仿真出来。我希望我的类库具备IsKindOf的能

2016-05-08 11:36:15 571

原创 C++学习笔记之九 循环和关系表达式

关于各种循环语句,大家应该很熟悉了。凡是学习过C语言的或者有过编程经验的朋友都能熟练的应用循环语句了,所以,本章中我们就不仔细的介绍各种语法。快速浏览过去,就其中一些不常见的或者以前疏漏的知识点进行整理总结。1、基于范围的for循环(C++11)在C++11中,新增加了一种循环:基于范围的for循环。这简化了一种常见的循环任务:对数组(或容器类,如vector和array)的每个元素执行相

2016-05-07 11:02:37 478

原创 学习笔记之深入浅出MFC 第9章 仿真MFC 之一

在文章开始是我们的观点就强调过了,要想用好一个工具,就必须深入了解这个工具的工作原理。而仿真,正是最好的方法。如何仿真呢?我们在console程序中仿真MFC,这样可以把程序结构的负荷降到最低。作者在仿真中的原则是:简化再简化,简化到不能再简化。请注意,以下所有程序的类层次结构、类名称、变量名称、结构名称、函数名称、函数内容,都以MFC为仿真对象,具体而微。在档案的安排上,作者把仿真MFC

2016-05-06 09:27:58 709

原创 C++Primer Plus第6版 4.13编程练习答案

1、答案:#include #include int main(){using namespace std;char* fname = new char[10];char* lname = new char[6];char grade;int age;coutcin.getline(fname,10);coutcin.getline(ln

2016-05-05 11:10:44 483

原创 C++学习笔记之八 复合类型---数组的替代品vector和array

本节介绍一下数组的替代品---模板类vector和arrey。1、模板类vector模板类vector类似与string类,也是一种动态数组。您可以在运行阶段设置vector对象的长度,可在末尾附加新数据,还可以在中间插入新数据。基本上,它是使用new创建动态数组的替代品。实际上vector类确实使用new和delete来管理内存,但这种工作是自动完成的。vector的使用方法:首

2016-05-05 09:01:24 949

原创 学习笔记之深入浅出MFC 第8章 C++重要性质---Template

到底什么是template? 其重要性如何呢?下面我们先来了解一下这个在C++中很重要的性质。很多时候,我们会碰到这样一种情况,一个函数或一段代码相同,但是我们使用的数据类型不同,那么我们经常需要复制一段既有的代码。举个例子,假设你写一个绘图函数,使用整数x,y坐标;突然之间你需要相同的程序代码,但坐标值改采用long。你当然可以使用一个文字编辑器把这段代码拷贝一份,然后把其中的数据类型改变过

2016-05-04 09:46:57 721

原创 学习笔记之深入浅出MFC 第8章 C++重要性质---异常处理(Exception Handing)

异常情况(Exception)是一个颇为新鲜的C++语言特性,可以帮助你管理执行期的错误,特别是那些发生在多层嵌套函数调用中的错误。现在C++编译器必须支持异常处理情况。C++的exception可以从多层嵌套的例程调用中直接以一条快捷方式撤回到异常情况处理例程(exception handler),这种“错误管理方式”远比结构化程序中经过层层的例程传回一系列的错误状态来得好。事实上,exce

2016-05-04 08:47:53 613

原创 C++学习笔记之八 复合类型---指针、数组和指针运算

指针和数组基本等价的原因在于指针算术和C++内部处理数组的方式。将整数变量加1后,其值将增加1;但将指针变量加1后,增加的量等于它指向的类型的字节数。比如,将指向double的指针加1后,如果系统对double使用8个字节存储,则数值将增加8;将指向short的指针加1后,如果系统对short使用2个字节存储,则指针值将增加2。

2016-05-03 15:30:43 508

原创 学习笔记之深入浅出MFC 第8章 C++重要性质--- 执行期类型信息(RTTI)

关于执行期类型信息,可能大多数朋友比较陌生,确实我们在平时的编程过程中很少使用,那么所谓的执行期类型信息到底是什么呢?其实说穿了也很简单,单单从名称上已经说的很清楚了。就是在程序执行过程中知道某个对象是属于哪一种类型。执行期类型信息(Runtime Type  Information,RTTI)在较先进的编译器(如Visual C++4.0)之后都广泛支持。下面还是用一段代码来说明一下:

2016-05-03 08:28:54 459

原创 学习笔记之深入浅出MFC 第8章 C++重要性质---构造函数与析构函数

C++的new云算子和C的malloc函数都是用于配置内存的,但是前者比之后者的优点是,new不但配置对象所需要的内存空间,同时会引发构造函数的执行。所谓的构造函数(constructor),就是对象诞生后第一个执行(并且自动执行)的函数,它的函数名称必定要与类名称相同。

2016-05-02 21:17:14 1044

原创 学习笔记之深入浅出MFC 第8章 C++重要特性----静态变量(static)

静态成员(变量和函数)静态成员变量或函数有什么用呢?前面我们讲了类及类成员,一般类是指抽象的特性,必须对象化(实例化)之后才能进行操作。那么,假如类的某一个变量都是一样的值,没必要一个对象一个对象的设置呢?我们可不可以直接对类操作一下,从而避免了去设置每一个对象里的此变量呢?当然有,方法就是这一节要讲的静态变量。举个例子,假如有一个类,专门用来处理存款帐户,它至少应该要有存户的姓名、地址、

2016-05-02 19:57:09 2186

原创 C++学习笔记之八 复合类型---指针和自由存储空间

计算机程序在存储数据时必须跟踪3种基本属性:信息存储的何处、存储的值为多少以及存储的信息是什么类型。我们使用过一种策略来达到上述目的:定义一个简单变量。声明语句指出了值的类型和符号名,还让程序为值分配内存,并在内部跟踪该内存单元。这一节我们介绍另一种策略,这种策略以指针为基础,指针是一个变量,其存储的是值的地址,而不是值本身。

2016-04-29 14:50:36 545

原创 学习笔记之深入浅出MFC 第8章 C++重要特性---类与对象大解剖(虚拟函数的实现方式)

在上面几节讲到虚拟函数和多态的时候,我们只是提到虚拟函数就是在函数前面加上virtual,然后就能实现指针对子类函数的调用。但是,本着我们开始时的原则,知其然还要知其所以然,所以,我觉得很有必要探讨一下C++编译器对于虚拟函数的实现方式,这样我们就能够知道为什么虚拟函数可以做到动态绑定。为了达到动态绑定的目的,C++编译器通过某个表格,在执行期间“间接”调用实际上欲绑定的函数。这样的表格称为“

2016-04-29 10:09:37 450

原创 C++学习笔记之七 复合类型---枚举

C++的enum工具提供了另一种创建符号常量的方式,这种方式可以代替const。使用enum的句法与使用结构相似,例如:enum spectrum { red,  orange , yellow,  green, blue,  violet,  indigo  ,ultraviolet};这条语句有两个含义:(1)、让spectrum成为新类型的名称:spectrum被称为枚举,就像str

2016-04-28 20:26:48 572

原创 C++学习笔记之六 复合类型之共用体

共用体(union)是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型。也就是说,结构可以同时存储int、long和double,共用体只能存储int、long或double。共用体的句法与结构体相似,但是含义不同。例如下面的声明:union  one4all{int  int_val;long  long_val;double  double_val;

2016-04-28 19:49:29 304

原创 学习笔记之深入浅出MFC 第8章 C++重要性质----虚拟函数与多态(Polymorphism)

1、虚拟函数的由来上面我们曾经提过一个例子:CShape shapes[5];. . . //令5个shapes各为矩形、正方形、椭圆形、圆形、三角形for ( int i = 0;  i{shapes[i].display();}在上一节中我们说这种一般化的操作无法完成。你还记得为什么吗?是这样的,上面一节中讲到,由于每一个子类图形的绘制不同,所以display(

2016-04-27 14:49:57 1935

原创 学习笔记之深入浅出MFC 第8章 C++重要性质----基类与派生类:谈继承(Inheritance)

继承是C++最神秘而特有的性质。矩形是形,椭圆形是形,三角形也是形。苍蝇是昆虫,蜜蜂是昆虫,蚂蚁也是昆虫。人们习惯把相同的性质抽离出来,成立一个基类(base class),再从中衍化出派生类(derived class) 。所以,以形状为例,我们可以得到下面这样的类层次,从而进一步说明继承的原理:

2016-04-26 19:20:29 911

原创 学习笔记之深入浅出MFC 第8章 C++重要性质-----类封装

“面向对象”在软件界是众所周知的。其实,面向对象的程序设计(OOP即Object Oriented Programming)其实是一种观念,用什么语言实现都可以。只不过使用面向对象程序语言(Object Oriented Programming Language)更加的便利(因为是专门为面向对象观念而发展出来的,并完成了面向对象的封装、继承、多态等特性)。C++是最重要的面向对象的语言,因为它

2016-04-26 16:35:53 591

原创 C++学习笔记之五 复合类型之结构体(struct)

1、结构(struct)简介假如需要存储一个篮球运动员的信息,那么可能需要存储他的姓名、工资、身高、体重、平均得分、命中率、助攻次数等信息。这些数据的格式各不相同,像姓名是字符串类型,身高和体重是整型,为了将这一个运动员作为一个整体把他的所有信息打包在一块,结构体就是应这个需求产生的。(数组是无法满足上例要求的,数组虽然可以存储多个元素,但是每个数组的元素类型必须是相同的)C++中的结构体

2016-04-26 15:39:10 3119

原创 C++学习笔记之四 复合类型1

1、数组声明格式:float loans[20]; loans的类型不是“数组”,而是“float 数组”。这强调数组是使用float类型创建的。其中,方括号中的元素个数必须为整型常数或const值,也可以是常量表达式(如8*sizeof(int)),但不能是变量,因为变量的值是在程序运行时设置的。需要注意的是:C++数组从0开始编号,C++使用带索引的方括号表示法来指定数

2016-04-26 15:37:14 2257

原创 vs2010下MFC解决自动配置数据源函数SQLConfigDataSource第四个参数字符串问题

在项目过程中,需要使用数据库,所以用到了自动配置数据源的问题。因此从网上查了方法,这方面的介绍很多。总的来说就是使用SQLConfigDataSource。

2016-04-24 15:18:18 938

原创 学习笔记之深入浅出MFC 第7章 进程与线程(Process and Thread)

os/2、Windows NT以及Windows 9x都支持多线程,这给程序员带来了很大的便利。然而,在使用多线程的时候,必须要处理好各线程之间的关系,否则会带来很多麻烦。进程(process)表示一个执行中的程序,线程是CPU的基本的调度单位。

2016-04-22 16:51:41 1205

原创 学习笔记之深入浅出MFC 第6章 Console程序介绍

本节介绍一下Console程序,虽然主要介绍MFC程序,但是在这个过程中会经常用到Console程序做事例介绍,而且本着全面的原则,也方便大家以后使用Console程序做一些小的编程工作,在这里我觉着还是有必要介绍一下Console程序的。   说道Windows程序,一定会有WinMain、消息循环、窗口函数。即使你只是产生一个对话框(DialogBox)或消息窗(MessageBox)

2016-04-22 15:27:41 690

原创 学习笔记之深入浅出MFC 第5章 Windows程序的生与死

在上面几个章节中我们已经对win32程序的架构以及它与Windows系统之间的关系已经有了一个整体的介绍,对于窗口创建以及消息传递的原理也有了原理上的理解,但是为了更透彻的了解Windows程序的各个环节,现在我们需要进一步的对Windows消息种类以及发生的时机进行透彻的了解。在程序设计的时候这一点是非常重要的。现在我们以窗口的诞生和死亡,说明消息的发生与传递,以及应用程序的兴起与结束。在下

2016-04-18 16:08:06 660

原创 学习笔记之深入浅出MFC 第4章 对话框的运行

Windows的对话框以其与父窗口的关系,分为两类:1、“令其父窗口无效,直到对话框结束”,这种称为model对话框;2、“父窗口与对话框共同运行”,这种称为modeless对话框。比较常用的是model对话框。为了做出一个对话框,程序员需要准备两样东西:1、对话框模版(dialog template)。这是在RC文件中定义的一个对话框外貌,以各种方式决定对话框的大小、字形、内

2016-04-18 14:40:28 556

原创 C++学习笔记之三 数据处理(基本数据类型)

面向对象编程(OPP)的本质是设计并扩展自己的数据类型。面向对象的编程的基本做法就是针对一个对象创建或找到一个类,这个类正好能够描述或表达对象的特征或动作。所谓的类其实就是自己设计的一种数据类型,这种类型根据对象的特征或者设计者需要设计。整个面向对象的编程就是由这样的许多类组合而成,所以说面向对象的编程本质其实就是设计这样的叫做类的数据结构。

2016-04-18 09:04:53 677

原创 学习笔记之深入浅出MFC 第3讲 消息循环

在上一节中讲的WinMain()函数中,最后一部分是消息处理循环,重点介绍一下MFC的消息循环机制

2016-04-16 18:20:41 661

原创 C++ Primer Plus第六版编程练习答案3.7

C++Primer Plus 第六版 编程练习答案3.7节

2016-04-16 11:40:05 945 1

原创 C++学习笔记之二 C++基础学习2

8、在多函数程序中使用using编译指令对于using编译指令,当前通行的理念是,只让需要访问名称空间std的函数访问它是最好的选择。如果每个函数都使用cout,因此需要能够访问位于名称空间std中的cout定义,那么将编译指令放在函数的外面,且位于两个函数的前面;如果只有main()函数使用cout,因此没有必要让其他函数访问名称空间std,那么编译指令using就可以放在main()函数中

2016-04-16 11:13:03 406

原创 学习笔记之深入浅出MFC 第2讲 窗口类注册与窗口的诞生

我们知道,MFC应用程序的所有操作都是在一个窗口平台进行的。所以,在一开始,Windows程序必须做一些初始化的工作,就是产生应用程序工作的这个舞台----窗口。在本次笔记中,我们就总结一下窗口是怎么创建的。Windows窗口的功能我们都有些了解了,大致可以分为两大类:窗口的属性和窗口的行为。所谓的窗口的属性,主要是指窗口的外貌,比如窗口的边框、颜色、标题、位置等等;而窗口接受消息后的反应就是

2016-04-15 14:50:11 786

原创 C++学习笔记之二 C++基础学习

因为作者本人以前就在使用C++,虽然基础不够扎实,但是对一些基础的知识还是有一些了解和应用的。为了查缺补漏,对于基础C++的知识会较快速的掠过,以前漏掉的知识点会在本章节中记录整理,已经熟悉的知识就不再赘述了。注意:1、C++也能够使用printf()、scanf()和其他所有标准C输入和输出函数,只需要包含常规C语言的stdio.h文件。但是,在以后的C++学习中我们应该注意,我们应该尽

2016-04-15 09:18:06 628

原创 学习笔记之深入浅出MFC 第一章win32程序的开发流程

“只用一样东西,不明白它的道理,实在不高明”。借用林语堂先生的这句话,所以我们很有必要弄懂MFC这一工具的原理,这将更有利于我们应用它来解决工程问题。   作为windows程序设计者一定得知道的基础知识,我们很有必要对Windows程序的运行原理弄懂,甚至是烂熟于心,这样在以后碰到一些问题才能从更深层次考虑问题的原因,对我们踏实的功底是非常必要的。借用作者的话说,就是没有学会走之前,不要跑!

2016-04-13 16:27:35 527

4字节16进制数转换为float浮点数的原理及Qt算法实现示例

使用C++位运算实现4字节十六进制数转换为float数,在项目应用中需要此函数,没有找到合适的现成实现代码,所以自己编写实现了一个函数,希望对用着的朋友有帮助

2020-09-21

style Sheet Qt官方说明.docx

边阅读Qt帮助文件边整理中文版知识点,其中最后的列表部分太多,已经整理了一大部分,有不全的可以当字典查阅。

2019-09-12

MFC串口通信功能示例

为了对自己总结经验的整理总结,自己做了一份详细注释的串口通信功能,方便自己以后查阅,上传也供大家参考

2017-07-28

BCGCBarProMFC25.0

经过项目测试和实践应用,此破解版BCGControlBar确实好用,而且包含全部的demo例库,可以很好的与MFC结合使用

2017-07-26

Proessential手册整理版

根据英文手册整理的资料,全中文,阅读方便,快速入门。

2016-01-13

ProEssential用户使用详解(中文)

ProEssential控件是一种很好用的绘图控件,在MFC开发中效果很好。但一般资料都是英文手册。本人因为设计需要,在搜集资料的同时,参照英文手册整理了这一份使用手册中文版。对于正常使用和入门足够了。更多细节可以参考资料中的网址。

2016-01-13

空空如也

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

TA关注的人

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