- 博客(37)
- 资源 (8)
- 收藏
- 关注
转载 OnPaint()函数的作用原理
WM_PAINT是窗口每次重绘都会产生的一个消息。 OnPaint是对这个消息的反应函数mfc 的 CWnd::OnPaint 没做什么,只是丢给系统处理。一 :先执行OnEraseBkgnd,擦除背景(如果想自绘控件,这个函数直接return TRUE就可以了,这样就不会擦除背景,不会闪)OnEraseBkGnd与OnPaint的区别与联系
2013-06-26 13:53:17 859
转载 图解编程(二)代码的抽象三原则
软件开发是"抽象化"原则(Abstraction)的一种体现。所谓"抽象化",就是指从具体问题中,提取出具有共性的模式,再使用通用的解决方法加以处理。开发软件的时候,一方面,我们总是希望使用别人已经写好的代码,另一方面,又希望自己写的代码尽可能重用,以求减少工作量。要做到这两个目标,这需要"抽象化"。最近,我读到美国程序员Derick Bailey的一篇文章,谈到"
2013-06-25 21:51:47 1026
转载 酷壳网陈皓:Why C++?王者归来
编译器性能优化c++数据中心actionscript摘要:如果把我们的对编程语言的需求总结为四个:效率,灵活,抽象,生产率。那么,C语言玩的是前两个,而C++玩的是前三个,Java和C#玩的是后两个(抽象和生产率)。导读:此前,CSDN的一名博主赖勇浩发表了一篇博客《2012不宜进入的三个技术点》,文中提到ActionScript,Thread和C++,其中C++争议最大。对此
2013-06-25 08:58:13 1299
翻译 高质量C++编程(四)函数设计(1)
6.1 参数的规则【规则6-1-1】参数的书写要完整,如果函数没有参数,则用void 填充[cpp] view plaincopyprint?void SetValue(int width, int height); // 良好的风格 float GetValue(void); // 良好的风格 void SetValue
2013-06-24 22:04:10 823
翻译 高质量C++编程(三)常量
一、const 与#define 的比较相比#define,const有很多优点(1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。(2) 有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。二、const 的初始
2013-06-24 22:00:08 715
转载 SendMessage、PostMessage原理
本文讲解SendMessage、PostMessage两个函数的实现原理,分为三个步骤进行讲解,分别适合初级、中级、高级程序员进行理解,三个步骤分别为:1、SendMessage、PostMessage的运行机制。2、SendMessage、PostMessage的运行内幕。3、SendMessage、PostMessage的内部实现。注:理解这篇文章之前,必须先了解Windows
2013-06-24 18:48:54 670
转载 fatal error C1083: 无法打开预编译头文件
一、出现此错误首先检查:stdafx.cpp文件上右键——属性,预编译头选“创建”,其它cpp选“使用”。二、如果是采用这样的设置,还是有错误,重新生成解决方案,重新调试。三、实在不行的话,步骤/方法右键点击你创建的项目,选择“属性标签”点击属性,弹出“项目属性页”,在左侧找到以下位置 配置属性 --> C/C++ --> 预编译头,并选择它:在右边的菜单中选择 “创建/使用
2013-06-23 14:09:18 1168
转载 探讨C++ 变量生命周期、栈分配方式、类内存布局、Debug和Release程序的区别(二)
本文会以此问题作为讨论的实例,来具体讨论以下四个问题:(1) C++变量生命周期(2) C++变量在栈中分配方式(3) C++类的内存布局(4) Debug和Release程序的区别 1、Debug版本输出现象解析先来说说Debug版本的输出,前5次输出,交替输出,后5次输出,交替输出,但是,前
2013-06-21 18:39:09 821
转载 探讨C++ 变量生命周期、栈分配方式、类内存布局、Debug和Release程序的区别(一)
本文会以此问题作为讨论的实例,来具体讨论以下四个问题:(1) C++变量生命周期(2) C++变量在栈中分配方式(3) C++类的内存布局(4) Debug和Release程序的区别也许您觉得这些讨论问题没有实际意义,应该多做些提高生产力的事情,如同重复发明轮子也是没有意义的。笔者同意这个观点,但是,作
2013-06-21 18:38:03 932
转载 心-脑-手
在这个博客上说了很多次的东西了,逐渐认识进一步加深,希望从idea逐渐转化为行动。修心修身人的能力并非一成不变的,对同一个人在不同时候的“战斗值”也是有很大不同。维持在一个高能力状态,我觉得可以包括这样几个因素:心灵的修炼心无旁骛与无我的状态良好的身体状态而个人的能力如果高%10那么不只是做事情的量会高%10,关键是水平会变高。
2013-06-21 13:06:14 962
转载 UML之六——部署图(Deployment Diagram)
概述部署图(deployment diagram,配置图)是用来显示系统中软件和硬件的物理架构。从部署图中,您可以了解到软件和硬件组件之间的物理关系以及处理节点的组件分布情况。使用部署图可以显示运行时系统的结构,同时还传达构成应用程序的硬件和软件元素的配置和部署方式。 一个UML部署图(对象管理组织2001)描述了一个运行时的硬件结点,以及在这些结点上运行的软件组件的静态
2013-06-20 21:59:33 1676
转载 UML图之五——时序图
一、什么是时序图序列图表示了系统在参与者互动执行某一个用例期间,系统内部的一群对象的协作情况。一个用例就对应一个时序图。序列图是对系统动态行为进行描述。用于用例分析和设计阶段。 二、对比1、序列图和协作图序列图跟协作图相似,两种图传递的意思是一样的。不同的是序列图强调的是消息的传递顺序,它将交互关系表示为一个二维图。纵向是时间轴,横轴是对象,对象的生命周期沿
2013-06-20 21:56:59 3733
转载 VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析
BackgroundMSDN中对于在不同的配置下Link的LIB作了说明:C Runtime Library:开关对应的库版本/MDMSVCRT.LIB多线程DLL的Release版本/MDdMSVCRTD.LIB多线程DLL的Debug版本
2013-06-20 10:00:54 1152
翻译 高质量C++编程(二)表达式和基本语句
与零值比较1 布尔变量与零值比较[cpp] view plaincopyprint?//直接使用变量名判断 推荐风格 if (flag) // 表示flag 为真 if (!flag) // 表示flag 为假 不良风格 if (flag == TRUE) if (flag == 1 )
2013-06-19 23:16:36 784
原创 SQLServer2008问题
1. 由于先装了VS开发环境造成的,需要删除 C:\Users\username\AppData\Local\Microsoft_Corporation\LandingPage.exe_StrongName_ryspccglaxmt4nhllj5z3thycltsvyyx\10.0.0.0\user.config 来解决2.先把SQL Server卸载,再把安装时产生的“Microsoft
2013-06-18 23:58:47 996
转载 C++纯虚函数 virtual =0
C++纯虚函数 virtual =0 参考:http://hi.baidu.com/cunlin/blog/item/d82b160102e0e4037aec2ccb.html (百度空间) ========================================================================= C++中的
2013-06-18 12:54:34 1046
翻译 高质量C++编程(一)防止头文件重复引用
【规则1-2-1】为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预处理块。 一、为什么会出现头文件被重复引用的问题 在一个CPP文件中,可以包含多个头文件,而头文件间又是可以相互引用的,这就导致一个CPP文件中可能间接多次包含某个头文件,如果头文件中 没有防止 多次编译的语句,就会出现头文件被重复定义的编译错误二、怎么防止 头
2013-06-16 23:03:32 5348 1
转载 UML图之四——活动图
活动图是一种流程图,用来描述活动的序列,从一个活动到另一个活动的控制流。活动图的作用:描述用例,描述类的操作。 活动图的构成必要组成元素:1、活动:命令的执行,活动的进行。图符表示:2、状态:开始状态,结束状态。图符表示: 3、转移:活动之间,活动与状态之间的转换。4、判断:对一个动作或
2013-06-08 22:45:13 1348
转载 UML之三——状态图
状态图(状态机图):表示一个模型元素在其生命期间的情况:从该模型元素的开始状态起,响应事件,执行某些动作,引起转移到新状态,又在新状态下响应事件,执行动作,引起转移到另一个状态,如此继续,直到终结状态。状态图(状态机)包含以下内容:状态,事件,组合状态 1、状态。状态名字,进入动作,退出动作,状态中发生的活动(状态内活动,状态向外发送的活动)。2、事
2013-06-08 22:31:50 1171
转载 UML图之二——类图
类是面向对象编程的基础。用一个简单的表格来来说明面向对象技术是如何对现实世界进行描述的: 类与现实的对比现实世界面向对象技术由事物组成用对象来描述事物事物之间有共性,可以归纳类是具有相同共性的抽象描述事物存在联系,需要交流消息,
2013-06-08 22:04:13 1026
转载 COM组件间调用的性能问题
多线程编程是大家都比较头疼的问题,不小心就会碰到死锁,野指针,同步调用问题等等,虽然在客户端编程方面会带来不少好的体验,比如界面和处理在不同的线程,则不会卡住界面,但是相对于他的副作用来说,让不少人还是望而却步。 QQ 客户端就是这样一个例子,从QQ重构的3个大版本来说,也一直在回避这个问题。Hummer在设计的时候为了防止编程的复杂性和后期的难以维护,也主动放弃了多线程特性(部分底层,
2013-06-08 16:33:01 1611
转载 UML图之一——用例图
一、什么是用例图?什么时候用到用例图?要了解用例图(use case diagram),先要清楚用例。什么是用例(use case)呢?用例简单的说就是在确定项目需求时,不展现系统内部结构的情况下对系统功能的描述,不过一个Use Case描述的是整个系统功能的一部分,这一部分一定要是在逻辑上相对完整的功能流程。 用例图是在项目启动开始用到的图,它定义了系统的功能
2013-06-06 21:48:55 1030
转载 简单的程序诠释C++ STL算法系列之四:adjacent_find
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 adjacent_find算法用于查找相等或满足条件的邻近元素对。其有两种函数原型:一种在迭代器区间[first , last)上查找两个连续的元素相等时,返回元素对中第一个元素的迭代器位置。另一种是使用二元谓词
2013-06-06 21:28:31 790
转载 简单的程序诠释C++ STL算法系列之三:find_if
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 find_if算法 是find的一个谓词判断版本,它利用返回布尔值的谓词判断pred,检查迭代器区间[first, last)上的每一个元素,如果迭代器iter满足pred(*iter) == true,表示找到元
2013-06-06 21:18:05 927
转载 C++ 关键字typeid
在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。在C++中,为了支持RTTI提供了两个操作符:dynamic_cast和typeid。 dynam
2013-06-06 17:03:44 669
转载 C++箴言:理解typename的两个含义
问题:在下面的 template declarations(模板声明)中 class 和 typename 有什么不同? template class Widget; // uses "class"template class Widget; // uses "typename" 答案:没什么不同。在声明一个 template type paramet
2013-06-06 14:42:04 645
转载 简单的程序诠释C++ STL算法系列之二:find
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 find算法用于查找等于某值的元素。它在迭代器区间[first , last)上查找等于value值的元素,如果迭代器iter所指的元素满足 *iter == value ,则返回迭代器iter,未找则返回last
2013-06-05 22:51:47 781
转载 简单的程序诠释C++ STL算法系列之一:for_each
C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。 for_each用于逐个遍历容器元素,它对迭代器区间[first,last)所指的每一个元素,执行由单参数函数对象f所定义的操作。 原型:[cpp] view plaincopy
2013-06-05 22:43:08 958
翻译 技术小品文(二)模棱两可的陷阱
“为什么会这样?!”,zero 一边喝水一边嘟囔着,恨恨的看着面前显示器上的代码,“为什么这么简单的一个调用也会出现编译错误 …… ” “这是因为你的设计太差!” 噗!zero 被幽灵一样出现在背后的 Solmyr 吓了一大跳,一口水差点全喷出来。 “咳!咳咳!S …… Solmyr ,你什么时候站在我背后的?”,zero 很费力的平息了咳嗽,同时努力回想刚才自己有没有把柄会被 Sol
2013-06-05 19:24:04 972
转载 C++ 对象构造, 拷贝, 赋值和隐式类型转换总结
C++ 中对象创建(构造)、拷贝、赋值、隐式类型转换的阶段性总结关心效率和拷贝开销,写在代码注释中关键字:对象创建、拷贝构造、赋值、隐式类型转换、explicit、按值传递 (passed by value)、按引用传递 (passed by reference)、参数传递、返回值传递测试环境 VC 2010目录对象创建总结拷贝的传递传递到基类的拷贝
2013-06-05 09:14:43 1202
转载 C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)
详解link 有 些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不要)这样那样设计。了解本文之后, 或许会有一些答案。 首先看看我们是如何写一个程序的。如果你在使用某种IDE(Vi
2013-06-04 19:05:18 4442
翻译 C++编译器无法捕捉到的8种错误
摘要:C++是一种复杂的编程语言,其中充满了各种微妙的陷阱。在C++中几乎有数不清的方式能把事情搞砸。幸运的是,如今的编译器已经足够智能化了,能够检测出相当多的这类编程陷阱并通过编译错误或编译警告来通知程序员。C++是一种复杂的编程语言,其中充满了各种微妙的陷阱。在C++中几乎有数不清的方式能把事情搞砸。幸运的是,如今的编译器已经足够智能化了,能够检测出相当多的这类编程陷阱并通过编译错
2013-06-04 12:59:21 788
翻译 COM学习笔记(一)初识COM
COM--ComponentObject Model,组件对象模型。一向以难学著称,有人曾说过这样的话:世界上只有两个程序员真正理解COM,他们都在微软工作。这句话虽然有点过,但基本上说出了COM确实有些难理解。不过,不用担心,本文并不探求多深多高的技术领域,而是带领大家浏览一下我们的COM,就像本文的题目一样:初识COM。首先,我们先来了解一下有关COM的概念:COM(Component
2013-06-04 09:04:15 1035
转载 类型转换-基类和派生类之间的转换
对于内置类型,类型之间的转换比较明显,而且接触得比较多,但是对于自定义类型,尤其是基类和派生类之间到底可以有哪些转换我还是比较模糊,翻了翻书,同时自己试了试,总结如下(如有不对地方,欢迎支持): 1.子类转成父类using namespace std;class A { public: void display() {
2013-06-03 15:15:22 2439
原创 关于类中类型转换
[cpp] view plaincopy#include using namespace std; // example1:单参数构造函数可将内建类型转换为自建的类类型 class A { public: A(double i=0.0){d=i;} void print() {
2013-06-03 15:01:08 772
转载 未定义基类
此错误是编译错误,和“inclued头文件“有关问题描述有三个头文件AgentSDK.h、AA.h、BB.h,其中CBB类继承自CAA。头文件包含顺序如下,1.AA.h包含AgentSDK.h2.AgentSDK.h包含BB.h3.BB.h包含AA.h原因分析:编译器首先编译AA.h,因其包含AgentSDK.h,引入AgentSDK.h继续
2013-06-03 11:14:28 3229
转载 弧度和角度的转换
这两天在看同事写的四叉树代码,其中用到了孤度和角度之间的转换,所以转载此文章进行了学习 2009-12-01弧度与角度的关系一、角的两种单位 “ 弧度”和“度”是度量角大小的两种不同的单位。就像“米”和“市尺”是度量长度大小的两种不同的单位一样。 在flash里规定:在旋转角度(rotation)里的角,以“度”为单位;而在三角函数里的角要以“弧度”为
2013-06-03 10:10:31 2684
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人