自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(27)
  • 资源 (9)
  • 收藏
  • 关注

转载 Win32 异常处理

这回接着处理上一篇文章留下的问题:如何处理EXCEPTION_DEBUG_EVENT这类调试事件。这类调试事件是调试器与被调试进程进行交互的最主要手段,在后面的文章中你会看到调试器如何使用它完成断点、单步执行等操作。所以,关于这类调试事件的处理很自由,调试器的作者可以根据需要进行不同的处理。但是,在对其进行处理之前必须要了解一些关于异常的知识,这也是本文的重点。(本文的内容参考了《软件调试》一书)

2013-05-09 23:17:45 840

转载 Autoexp.dat

使用VS2008进行调试时,有些变量显示不够直接,需要一层一层的展开才能得到直观的变量内容。虽然不难,但是很影响效率。我们可以通过修改autoexp.dat来修改变量在debug Visualizer的显示。 第一步,打开调试时对变量进行Auto Expand功能 第二步,很关键,也是本文关注的重点。autoexp.dat文件在 VS的安装目录Common7\Packa

2012-10-10 08:44:52 1130

原创 函数对象的简单应用

在一些管理系统中,经常需要对这种那种属性进行比较排序。可以通过stl容器跟函数对象将代码写的非常简洁。简单的事例: #include #include #include using namespace std;struct StudentInfo{public: struct SortHelper { enum SortField {

2012-09-26 15:36:59 310

原创 VS调试技巧

调试技巧1 Visual Studio的调试技巧VS调试器是一功能非常强大的调试工具。使用调试器,可以中断程序的执行以检测代码逻辑的正确性,计算和编辑程序过程中的变量。在使用VS调试代码的过程中,多使用VS提供的快捷键,减少鼠标移动时间,提高调试的效率。 1.1 常用快捷键:F5执行到下一个断点Shift + F5停止调试

2012-09-21 08:42:28 625

转载 函数对象

[STL]函数对象/仿函数  提到C++ STL,首先被人想到的是它的三大组件:Containers, Iterators, Algorithms,即容器,迭代器和算法。容器为用户提供了常用的数据结构,算法大多是独立于容器的常用的基本算法,迭代器是由容器提供的一种接口,算法通过迭代器来操控容器。接下来要介绍的是另外的一种组件,函数对象(Function Object,JJHou译作Func

2012-09-21 08:33:31 466

转载 new & delete

C++里允许用户通过自定义operator new的方式来更改new表达式的行为,这给了程序员定制内存管理方案的自由。但是享受这种自由的时候必须遵守一定的规范,具体可以参见《Effective C++ 2nd》的相关条款。本文补充解释一些特别容易引起误解的问题。     operator new和operator delete都有其正规形式(normal signature):

2012-09-21 08:16:24 257

原创 注册C函数在main函数前执行

定义一个C函数:void CInit(){ atexit(CExit); printf("4\n");}将一CInit函数指针存放到 ".CRT$XC*"段中 (*为B-Y之间)typedef void (__cdecl *PVFV)();#pragma section(".CRT$XCD", long, read)__declspec(allocate(".C

2012-09-20 21:28:43 5836

原创 简单的程序效率分析工具

QcFunctionProfiler.h:#ifndef QC_FUNCTION_PROFILER_H#define QC_FUNCTION_PROFILER_H/*** 这工具用于分析多程序片段运行的时间.** ** 用法:** 1) 用宏PROFILER_FUNCTION_ON() 打开分析开关** 2) 在需要分析片段的前后分别加上 PROFILER_FU

2012-08-31 09:37:44 314

原创 MFC 消息类型

MFC 消息类型:按照消息的范围来分,可以分成四大类消息:1)  系统消息                                     (0                     到WM_USER–1)2)  窗口类内部自定义消息         (WM_USER

2011-07-24 11:04:39 2484

原创 MFC的消息过程

MFC 窗口消息流程:     MFC把Windows的窗口句柄HWND封装成一个CWnd类,每个MFC窗口类(对话框除外)的Create最终都是会调用基类的CWnd::CreateEx过程。在CWnd::CreateEx过程中:1)  调用PreCreateWindow虚函数允

2011-07-23 19:08:07 997

原创 VS快捷键提高开发效率

Tools--àCustomize--àKeyboard. 弹出快捷键设置对话框。查找命令是一般是用菜单上的字符串去检索。具体有什么技巧可以快速的找到想要的命令。这个就不得而知。 常用的VS默认快捷键1)收缩代码定义Ctrl+M, 命令 快捷键 功能 edit.to

2011-07-11 22:42:14 736

转载 LockWindowUpdate 的误用

