C++
文章平均质量分 82
C++基础,Qt,MFC
晨光ABC
专注于计算机视觉、SLAM、多传感器融合、Robotics、XR、HPC
展开
-
CMake for Visual Studio
CMake for Visual Studio原创 2022-11-14 21:23:45 · 743 阅读 · 0 评论 -
STL学习笔记
简介 STL(Standard Template Library),即标准模版库,涵盖了常用的数据结构和算法,并具有跨平台的特点。STL是C++标准函数库的一部分,如下图所示: STL含有容器、算法和迭代器组件,其之间的合作如下图所示: STL的底层机制都是以RB-tree(红黑树)完成的。一个红黑树是一棵二叉树。容器标准序列式容器字符串(string) ...原创 2016-07-30 20:25:00 · 238 阅读 · 0 评论 -
MFC学习笔记
获取窗口句柄FindWindow 根据窗口名获取GetSafehWnd 取你程序所在窗口类的句柄GetActiveWindow 取当前活动窗口句柄AfxGetMainWnd 取主窗口句柄GetForegroundWindow 取前台窗口句柄窗口对象和CWnd对象,At...原创 2016-07-29 14:23:00 · 427 阅读 · 0 评论 -
C++范围不相符变量的赋值
当超出某一类型范围的值给此类型变量赋值或某一负数给某一无符号数赋值时,其结果会怎么样呢?(1)超出某一类型范围的值给此类型变量赋值时 变量的值 =超出某一类型范围的值 % 此类型可以表示的数值的个数 例:char a = 260 ; 输出 a = 4 ;#include "stdafx.h"#include<iostream>#include<...原创 2015-08-10 11:27:00 · 178 阅读 · 0 评论 -
MFC窗口位置和大小的获取
最近在做一个项目,需要控件随对话框大小的变化而变化,因此需要准确获取对话框窗口、控件的大小和位置。 经过好一番查寻、测试,终于看到了希望。下面是一些获取窗口位置和大小的函数,示例如下:1、获取屏幕分辨率//下边两个函数获取的是显示屏幕的大小,但不包括任务栏等区域int cx = GetSystemMetrics(SM_CXFULLSCREEN);int cy = Get...原创 2015-06-23 23:13:00 · 159 阅读 · 0 评论 -
ubuntu12.04下Qt调试器的使用
最近,我一直在用Qt编写C++程序,但在编写过程中遇到了问题,想用Qt Creator中的调试器调试一下,但调试时(在Qt Creator中已配置好相应的调试器)出现“ptrace:Operation not permitted ”的错误,如下图所示:经百度搜索,找到了问题的原因及其解决方案。 原来,在Ubuntu 11.04("Natty Na...原创 2015-05-29 16:04:00 · 124 阅读 · 0 评论 -
Qt样式表的使用
Qt中可以灵活的使用层叠样式表(CSS),其语法和CSS很相似。因为HTML CSS的灵活性,所以可以很方便的为QT界面设计自己需要的外观。除了子类化Style类,使用QT样式表(QStyleSheet)是另一种快速改变QT程序UI风格的方法,它很大程度上借鉴和参考了 HTML层叠样式表的语法和思想。 StyleSheet文件的默认后缀名为qss,可通过命令行参数 -styles...原创 2015-05-28 08:19:00 · 123 阅读 · 0 评论 -
Qt数据库操作
QtSql模块由驱动层、SQL接口层、用户接口层三部分组成,提供了与平台以及数据库种类无关的访问SQL数据库的接口。这个接口由利用Qt的模型/视图结构将数据库与用户界面集成的一套类来支持,数据库即模型的数据源。对于习惯使用SQL语法的用户,QSqlQuery类提供了直接执行任意SQL语句并处理返回结果的方法;而对于习惯使用较高层数据库接口避免使用SQL语句的用户,QSqlTableM...原创 2015-05-27 17:23:00 · 129 阅读 · 0 评论 -
Ubuntu12.04下Qt连接MySQL数据库
本文介绍在Ubuntu12.04 (64 bit) 下使用Qt 4.8.2连接MySQL(Ver 14.14 Distrib 5.5.43)数据库。1、安装 Qt 和 MySQL 若未安装以上软件,可参考我的博客安装。安装Qt:Ubuntu12.04下安装Qt4总结 -->http://www.cnblogs.com/gaohongchen01/p/4204860....原创 2015-05-26 15:44:00 · 120 阅读 · 0 评论 -
VS2010下MFC的串口编程
串口通信简介 一般来说,计算机都有一个或多个串行端口,这些串口提供了外部设备与PC进行数据传输和通信的通道,在CPU和外设之间充当解释器的角色。当字符数据从CPU发送给外设时,这些字符数据将被转换成串行比特流数据;当接收数据时,比特流数据被转换为字符数据传递给CPU,再进一步说,在操作系统方面,Windows用通信驱动程序(COMM.DRV)调用API函数发送和接收数据;当用通信控件...原创 2015-04-16 18:31:00 · 441 阅读 · 0 评论 -
Ubuntu12.04(64bit)下安装Qt4总结
本文主要介绍linux系统Ubuntu12.04(64bit)下Qt4.8.5的安装,其中还涉及Fedora9下Qt4的安装。1、下载软件:去Qt的官网下载Qt4.8.5和Qt Creator软件,下载的具体软件如下:Qt4.8.5软件:qt-everywhere-opensource-src-4.8.5.tar.gzQt Creator软件:qt-creator-linux...原创 2015-01-05 23:25:00 · 121 阅读 · 0 评论 -
Qt5+VS2010的安装及使用
在我的博客《Win7下Qt5的安装及使用》中讲解了win7下Qt5+MinGW的安装及使用,本节再讲解win7下Qt5+VS2010的安装及使用。利用Qt5+MinGW开发应用程序比较麻烦的是,每次都要编写.pro文件(项目配置文件,类似于makefile),而用Qt5+VS2010则不再需要编写.pro文件,尤其对于习惯于VS2010且电脑上已装了VS2010的程序员来说还是比较好...原创 2014-12-31 12:10:00 · 432 阅读 · 0 评论 -
C++交叉编译器
MinGW和Cygwin都解决了C++跨平台交叉编译的问题,使Linux下的程序在Windows上编译运行成为可能。 MinGW给习惯在Linux上开发的人员在windows上提供了一套类似的工具集;Cygwin主要是对于在Linux的程序,无需改动代码即可移植到windows上;gnuwin32主要是对习惯linux工具的人员,在windows上提供一套类似的命令。 Uni...原创 2014-12-30 08:52:00 · 510 阅读 · 0 评论 -
Win7下Qt5的安装及使用
1、安装Qt5 Qt5的安装比Qt4的安装简单多了,我装的是Qt5.4(qt-opensource-windows-x86-mingw491_opengl-5.4.0.exe),它集成了MinGW、Qt Creator等,不需要你再单独下载MinGW和Qt Creator。 首先,去Qt官网下载资源:qt-opensource-windows-x86-mingw491_ope...原创 2014-12-28 20:52:00 · 189 阅读 · 0 评论 -
使用Visual Studio Installer打包C++程序
本文主要讲解利用VS2010下的Visual Studio Installer打包Zigbee程序(VS2010编写)的过程。1、打开Zigbee程序,在解决方案中添加“新建项目”-->其他项目类型-->安装和部署-->Visual Studio Installer-->安装项目,命名为ZigbeeInstall。2、这时在VS2010文件系统中有三个文件...原创 2014-12-23 17:48:00 · 2096 阅读 · 0 评论 -
C++ & MFC
C++是一种静态数据类型检查的、支持多重编程范式的程序设计语言,支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等泛型程序设计的多种程序设计风格。 MFC(Microsoft Foundation Classes),是一个微软公司提供的类库,以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量,同VCL类似,是一种应用程序...原创 2014-12-21 20:19:00 · 358 阅读 · 0 评论 -
C++之MFC六大关键技术
MFC六大关键技术包括:MFC Initialization —— MFC程序的初始化过程RTTI(Runtime Type Information)—— 运行时类型识别Dynamic Creation —— 动态创建Persistence ——永久保存(串行化、序列化)Message Mapping —— 消息映射Message Routing —— 消息传递MFC程...原创 2014-11-20 13:48:00 · 362 阅读 · 0 评论 -
C++基础之常用预处理指令
预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。预处理命令以符号“#”开头。 常用的预处理指令包括:宏定义:#define文件包含:#include条件编译:#if、#elif、#ifndef、#ifdef、#endif、#undef错误信息指令:#error#line指令布局控制:#pragma宏定义 宏定义又称为宏代换、宏...原创 2014-11-11 00:08:00 · 151 阅读 · 0 评论 -
C++变量存储类别和内存四区
变量存储类别 变量声明/定义的一般形式:存储类别 数据类型 变量名 存储类别指的是数据在内存中存储的方法。存储方法分为静态存储和动态存储两大类。标准C语言为变量、常量和函数定义了4种存储类型:extern、auto、static、register。根据变量的存储类别,可以知道变量的作用域和存储期。这4种存储类型可分为两种生存期限:永久的(在整个程序执行期都存在)和临...原创 2014-11-09 23:28:00 · 90 阅读 · 0 评论 -
C++四大扩展之RTTI(运行时类型识别)
运行时类型识别(Run-time type identification , RTTI),是指在只有一个指向基类的指针或引用时,确定所指对象的准确类型的操作。其常被说成是C++的四大扩展之一(其他三个为异常、模板和名字空间)。使用RTTI的两种方法: 1、typeid() 第一种就像sizeof(),它看上像一个函数,但实际上它是由编译器实现的。typeid()带有一个参数...原创 2014-11-09 21:14:00 · 185 阅读 · 0 评论 -
常用MFC宏
最近我在用MFC开发一个智能家居监控平台的软件(用到了MSCOMM串口通信控件),当我通过在一个对话框类A中定义另一个对话框类B的对象访问B的public成员时,提示不可访问。后来经过多天的向朋友求救,终于在一个大神的帮助下找到了解决方案。原来在使用ActiveX控件时会产生一个DECLARE_EVENTSINK_MAP()宏,在此宏之后定义的每一个成员如果不指定一个新的存取类型都会...原创 2014-11-09 10:20:00 · 212 阅读 · 0 评论 -
MFC窗口颜色的设置
本文主要介绍对话框背景色以及控件颜色的设置(SetDialogBkColor()不再被支持)。对话框背景色的设置1、重载OnPaint()函数,即WM_PAINT消息,代码如下所示:void CtestDlg::OnPaint(){ if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 ...原创 2014-11-02 10:34:00 · 163 阅读 · 0 评论 -
CButtonST|CUniButton等按钮类的使用
CButtonST CButtonST类的使用参考链接:http://www.cnblogs.com/lidabo/archive/2012/12/17/2821122.html CCeButtonST CCeButtonST是和CButtonST类(VC6.0 )相对应的EVC(Embedded Visual C++)版本。 CUniButton...原创 2014-11-01 10:15:00 · 220 阅读 · 0 评论 -
MFC动态按钮的创建及其消息响应(自定义消息)
动态按钮(多个)的创建: 1、在类中声明并定义按钮控件的ID #define IDC_D_BTN 10000 2、在类的OnInitDialog()函数中动态创建按钮(建立按钮对象时最好建立对象的指针) 3、手动释放对象指针 下面是动态生成多个按钮的例子: CButton* btn = new...原创 2014-10-23 18:26:00 · 234 阅读 · 0 评论 -
VS2010工程结构及其瘦身策略
VS2010工程结构: 我们以在VS2010上利用MFC创建的单文档应用程序HelloWorld的文件结构为例,简述VS2010应用程序工程中文件的组成结构。 1、解决方案相关文件 解决方案相关文件包括解决方案文件夹下的.sdf文件、.sln文件、.suo文件和ipch文件夹。 .sdf文件和ipch目录等浏览数据库与智能提示、错误...原创 2014-10-23 10:28:00 · 226 阅读 · 0 评论 -
C++编程杂谈
字节顺序 字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端、大端两种字节顺序。小端字节序指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处;大端字节序是高字节数据存放在低地址处,低字节数据存放在高地址处。 基于X86平台的PC机是小端字节序的,而有的嵌入式平台则是大端字节序的。因而对int、uint16、uint32等多于1字节类型的数据,在这些嵌...原创 2014-10-06 09:45:00 · 130 阅读 · 0 评论 -
C++连接MySQL(Windows)
一般来说,VS下采用微软自身的SQL Server是比较常见的做法,但SQL Server只适合学习,不适合真正应用。在此,我们选择MySQL作为后台数据库。C++语言本身并没有提供访问数据库的东西,一般使用访问数据库的驱动。微软提供一个ODBC的标准API,用于屏蔽各数据库底层细节,提供统一接口访问各个数据库。在MySQL官网上也能下到一个叫"Connector/ODBC"的dri...原创 2014-10-05 16:27:00 · 197 阅读 · 0 评论 -
C++之VS2010下配置Boost库
Boost库是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库由Boost社区组织开发、维护。其目的是为C++程序员提供免费、同行审查的、可移植的程序库。Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。Boost库使用Boost License来授权使用,根据该协议,商业的非商业的使用都是允许并鼓励的。大部分boost库功能的使用只需包括相应头文件即...原创 2014-10-05 13:02:00 · 175 阅读 · 0 评论 -
C++之多字节字符集与Unicode字符集
在计算机中字符通常并不是保存为图像,每个字符都是使用一个编码来表示的,而每个字符究竟使用哪个编码代表,要取决于使用哪个字符集(charset)。多字节字符集: 在最初的时候,Internet上只有一种字符集——ANSI的ASCII字符集,它使用7bits来表示一个 字符,总共表示128个字符,其中包括了 英文字母、数字、标点符号等常用字符。之后,又进行扩展,使用8bits...原创 2014-10-05 09:22:00 · 854 阅读 · 0 评论 -
C++之Windows平台动态链接库
1、动态链接库概述:动态链接库通常都不能直接运行,也不能接受消息;只有在其他模块调用动态链接库中的函数时,它才发挥作用。Windows API中所有的函数都包含在动态链接库中。动态链接库分静态库和动态库。2、导出函数的声明方式1)强制用C语言方式进行修饰,且用C的默认调用约定,即__cdecl方式。这种方式编译产生的DLL中有一个导出函数:add,不加任何修饰。(这种方式最...原创 2014-09-13 11:00:00 · 181 阅读 · 0 评论 -
C++/CLI学习入门
托管是.NET的一个专门概念,它倡导一种新的编程理念,因此我们完全可以把“托管”视为“.NET”。C++托管扩展(Managed Extension for C++,即MC++)是微软为了让Visual C++可以支持托管的引用程序的开发而对传统C++语言进行的扩展,是新一代Visual C++开发工具的语言核心。对Microsoft Visual C++语言进行...原创 2014-09-12 20:39:00 · 189 阅读 · 0 评论 -
VS2010错误
1、用VS2010生成C++程序时,链接器工具错误 LNK1123:fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt转换到 COFF 期间失败: 文件无效或损坏VS2010下的解决方案: 安装sp1的补丁:http://www.microsoft.com/zh-c...原创 2014-09-12 13:05:00 · 94 阅读 · 0 评论 -
用VS2010打开VS2012项目
1、修改解决方案文件,即.sln文件: 用记事本打开.sln文件,把其中的Microsoft Visual Studio Solution File, Format Version 12.00# Visual Studio 2012 修改成Microsoft Visual Studio Solution File, Format Version 11.00# Vis...原创 2014-08-08 21:49:00 · 126 阅读 · 0 评论 -
C++之VisualStudio使用技巧
控制台工程去除黑框 刚学习OpenGL,绘制图形的时候,如果不进行设置,运行的时候会先出现黑窗口再出现Windows窗口。其实要去除控制台窗口非常简单,只需要修改工程设置,把子系统改成Windows,程序的入口点改成mainCRTStartup。 控制台工程去除黑框的方法如下:方法一:在程序中加入一句#pragma comment(linker, “/subsystem:\”...原创 2014-08-08 21:28:00 · 228 阅读 · 0 评论