自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 test

#define GDIPVER 0x0110 //定义高版本的GDI+(1.1) #include #include #include #include #pragma comment(lib,"GdiPlus.lib") using namespace Gdiplus; VOID OnPaint(HDC hDC) { /

2012-11-12 16:42:33 699

转载 C++字符指针的特殊

转  如果我们对一个非字符的指针进行操作,方法是这样的:   定义:     (1)int a=7; int *p=&a; 或者     (2)int a=7; int *p; p=&a; 或者     (3)int a=7; int *p; *p=a;   (1)这样定义的原因是因为等号两边的类型必须匹配,int *p=&a; 等号左边定义的是一个指针,指针的内容

2012-07-19 17:09:01 3178 2

原创 win7下关闭 最大化最小化时候的动画

SystemParametersInfo( SPI_SETANIMATION, animInfo.cbSize,&animInfo,0);ANIMATIONINFO animationInfo={sizeof(ANIMATIONINFO),0};SystemParametersInfo(SPI_GETANIMATION,sizeof(ANIMATIONINF

2012-03-08 17:12:51 2236

转载 win api 路径操作函数

一个朋友整理的放在他网站上lilu.name,用的时候看的也方便,就贴过来,表示感谢...路径截断与合并函数   PathRemoveArgs去除路径的参数PathRemoveBackslash去除路径最后的反斜杠“\”

2012-02-22 17:06:00 957

转载 Detours使用说明

Detours使用说明 1 介绍2 Detours API hook2.1 hook DLL 中的函数2.2 hook自定义c 函数2.3 hook类成员函数2.4 DetourCreateProcessWithDll2.5 Detouring by Address 1 介绍  Api hook包括两部分:api调用的截取和api函数的重定向。通过api

2012-02-06 16:02:38 922

原创 windows 双缓冲绘图

windows双缓冲的作用:解决大多数闪烁问题因为,当我们需要不停的在屏幕上绘制图案的时候,窗口会不停的被重绘,这就导致出现闪烁问题。双缓冲技术的原理: 先将要绘制的图全部写进一个内存DC里,然后将内存DC里的内容,一次性绘制到窗体上。简单的说一下步骤:1.创建一个窗体的兼容DC:                                 HDC hdcD

2012-01-05 19:30:36 3216

原创 GDI+ 画路径(消除锯齿的效果很不错)

在VS2005里使用GDI+1、 先包含相应的头文件并引入库#define GDIPVER 0x0110 #include #include #include #include #pragma comment(lib,"GdiPlus.lib")using namespace Gdiplus;2 、在合适的位置 初始化GDI+,具体位置自己随机应变哦 /

2012-01-04 21:55:51 12501 1

原创 GDI+ 相关用法

#define GDIPVER 0x0110 //定义高版本的GDI+(1.1)#include #include #include #include #pragma comment(lib,"GdiPlus.lib")using namespace Gdiplus;VOID OnPaint(HDC hDC){ //在此处添加重绘代码}LRESULT WINAPI W

2012-01-04 18:45:02 4562 1

翻译 std::min std::max

Where are std::min() and std::max()?The Standard Library defines the two template functions std::min() and std::max() in the header. In general, you should use these template functions for calc

2012-01-03 23:20:03 16147 2

原创 windows 截屏api

/*----------------------------------------BRICKS1.C -- LoadBitmap Demonstration(c) Charles Petzold, 1998----------------------------------------*/#include #include #include #include //#includ

2011-11-24 17:29:24 14483

原创 连接图片(二),实现根据鼠标方向,平滑移动

/*----------------------------------------BRICKS1.C -- LoadBitmap Demonstration(c) Charles Petzold, 1998----------------------------------------*/#include #include #include LRESULT CALLBACK Wn

2011-11-22 15:31:50 1563

原创 win32 连接图片

win32连接图片原理:                             将图片1写入到一个 内存位置,将图片2写到另一个内存位置,然后新建一个新的足以容纳这2张图片的内存,分别将2个图片,依次拷贝到较大的新的内存位置.先来看看代码:        /*----------------------------------------BRICKS1.C -- LoadB

2011-11-21 22:15:08 773

原创 I/O完成端口

I/O完成端口背后的理论是并发运行的线程的数量必须有一个上限。看一段代码:/ 异步方式调用.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespace std;PTP_WOR

2011-07-25 20:53:18 795

原创 用 QueueUserAPC() 函数来强制线程退出等待状态

当系统创建一个线程的时候,会同时创建一个与线程相关的队列。这个队列被成为异步过程调用(APC)队列。同时我们也知道,windows提供了6个函数可以等待并将线程设置为可提醒状态--------- SleepEx(),WaitForSingleObjectEx(),WaitForM

2011-07-11 16:28:55 6733 2

原创 让可等待的计数器添加APC应用

当计数器触发的时候,Microsoft允许计时器把一个异步过程调用(APC)放到SetWaitableTimer的调用线程的队列中。     通常,当我们调用SetWaitableTimer的时候,会给pfnCompletionRoutine 和 pvArgToCompletio

2011-07-06 22:48:05 1113

原创 windows 条件变量

我们已经看到,当想让写入者线程和读取者线程以独占的方式或共享的方式访问一个资源的时候,可以使用SRWLock。在这些情况下,如果读取者线程没有数据可以读取,那么它应该将锁释放并等待,直到写入者线程产生了新的数据为止。如果用来接收写入者线程产生的数据结构已满,那

2011-07-03 21:19:01 10193 4

原创 windows critical section (关键段)

不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它进行访问。每个线程中访问临界资源的那段代码称为临界区(Critical Section)。  每个线程中访问临界资源的那段程序称为临界区(Critical Section)(临界资源是一次仅允许一个线程使用的共享资源)。每次只准许一个线程进入临界区,进入后不允许其他线程进入。不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它

2011-06-30 23:57:00 3311

原创 原子访问--- Interlocked系列函数

我们都知道,windows是一个抢占式的多线程环境,因此系统可能会在任意时刻暂停一个线程,切换到另一个线程让新的线程继续执行。请看这段代码: // Interlocked.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include using namespace std;DWORD WI

2011-06-30 14:49:00 846

原创 关于windows 伪句柄

      《windows核心编程》里提到了“伪句柄”一词,故名思议,它并不是真的句柄,有时候不会达到你想要的效果。边看代码,边解释代码如下:    // 伪句柄.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #include using namespace std;

2011-06-27 16:59:00 1476

原创 references count 以及copy on write

   产生一个reference-counted String class 并不困难,但是必须注意许多细节。  比如 copy-on-write         Pointers,References,以及copy-on-Write         考虑以下代码:         String s1 = "hello";         char *p =&s1[1];

2011-06-09 16:34:00 549

原创 C++ Smart Pointers 和“与继承有关的”类型转换

     我们真正想要知道的是如何能够使“smart pointer classes的行为”在“与继承相关的类型转换”上,能够和dumb pointers一样。答案很简单:不能够。Daniel Edelson 指出:smart pointers虽然smart,却不是pointers。是的,我们所能做的最好情况就是使用member templates来产生转换函数,然后再在其中出现模棱两可的时候使用

2011-06-07 22:23:00 714

原创 C++ virtual constructors virtual copy constructors 以及non-memeber functions的行为虚化

   C++中,所谓的 virtual constructors是某种函数,视其获得的输入,可产生不同类型的对象。-----《more effective c++》  virtual constructors 在许多情况下有要有用,其中之一就是从磁盘读取对象信息。    下面是一个小实例,比如,我在项目的根目录下,新建一个文本文件 a1.txt,文件中的内容是(Derone,Der

2011-06-06 19:49:00 781

原创 More effective c++ 11(禁止异常(exceptions)流出destructors之外)

<br />    当对象被exception处理机制------也就是exception传播过程中的stack------unwinding(栈展开)机制-----销毁。<br />    当destructor被调用时,可能有一个exception正在作用之中。可惜的是我们无法在destructor内区分这些状态。于是,必须在保守的假设下(假设当时有个exception正在作用中)撰写你的destructors。因为如果控制权基于exception的因素离开destructor。而此时正有另一个exce

2011-06-01 23:30:00 1150

原创 C++ 单例模式的具体实现

<br /> C++单例模式的实现方法多样化,应用比较灵活,大家可以根据自己编程中不同的需求来决定使用哪种方法来实现这一功能。C++是款应用非常广泛的计算机编程语言。它支持多种程序设计风格,其中包括对面向对象设计的支持。今天为大家介绍的C++单例模式也称为单件模式、单子模式。使用单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出等。<br />C++单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做

2011-05-07 11:19:00 886

转载 asser断言 (转载)

<br /><br />assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:<br />#include <assert.h><br />void assert( int expression );<br />assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,<br />然后通过调用 abort 来终止程序运行。<br />请看下面的程序清单badptr.c:<br />#inclu

2011-04-13 22:09:00 701

原创 C++ handle classes

<br />C++中,使用handle classes(句柄类)的目的,是为了降低文件之间的编译依存关系。<br /><br /><br />摘自网上的一段话:<br />       需要句柄类的背景: <br /> 1)在对安全要求很高的领域,即使核心实现已经封闭在库中不可见,但头文件中变量定义仍可能曝露一些内部信息 <br />2)在设计初期、实现部分会经常变动,甚至头文件中变量定义也需要经常变动,因此在重编译的时候头文件也需要编译,有时候导致编译时间过长。 句柄类就是为了解决这类问题<br /><b

2011-04-12 09:52:00 7850 2

转载 C++ const引用详解

<br /><br />文章转自 http://blog.csdn.net/k2eats/archive/2008/06/12/2541790.aspx<br /><br /><br /><br />(1)       在实际的程序中,引用主要被用做函数的形式参数--通常将类对象传递给一个函数.引用必须初始化. 但是用对象的地址初始化引用是错误的,我们可以定义一个指针引用。<br />1 int ival = 1092;<br />2 int &re = ival;   //ok<br />3 int &r

2011-04-10 10:40:00 829

原创 non-local static 变量初始化顺序不确定,带来的问题

    所谓static对象,其寿命从被构造出来直到程序结束为止,因此stack和heap-based对象都被排除。这种对象包括global对象、定义于namespace作用域内的对象,classes内、在函数内、以及在file作用域内被声明为static的对象。函数内的static对象称为local static对象(因为它们对函数而言是local),其他static对象成为non-local static对象,在程序结束时static对象会被自动销毁,也就是他们的析构函数会在main()结束时被调用  

2011-04-08 15:59:00 3381 1

原创 C++ 深拷贝和浅拷贝 (转载,感谢作者)

对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include using namespace std;class CExample {private:  int a;public:  CExample(int b)  { a=b;}  void Show ()  {

2011-04-07 21:33:00 521

原创 C++primer 习题9。25答案错误,正确答案如下

<br /><br />#include<iostream><br />#include<vector><br />#include<list><br />using namespace std;<br />int main()<br />{<br />int ia[]={0,1,1,2,3,5,8,13,21,55,89};<br />vector<int> ivec(ia,ia+sizeof(ia)/sizeof(int));<br />list<int> ilist(ia,ia+sizeof(ia)/

2011-03-11 10:58:00 646

原创 I/O 文件操作

#include#include#include#include #include using namespace std;int FiletoVector(const string& ,vector &);  //声明函数 int main(){vector svec;string filename;coutcin>>filename;    switch (FiletoVector(filename,svec))    //函数调用{case 0:break;case 1:cout

2011-03-08 21:46:00 469

原创 C++指向函数的指针做函数的形参

<br /><br />#include<iostream><br />#include<vector><br />#include<string><br />using namespace std;<br />int fun(const int);<br />//int fun(const int&,const int&);<br />int fun(int ,int);<br />string fun(const string,const string);<br />int fun(int ,int(*

2011-03-07 12:21:00 907

空空如也

空空如也

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

TA关注的人

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