LockWindowUpdate系列1:LockWindowUpdate的行为?<br />对LockWindowUpdate可怜的误解。 这是关于LockWindowUpdate系列的第一篇。LockWindowUpdate的行为,它是用于做什么的,以及(可能更重要的是)它不是用于做什么。 LockWindowUpdate做的事情其实很简单。当一个窗口被“锁定”,所有向它及其子窗口的绘制都会失败。取代绘制操作的是,窗口管理器记住了应用程序试图在窗口的哪一部分中进行绘制。当窗口“解锁”后,这些区域被

2011-06-01 21:49:00 987

原创 单件模板

<br />单件在实际开发过程中用的很多。就类似C中的全局变量一样。下面介绍两种单件的写法:<br />第一种:使用模板<br />template <class T><br />class QcSingleton<br />{<br /> friend typename T;<br />private:<br /> QcSingleton(){}<br />public:<br /> ~QcSingleton(){}<br /> static T* GetInstance()<br /> {<br /> 

2011-05-17 22:44:00 216

原创 连续序列最大和

<br />int arrayNum[] = {-2,1,-4,6,-5, 10,-1, 4,-1,2,-5,10,-7,-1,-1,-50};<br />int GetMaxSum(int* pNum, int n)<br />{<br />    int SecondMax = pNum[0];<br />    int Max = pNum[0];<br />    int beginIndex = 0;<br />    int endIndex = 0;<br />    int i = 0;<b

2011-04-06 22:16:00 204

转载 OSG在VS2008下的配置安装

这两天心血来潮,突然想学点OSG的东西,其实OSG本身是挺好用的,就是编译安装有点让人头疼,佛祖保佑,终于编译成功了,为便来着参考,将过程记录如下:一、准备工作下载相关的工具软件:1, 最新版的OSG库:OpenSceneGraph-2.8.2.zip。2, 安装源代码所需要的工具:cmake-2.6.4-win32-x86.zip3, Windows支持的图像库:3rdParty_Win32Binaries_vc90sp1.zip,因为我用的是vc2008,如果用vc05应该有其它针对的版本4, 数据文件

2011-04-05 20:33:00 314

转载 Qt集成到VS2008中 ( Qt4.5.1 + qt-vs-addin-1.0.0 )

<br />如何将Qt集成到VS中,网上已经有不少的文章。我前一段时间试了一下,花了三天时间,编译了好几次才算是完全编译成功,并把Qt4.5.1集成到了VS2008中。在这里把经验分享一下。<br />    1、首先确保VS2008安装好,我用的是VS2008英文版,最好不要用Express版的,因为如果用这个精简版本,qt-vs-addin装不上去。而且VS2008中文版我试过,qt-vs-addin不能用,不知道是怎么回事。<br />    2、下载qt-win-opensource-src-4.5

2011-04-05 20:28:00 248

原创 防止类被派生

<br />可以通过虚拟继承来实现此功能。<br />建立一个辅助类Assistant,不包含有任何数据,仅仅是将构造函数私有化,设置目标类TargetClass为友元类。让目标类TargetClass派生于辅助类TargetClass。如下:<br />classAssistant<br />{<br />    friendclassTargetClass;<br />private:<br />         Assistant(){}<br />};<br /> <br />classTarget

2011-04-05 13:33:00 188

原创 修改基类访问权限

<br />问题:我们经常扩展别人写好一个类的功能,为了防止别人错误地使用我们扩展的功能,我们需要屏蔽直接调用原基类的功能。例如:<br />classbase{ <br />public:<br />         voidDo(){}<br />         voidAdd(base* pBase){} <br />         voidRemove(base* pBase){}<br />};<br />//我们扩展base的Add, Remove功能,在这两个函数里需要处理一些derive

2011-04-05 13:31:00 377

原创 输出小于某个数的所有质数

<br />void PrimeNumberArray(int number)<br />{<br />    if (number > 1)<br />    {<br />        number += 1;<br />        int* pNumberArray = (int*)malloc(sizeof(int) * number);<br />        for (int i=0; i<number; i++)<br />        {<br />            pNum

2011-04-05 10:27:00 309

原创 整数拆分N个数的和

<br />例如:<br />4=1+1+1+1;<br />4=1+1+2;<br />4=1+3;<br />4=2+2;<br />4=4;<br /> <br />代码实现:<br />int buf[50] = {0};<br />int num = 10;<br />void separateNumber(int number, int nPart, int nIndex)<br />{<br />    if (nPart == 1)<br />    {<br />        buf[n

2011-04-03 21:18:00 1132

原创 强制友元法

<br />    很多时候我们都是基于一些别人写好的库来实现我们的功能,然而有时我们是很有需要修改一些库开发者不期望被修改的代码时.例如:<br />Class CObject1<br />{<br />Friend class object2;<br />Protected:<br />         Int m_value;<br />}<br />Class CObject2<br />{<br />Public:<br />Vitrual  Void DoSomething()<br />{<b

2011-04-03 11:21:00 166

原创 计算一个数的阶乘值

<br />//假设得到的值不会超过100位<br />void factorial(int buf[100],int num)<br />{<br />    buf[0]=buf[1]=1;<br />    for(int currentN=1;currentN<=num;currentN++)<br />    {   <br />        int index = 0;<br />        for(index=1;index<100;index++) <br />        {<br

2011-04-03 10:44:00 262

原创 输出一个序列的全排列

<br />int arrayNum[] = {1,2,3,5};<br />void printArray(int nIndex)<br />{<br />    int n = sizeof(arrayNum) / sizeof(arrayNum[0]);<br />    int temp = arrayNum[nIndex];<br />    //递归到最后一个元素,输出<br />    if (nIndex == n -1)<br />    {<br />        for (int j

2011-04-03 10:11:00 241

原创 C/C++之反转链表

<br />1)<br />node* resver(node* pNode)<br />{<br /> node* pPre = NULL;<br /> node* pCurrent = pNode;<br /> node* pNext = NULL;<br /> while (pCurrent)<br /> {<br />  //先保存当前结点的下一结点<br />  pNext = pCurrent->pNext;<br />  pCurrent->pNext = pPre;<br />  //将链表

2011-04-03 08:40:00 697

原创 预编译

编译器为了加快编译速度,默认将一常用的,不经常修改的一头文件设成预编译头文件。这个头文件在工程编译开始前,先将预编译头文件先展开编译好。编译.cpp,  .c等源文件,若此文件是使用预编译头的话,编译器会忽略一切代码直到遇到 #include 预编译头文件,当然也可以不使用预编译头。例如:a.h,  被设成预编译头文件。b.cpp#include “stdio.h”aaa#include “a.h”则编译b.cpp时,   #include “stdio.h”aaa这些语句会被忽略,尽管aaa语句不合法,编

2011-04-01 20:07:00 216

原创 宏的简单总结

<br />1)       宏中"#"和"##"的的简单用法:<br />“#” 可以把宏参数变成一个字符串。<br />“##” 可以把两个宏参数链接成一个符号。<br />例如:<br />#define STR(s)  #s<br />#define CONNECT(a, b)   { a##e##b}<br />int main() <br />{ <br />       printf(STR(abc));           // 输出字符串"abc" <br />      printf("

2011-04-01 19:36:00 180

原创 scanf函数的用法

<br /><br />很多编程初学者在用scanf()函数的过程当中遇到不少的问题。比如:1:想要输入一个含有空格,tab键的字符串,该怎么办呢?2:当一不小心输入的数据与输入的格式不匹配,该如何从新输入呢?<br />    1: 对于第一个问题,很多人想直接通过scanf("%s",str); (str是一字符指针); 你会发现空格或者tab键后面的字符串并没有输入到str中。这是因为scanf遇到空格就默认为一个数据输入的结束。为了解决这个问题,我们可以用%[]的格式输入。例如:<br />#inc

2011-03-20 20:56:00 223

VS调试技巧

VS调试技巧 。

2012-09-21

MFC Scroll模板类

这是一个滚动窗口的MFC模板类,模板类内部会处理好滚动位置,鼠标坐标转化,绘制坐标的转化。

2011-07-25

MFC 2008 新特性介绍

这是一介绍MFC SP1新特性的一些用法。重点讲解了菜单,Ribbon栏,工具栏的用法。

2011-05-17

扩展CMFCRibbonBar的功能

扩展了CMFCRibbonBar的功能,使得在Ribbon上能显示菜单,能拖拽RibbonPanel, 能显示动态ToolTip.

2011-05-17

MFC sp1学习示例

这是MFC SP1提供的学习例子,在VS2010的安装目录下有,我把它改成2008工程而已

2011-05-17

基于MFC SP1的自定义皮肤

这是一个基于MFC SP1的一个自定义皮肤工具。此程序主要是把MFC皮肤资源的加载方式改成从res\QcSkin\文件夹中加载。用户只要编辑好res\QcSkin\里面的文件后,更新一些界面就能看到效果了。以后有机会可以再扩展自定义皮肤的格式,即res\QcSkin\Style.xml

2011-05-16

VC写的仓库管理系统

这是一年前帮别人写的毕业设计课题,主要实现了一些简单的仓库管理功能。实现了mdb数据库文件的查询,插入,删除,修改。当时由于时间的原因,代码写的比较乱。有点价值的估计就只有CListCtrlEx,CEditInListCtrl,CDBConnector这几个类了。

2011-05-14

用Win32从头封装各种MFC界面类

用Win32从头封装各种MFC界面类,以及各种封装类的使用例子

2011-05-14

GDI矢量绘图小程序

几年前在学校写的一个矢量绘图小程序。主要涉及:点,线的绘制,修改,删除。当初编程经验不足,没有灵活的运用C++的机制,代码比较乱,这些代码仅供初学者中的初学者学习使用

2011-04-20

空空如也

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

TA关注的人

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