C++
吵吵超超
整天干着乱七八糟的事!
展开
-
BeginPaint EndPaint 与GetDC ReleaseDC的区别
1. 绘图一般在WM_PAINT消息里面绘图, 一般用BeginPaint( HWND hwnd, LPPAINTSTRUCT lpPaint) 与BOOL EndPaint( HWND hWnd, CONST PAINTSTRUCT *lpPaint) BeginPaint自动设置裁剪区域,把不更新的区域设置到更新区域外面, 此消息只绘制无效区域,更转载 2014-09-26 08:15:38 · 568 阅读 · 0 评论 -
C++ string学习
C++中string是标准库中一种容器,相当于保存元素类型为char的vector容器(自己理解),这个类提供了相当丰富的函数来完成对字符串操作,以及与C风格字符串之间转换,下面是对string一些总结 一,C语言的字符串在C语言里,对字符串的处理一项都是一件比较痛苦的事情,因为通常在实现字符串的操作的时候都会用到最不容易驾驭的类型——指针。比如下面这个例子:转载 2015-07-21 14:05:52 · 311 阅读 · 0 评论 -
C++ string学习
C++中string是标准库中一种容器,相当于保存元素类型为char的vector容器(自己理解),这个类提供了相当丰富的函数来完成对字符串操作,以及与C风格字符串之间转换,下面是对string一些总结 一,C语言的字符串在C语言里,对字符串的处理一项都是一件比较痛苦的事情,因为通常在实现字符串的操作的时候都会用到最不容易驾驭的类型——指针。比如下面这个例子://example转载 2015-08-28 09:23:39 · 247 阅读 · 0 评论 -
深入浅出ShellExecute
Q: 如何打开一个应用程序?ShellExecute(this->m_hWnd,"open","calc.exe","","", SW_SHOW );或ShellExecute(this->m_hWnd,"open","notepad.exe", "c://MyLog.log","",SW_SHOW );正如您所看到的,我并没有传递程序的完整路径。 Q: 如何打开一个同系转载 2015-08-18 10:49:57 · 354 阅读 · 0 评论 -
C++之内存分配
很多人都觉得学习C++是特别困难的事情。C++学习是比较复杂的:它的内存分配、指针、以及面向对象思想的实现等等,确实需要一定的技术积累。我们将以专题的形式,为大家逐一剖析c++的技术重点和难点。本专题讨论的就是内存分配。学习c++如果不了解内存分配是一件非常可悲的事情。而且,可以这样讲,一个C++程序员无法掌握内存、无法了解内存,是不能够成为一个合格的C++程序员的。 一、内存基本构成转载 2015-08-18 10:41:27 · 289 阅读 · 0 评论 -
IP网际协议
IP 协议位于网络层,它是 TCP/IP 协议族中最为核心的协议,所有的 TCP、UDP、ICMP 及 IGMP 数据都以 IP 数据报格式传输。IP 协议提供的是不可靠 、 无连接 的数据报传送服务。 不可靠(unreliable):IP 协议不能保证数据报能成功地到达目的地,它仅提供传输服务。当发生某种错误时,IP 协议会丢弃该数据报。传输的可靠性全由上层协议来提供。转载 2015-08-18 18:02:54 · 321 阅读 · 0 评论 -
soildworks模型导入MFC对话框
基于openGL 导入OBJ模型到MFC对话框,可以显示纹理,缩放原创 2016-01-06 14:57:13 · 1437 阅读 · 2 评论 -
解决C/C++ 头文件相互包含 问题的方法
所谓超前引用是指一个类型在定义之前就被用来定义变量和声明函数。类A和类B需要彼此互相引用,这样必然有一个类会先被定义,而另外一个类后被定义,这样在先被定义的类引用后被定义的类的时候,就导致了所谓的超前引用。超前引用导致的错误有以下几种处理办法: 1) 使用类声明 在超前引用一个类之前,首先用一个特殊的语句说明该标识符是一个类名,即将被超前引用。其使转载 2016-01-27 14:31:44 · 645 阅读 · 0 评论 -
关于使用cspreadsheet读写EXCEL表格数据的问题
前几天项目有读写EXCEL表格的需求,我就找了大概有几种,大致分为:COM方法、ODBC方法、OLE方法、纯底层格式分析方法。由于COM方法要求必须安装有OFFICE的EXCEL组件,纯底层格式分析方法又很多功能需要自行去完善,所有最终选择了数据库的方法,用数据库的方法去存取xls格式的数据。网上有一个高手写的CSpreedSheet,看了一下提供的接口,感觉挺好用的。在使用的过程中发现几个问题,转载 2016-05-07 14:34:10 · 1731 阅读 · 2 评论 -
终于解决了excel操作及cspreadsheet.h问题
困扰多日的excel操作问题终于解决:利用cspreadsheet.h!在vs2005下,不能直接应用cspreadsheet.h,所以必须解决些问题先。首先,出现暴多错误。解决UNICODE问题,全部添加L。 [1]+++++++++++++++++++其次,出现问题:error C2664: 'SQLGetInstalledDriversW &ap转载 2016-05-07 15:46:12 · 3928 阅读 · 0 评论 -
C/C++串口通信原理及读写与操作
在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信。串口通信方便易行,应用广泛。一般情况下,工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的,只能由作为主节点的工控PC机依次轮询网络上的各智能控制单元子节点。每次通信都是由PC机通过串口向智能控制单元发布命令,智能控制单元在接收到正确的命令后作出应答。在Wi转载 2016-08-24 15:28:44 · 13628 阅读 · 1 评论 -
c/c++使用指针做函数返回值和指针作函数参数问题
一、使用指针做函数返回值: 1、当使用指针做为函数的返回值时,主函数处的char *p;将获得调用函数char *pf;的值,即一个地址值,如oxAE72。此时需要我们注意的是该地址值所指向的空间是否存在(即已向操作系统声明注册,不会被释放,即可能被其他操作修改);2、使用栈内存返回指针是明显错误的,因为栈内存将在调用结束后自动释放,从而主函数使用该地址空间将很危险转载 2017-08-08 08:58:44 · 876 阅读 · 0 评论 -
C++使用SQLite3心得 -- sqlite3以二进制形式存取图片(MFC,CppSQLite3U封装类)
实现功能:1.将图片文件(.jpg)以二进制形式存储到sqlite3里面 2.从sqlite3里面读取二进制形式的图片数据并保存到图片文件(.jpg)*注:本人超级菜鸟 此博客是为了总结用 仅仅说明了函数作用 可能直接编译不过 见谅 文中有何不妥之处 还望各位读者不吝赐教一、创建/打开 sqlite3数据库 并 创建/打开 表C++// 打开sqlite3数转载 2017-08-08 09:02:35 · 1119 阅读 · 0 评论 -
VS2008双机调试详解
1,目的有时候,程序由于某些原因并不能在开发机上运行(如可能加载有问题的驱动,运行环境在远处的客户那等),这就需要用到远程调试的技术。2,步骤我这里就演示在虚拟机里运行程序,然后在本机物理机的vs2008下断点调试。在远程机器上只要网络能连接,是一样的效果。一:远程机器的环境设置①把开发机上vs转载 2018-01-31 09:03:56 · 259 阅读 · 0 评论 -
C++ 解析Json——jsoncpp
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml类似,本文主要对VS2008中使用Jsoncpp解析json的方法做一下记录。Jsoncpp是个跨平台的开源库,下载地址:http://sourceforge.net/projects/jsoncpp/,我下载的是v0.5.0,压缩包大约104K。方法一:使用Jsoncpp生成的lib文件 ...转载 2018-04-19 16:10:45 · 681 阅读 · 0 评论 -
c++ 性能优化策略
1 关于继承:不可否认良好的抽象设计可以让程序更清晰,代码更看起来更好,但是她也是有损失的,在继承体系中子类的创建会调用父类的构造函数,销毁时会调用父类的析构函数,这种消耗会随着继承的深度直线上升,所以不要过度的抽象和继承。2 对象的复合:对象的复合和继承很相似,当一个对象包含其他对象构造时也会引起额外的构造。关于这点可能会有很多人不解,认为这是不可避免的,举个例子,你的一个对象中用到数组和字符串...转载 2018-06-11 14:32:20 · 1135 阅读 · 0 评论 -
一位硕士毕业生三个月求职经历与经验的结晶
一、 求职历程总结2007年1月10日,随着在三方协议上郑重签下自己的名字,我的求职历程终于划上了一个圆满的句号。在这三个月漫长而艰辛的过程中,我付出了很多,经历了很多,也收获了很多。这一路走来,要感谢的人太多太多,尤其要感谢每一个在找工作过程中关心、帮助过我的人,我会一生铭记你们的恩情。现在,尘埃落定,到了该回报的时候,我首先要回报的就是我的母校和同学。所以,决定把自己找工转载 2015-07-13 10:01:18 · 4234 阅读 · 0 评论 -
Dll导出对话框导致内存泄露
前几天写了一个dll,可以导出对话框在另外一个工程里使用此dll时,运行一切正常退出时,VC提示有内存泄露{483} client block at 0x003A87B0, subtype c0, 64 bytes long.a CDynLinkLibrary object at $003A87B0, 64 bytes longa CDynLinkLibra转载 2015-06-16 16:33:47 · 567 阅读 · 0 评论 -
用CImage类来显示PNG、JPG等图片
系统环境:Windows 7软件环境:Visual Studio 2008 SP1本次目的:实现VC单文档、对话框程序显示图片效果 CImage 是VC.NET中定义的一种MFC/ATL共享类,也是ATL的一种工具类,它提供增强型的(DDB和DIB)位图支持,可以装入、显示、转换和保存多种格式的图像文件,包括BMP、GIF、JPG、PNG、TIF等。CImage是一个独立转载 2014-09-25 17:01:09 · 543 阅读 · 0 评论 -
PostMessage(异步)和SendMessage(同步)的区别
PostMessage和SendMessage的区别 1, PostMessage只把消息放入队列,不管其他程序是否处理都返回,然后继续执行,这是个异步消息投放函数。而SendMessage必须等待其他程序处理消息完了之后才返回,继续执行,这是个同步消息投放函数。而且,PostMessage的返回值表示PostMessage函数执行是否正确;而SendMessage的返回值表示其他转载 2014-09-25 16:08:02 · 584 阅读 · 0 评论 -
详析VC中坐标系的建立
建立一个合适的坐标系可以为我们的绘图带来很大的方便 。下面介绍一下如何在VC中建立我们想要的坐标系。 一 设备坐标和逻辑坐标 设备坐标(Device Coordinate)又称为物理坐标(Physical Coordinate),是指输出设备上的坐标。通常将屏幕上的设备坐标称为屏幕坐标。设备坐标用对象距离窗口左上角的水平距离和垂直距离来指定对象的位置,是以像素为单位来表示的,设转载 2014-09-25 16:49:40 · 854 阅读 · 0 评论 -
注册表编程
目录一、注册表基础1.1注册表历史背景1.2注册表作用1.3注册表结构1.4各根键主要存储的信息1.5手动操作注册表二、注册表编程2.1相关函数分类2.2项管理函数2.2.1项创建函数2.2.2项打开函数2.2.3项关闭函数2.2.4项删除函数2.3值项管理函数2.3.1值设置函数2.3.2值查询函数2.3.3值项删除函数2.转载 2014-09-29 15:15:18 · 518 阅读 · 0 评论 -
Java语言与C++语言的差异总结
Java的设计者曾说过,设计这门语言的灵感主要来自于C++。世上先有C++,然后才有Java,整个Java语言的发展历史就是一部对C++的填坑史。所以在Java语言学习过程中,将其与C++语言对比是一件有意义的事情。通过这些对比,我们能够了解到Java语言相对于C++语言有哪些改进,能带给我们哪些进步,这样对于更加深入理解这两种语言是大有裨益的。下面我总结一下Java语言与转载 2014-10-15 10:22:10 · 349 阅读 · 0 评论 -
MFC连接SQL数据库操作
要操作SQL数据库要经过以下几个步骤:1.建立数据库2.配置数据源3.数据库的连接最后就可以对数据库里面的数据进行查改删了 【1】对于建立SQL数据库的话,可以通过SQL Server Management Studio,根据自己的需要建立数据库【2】配置数据源数据库设计完成后,我们并不能直接的去访问它,必须通过配置数据源让应用程序和转载 2014-10-20 09:14:14 · 3755 阅读 · 0 评论 -
C++类模板详解
类模板与函数模板的定义和使用类似,我们已经进行了介绍,如果您对函数模板也感兴趣,请查看:C++函数模板。有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,如下面语句声明了一个类:复制纯文本新窗口class Compare_int { public : Compare(int a,int b) { x=a; y=b; } int max( ) { re转载 2014-12-17 09:13:31 · 431 阅读 · 0 评论 -
酒逢知己,雨后甘霖---C++之内存管理
[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支转载 2014-12-18 16:44:11 · 1212 阅读 · 0 评论 -
关于回调函数和钩子函数基础知识的整理
回调函数:Callback Function什么是回调函数?首先做一个形象的比喻: 你有一个任务,但是有一部分你不会做,或者说不愿做,所以我来帮你做这部分,你做你其它的任务工作或者等着我的消息,但是当我完成的时候我要通知你我做好了,你可以用了,我怎么通知你呢?你给我一部手机,让我做完后给你打电话,我就打给你了,你拿到我的成果加到你的工作中,继续完成其它的工作.这就叫回叫,转载 2015-01-15 16:58:39 · 429 阅读 · 0 评论 -
无法执行添加/移除操作,因为代码元素**是只读的
在vs中,大量添加窗体或者控件后,发现无法由系统IDE自动生成代码,如自动添加按钮响应函数等,rc管理器界面双击按钮添加函数,会出现 提示框 “无法执行添加/移除操作,因为代码元素**是只读的”。开始认为可能是对应的.cpp和.h被加了只读属性,后来发现是工程的ncb文件引起的。解决方案:关闭vs,删除工程对应的.ncb文件,重启vs就好了。问题原因:NCB是no compile转载 2015-01-20 15:58:37 · 473 阅读 · 0 评论 -
控制台和MFC中内存泄露工具vld的使用
最近想检测下项目中内存泄露的情况,选中了vld这款。在查找使用方法的时候,大都是控制台下的示例,添加到main函数所在的源文件上。换成MFC就纠结了,不知道添加到哪里去。本文记录控制台和MFC中的使用vld过程。 vld资源: 1)、大家可以移步下边的网址下载: http://vld.codeplex.com/releases/view/82311转载 2015-01-23 17:40:25 · 634 阅读 · 0 评论 -
JSON用法简介
【JSON简介】 jsoncpp 主要包含三种类型的 class:Value、Reader、Writer。jsoncpp 中所有对象、类名都在 namespace Json 中,包含 json.h 即可。【VALUE】 Json::Value 是jsoncpp 中最基本、最重要的类,用于表示各种类型的对象,jsoncpp 支持的对象类型可见 Json::Value转载 2015-02-13 15:20:12 · 427 阅读 · 0 评论 -
stl vector排序
C++中当 vector 中的数据类型为基本类型时我们调用std::sort函数很容易实现 vector中数据成员的升序和降序排序,然而当vector中的数据类型为自定义结构体类型时,我们该怎样实现升序与降序排列呢?方法1:重载运算符#include #include #include using namespace std;struct TItem{转载 2015-03-19 15:39:05 · 589 阅读 · 0 评论 -
C++数据类型转换技巧
http://wenku.baidu.com/link?url=PRGkGxEo6bjaVTIlnzx34Eg5ym1jXTP4Cptz9vyJsaeuL3JhDZ85HxLKwGq6fbTwASnFIOxsF7LGPHBl8ny4Dbjdc8ugdjefj0mfS2A8U83转载 2015-04-15 18:09:17 · 661 阅读 · 0 评论 -
关闭程序后,子线程未正确退出引出的内存泄露问题
内存泄露信息如下: f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {239} normal block at 0x003AADA8, 46 bytes long. Data: 7C D9 4F 78 0E 00 00 00 0E 00 00 00 01 00 00 00 f:\rtm\vcto转载 2015-06-16 16:47:10 · 2637 阅读 · 0 评论 -
c++ const的各种用法
const限定符1.定义const对象熟悉的形式 const int bufSize = 512; 变量bufSize仍然是个左值,但是不能修改的,因为常量在定义后就不能修改,所以定义时必须初始化:const std::string hi = "hello!"; /**ok*/const int aaa = 125; /**ok*/const ...转载 2018-06-11 15:35:03 · 517 阅读 · 0 评论