VC++
文章平均质量分 79
Leckun
这个作者很懒,什么都没留下…
展开
-
DrawText多行文本垂直居中
要使用DrawText后的文本居中,可以使用DT_CENTER,要垂直居中,直接|DT_VCENTER,或者再加上|DT_SINGLELINE,但是这样只对单行文本有效,多行带换行的文本怎么实现DrawText文本处在最中间的位置呢?网上找到一些相关资料可以实现这样的功能方法原创 2011-08-28 17:35:48 · 12829 阅读 · 4 评论 -
“CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明)
例子:typedef struct tagMyStruct{CArray strMyArray;}MyStruct;这样子写会报“CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明)错误,解决方法:从CObject派生的类,传参时请用指针!并在构造函数里new一个新实例。typedef struc原创 2015-10-30 18:35:10 · 5323 阅读 · 0 评论 -
VC++ MFC TRACE无法输出的问题解决
在输出窗口点击鼠标右键,将所有项都打钩即可原创 2016-05-14 16:16:24 · 2119 阅读 · 0 评论 -
Visual Leak Detector无法显示Call Stack文字的解决方法
问题如下,在Call Stack位置无法显示文件名,和跟踪堆栈函数---------- Block 131148 at 0x69B3AF68: 144 bytes ---------- Leak Hash: 0xCA7D251C, Count: 1, Total 144 bytes Call Stack (TID 1600): Data: B8 0A 80 01原创 2016-07-05 17:31:26 · 1965 阅读 · 1 评论 -
scanf引起的内存越界问题
问题代码如下:BYTE nYear=0, nMonth=0, nDate=0, nHour=0, nMin=0, nSec=0; sscanf_s("2016-08-12 13:14:15", "%d-%d-%d %d:%d:%d", &nYear, &nMonth, &nDate, &nHour, &nMin, &nSec);运行后,VS2010提示Run-Time C原创 2016-08-12 09:42:17 · 2592 阅读 · 0 评论 -
利用stl set_difference对车辆进出区域进行判定
struct _AREA_VECTOR_STRUCT{ int nAreaType; int nAreaID;};void CtestDlg::OnBnClickedButton2(){ vector structAreaHistory; vector structAreaNow; vector OutStructAreaVector; _AREA_VECTOR_STRUCT structVehi原创 2016-09-05 14:13:59 · 759 阅读 · 0 评论 -
使用find_if的自定义条件查找vector或map
vectortestStructVector;void CtestDlg::OnBnClickedButton1(){ testStruct struct1; for(int i = 0; i < 5; i++) { struct1.a = i; struct1.b = i + i; testStructVector.push_back(struct1); } au原创 2016-08-26 10:27:41 · 3159 阅读 · 0 评论 -
使用set_union对vector结构体进行去除重复值并合并
set_union对vector结构体进行去除重复值并合并vectortestStructVector1;vectortestStructVector2;vectorunionVector;void CtestDlg::OnBnClickedButton2(){ testStruct struct1; for(int i = 0; i < 5; i++) { st原创 2016-08-26 10:11:13 · 2997 阅读 · 1 评论 -
VC使用编译时间作为版本号标识
使用宏__DATE__和__TIME__CString strVersion,strBuildTime;strBuildTime = __DATE__;strBuildTime.Append(" ");strBuildTime.Append(__TIME__);COleVariant vtime(strBuildTime);vtime.ChangeType(VT_DATE);COl原创 2017-01-06 09:47:22 · 2426 阅读 · 0 评论 -
关于CString初始化时提示字符串太大的解决
问题代码:CString str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567原创 2017-04-21 11:27:28 · 8333 阅读 · 1 评论 -
VC++实现批量大容量快速插入SqlServer数据库
1. 概述使用c++访问数据库的方法很多,由于我访问的是sqlserver数据库,于是上MSDN查了一下有哪些访问技术,主要有以下几种:ODBC OLEDBADOADO是OLEDB的封装,使用起来比OLEDB方便。由于ADO比OLEDB多了一层,其速度可能不及OLEDB,所以就不考虑ADO了。数据库获取方法参考MSDN:https://msdn.microso转载 2017-06-30 16:09:42 · 5122 阅读 · 2 评论 -
offsetof与container_of宏[总结]
1、前言 今天在看代码时,遇到offsetof和container_of两个宏,觉得很有意思,功能很强大。offsetof是用来判断结构体中成员的偏移位置,container_of宏用来根据成员的地址来获取结构体的地址。两个宏设计的很巧妙,值得学习。linux内核中有着两个宏的定义,并在链表结构中得到应用。不得不提一下linux内核中的链表,设计的如此之妙,只需要两个指针就搞定了。后续认转载 2017-07-05 09:39:09 · 280 阅读 · 0 评论 -
c++的vector赋值方法汇总
#include #include using namespace std; void main() { vectorivec1(10,42); //内置方法,初始化的内容为10个42 vectorivec2(10); vector::size_type ix=0; for(ix;ix转载 2017-10-10 09:50:19 · 15984 阅读 · 0 评论 -
GCC在C语言中内嵌汇编 asm __volatile__
在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作。1、简单的内嵌汇编例: __asm__ __volatile__("hlt"); "__asm__"表示后面的代码为内嵌汇编,"转载 2015-10-30 09:11:08 · 755 阅读 · 0 评论 -
C++11中的原子操作(atomic operation)
所谓的原子操作,取的就是“原子是最小的、不可分割的最小个体”的意义,它表示在多个线程访问同一个全局资源的时候,能够确保所有其他的线程都不在同一时间内访问相同的资源。也就是他确保了在同一时刻只有唯一的线程对这个资源进行访问。这有点类似互斥对象对共享资源的访问的保护,但是原子操作更加接近底层,因而效率更高。在以往的C++标准中并没有对原子操作进行规定,我们往往是使用汇编语言,或者是借助第三方的转载 2015-10-30 09:14:56 · 727 阅读 · 0 评论 -
关于this指针的一些转载
this指针只能在一个类的成员函数中调用,它表示当前对象的地址。下面是一个例子: void Date::setMonth( int mn ) { month = mn; // 这三句是等价的 this->month = mn;转载 2011-08-10 22:13:02 · 539 阅读 · 0 评论 -
关于WM_PAINT(OnPaint)及WM_TIMER的小问题
MSDN上面关于WM_TIMER有这么一段话: The WM_TIMER message is a low-priority message. The GetMessage and PeekMessage functions post this message only when转载 2011-09-23 13:09:57 · 2274 阅读 · 0 评论 -
LoadBitmap返回的HBITMAP未删除导致的内存泄漏问题
最近写程序检查某个工程的内存泄漏问题,检查很久,修修补补,也补了部分内存泄漏问题,但是在画界面部分还是存在内存泄漏,而且经常间歇性才发作,百思不得其解,找了很多资料无果,只能自己一句句代码查找,功夫不负有心人最后让我发现了。。。原来有内存泄漏的代码:void CWinXXXDlg::OnPaint(){CDC dcMem;CBitmap bmpMem;BITMAP bm2;C...原创 2011-09-27 17:42:53 · 5054 阅读 · 2 评论 -
vs2008智能设备项目创建失败解决方案(转载)
因工作需要安装C++, 我的vs2008在打了sp1补丁之后就没办法再添加删除组件了,只好安装vs2005 C++. 可以却发现在创建项目时,智能设备向导提示”项目创建失败“, 窗口闪了一下又重新回到原状。网上说需要安装sp1, 只好再一次被vs2005sp1折磨了一次了. 所幸问题解决了。然而昨天不巧又重新安装了IE8。问题再次出现。下面是网上流传的方法:采用如下修改注册表的方式转载 2012-05-30 18:28:17 · 1065 阅读 · 0 评论 -
大数求平均值公式
以下为整理手记:方法1、维护一个cnt记录当前数据的个数,evr记录当前的平均值然后每增减一个新数据val时,更新这个cnt和evr的值即可evr += ((val - evr) / ++cnt); int main(){ int cnt = 0; double evr = 0; int i; double d[] = {转载 2012-06-11 18:36:11 · 2715 阅读 · 3 评论 -
static_cast, dynamic_cast, const_cast探讨
首先回顾一下C++类型转换:C++类型转换分为:隐式类型转换和显式类型转换第1部分. 隐式类型转换又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型。 int ival = 3;double dval = 3.14159;转载 2015-08-25 09:23:45 · 408 阅读 · 0 评论 -
C++中的static关键字的总结
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。1.面向过程设计中的static1.1静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1#include转载 2015-08-26 08:56:33 · 488 阅读 · 0 评论 -
C++纯虚函数 virtual =0
C++纯虚函数 virtual =0 参考:http://hi.baidu.com/cunlin/blog/item/d82b160102e0e4037aec2ccb.html (百度空间)来源:http://blog.csdn.net/ithomer/article/details/6031329==================================转载 2015-09-01 15:39:27 · 931 阅读 · 0 评论 -
ADO连接数据库,编译到客户机运行时出现CreateInstance报错0x80004002、CreateParameter报0xC0000005错误的解决方法。
ADO连接数据库,编译到客户机运行时出现CreateInstance报错0x80004002,经查是由于ADO版本不一致引起的。解决方法将原来stdafx.h中的#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")更换为#import原创 2015-08-17 14:05:13 · 1714 阅读 · 0 评论 -
一个CAsyncSocket例子
server 端:建个类作为server socket,主要处理OnAccept消息。class CMySocket : public CAsyncSocket其中包含几个虚函数 virtual void OnAccept(int nErrorCode); virtual void OnConnect(int nErrorCode); virtual void On转载 2015-10-16 14:09:11 · 1710 阅读 · 0 评论 -
存储过程Append 二进制 _ParameterPtr“不正常地定义参数对象。提供了不一致或不完整的信息”
使用ado调用存储过程,CreateParameter其中一个参数为image类型,当插入的二进制长度为空时,出现“不正常地定义参数对象。提供了不一致或不完整的信息”错误。代码如下[cpp] view plaincopySAFEARRAY *psa; SAFEARRAYBOUND rgsabound[1]; rgsabound[0转载 2015-09-01 18:50:47 · 1320 阅读 · 0 评论 -
C,C++宏中#与##的讲解
文中__FILE__与示例1可以参见《使用ANSI C and Microsoft C++中常用的预定义宏》宏中的#的功能是将其后面的宏参数进行字符串化操作(Stringizing operator),简单说就是在它引用的宏变量的左右各加上一个双引号。如定义好#define STRING(x) #x之后,下面二条语句就等价。 char *pChar = "hello";转载 2015-10-30 09:09:16 · 318 阅读 · 0 评论 -
C++将无结束符字符串(ASCII)转为数字数值的快速方法(支持16进制)
通常情况下的字符串转为数字,可以使用C的atoi,或者C++的sstream来转换,但是这要求待转换源字符串要有\0结束符,如果只想转换字符串中一部分,或者转换char*中不带结束符的字符串的时候,以上的方式均需要将字符拷贝出来并且给出结束符才能进行下一步转换,有了拷贝的动作转换的速度就慢了,以下的方法是根据ASCII字符对应数值的特点循环将字符转换为数字数值的函数,并支持16进制。原创 2017-10-25 08:47:42 · 6840 阅读 · 0 评论