原创 使用宏技巧

技巧一:把枚舉值轉換成字符串 #define CaseEnum(a) case(a):LogMsgToFile(#a,id,time) switch(msg_passed_in){     CaseEnum(MSG_YouWereHit)

原创 避免內存碎片的小技巧

建立一個結構體裏面包含一個指針用來存放數據。 最初的定義是這樣的 typedef struct _NODE {     char *pData;     int nLength; } Node; 使用的時候: Node *pNode =

原创 多線程同步

#include <iostream.h> #include <windows.h> #include <process.h>  //缺少將出現error   C2039:   '_beginthreadex'   :   is   no

原创 HOOK全局鍵盤鉤子

/*******KeyHookLib.h文件*********/ // 定義函數修飾宏,方便引用本DLL工程的導出函數 #ifdef KEYHOOKLIB_EXPORTS #define KEYHOOKLIB_API __declspec

原创 遠程注入線程

#include <windows.h> #include <string.h> #include <Tlhelp32.h> #include <iostream> using namespace std; class Injectio

原创 C++四種類型轉換

dynamic_cast:通常在基類和派生類之間轉換時使用 const_cast:常量轉換成非常量 一、常量指針被轉化成非常量指針,並且仍然指向原來的對象; 二、常量引用被轉換成非常量引用,並且仍然指向原來的對象; 三、常量對象被轉換成

原创 通訊錄管理程序

#include <iostream.h> #include <fstream> #include <string.h> #include <sstream> using namespace std;    //定義文件名 #define

原创 比較字符串不區分大小寫

int compareAb(const char* dst,const char* src){ unsigned char s_tolowerTable[256]; for(int i = 0; i < 256; ++i)    //初

原创 變速齒輪

/* 變速齒輪原理是,遊戲在刷新畫面時會用到時鐘來控制刷新速度,有過遊戲開發的人都知道,一般遊戲鎖定1秒30幀,這樣會很流暢,人眼有視覺停頓,當速度達到1秒16幀的時候,就是在跑動畫了,遊戲用到的計時器有大部分是兩個windows提供的a

原创 C++11 多線程

新特性之描述: 雖然 C++11 會在語言的定義上提供一個內存模型以支持線程,但線程的使用主要將以 C++11 標準庫的方式呈現。 C++11 標準庫會提供類型 thread (std::thread)。

原创 曲面重複紋理填充

#include <GL/glut.h> #include <stdlib.h> #include <math.h> GLfloat ctrlpoints[2][3][3] = { {{-1.5,0,0.0},{0,1,0.0},{3

原创 線段樹

1、概述線段樹,也叫區間樹,是一個完全二叉樹,它在各個節點保存一條線段(即“子數組”),因而常用於解決數列維護問題,它基本能保證每個操作的複雜度爲O(lgN)。2、線段樹基本操作線段樹的基本操作主要包括構造線段樹,區間查詢和區間修改。(1

原创 位操作

#include "stdio.h" #include "stdlib.h" /*-------------------------------------------------------------- 位操作 假設你工作在一個32位

原创 堆排序

#define HEAP_SWAP(a,b) \ do \ {\ int t = a;\ a = b;\ b = t;\ } while (0); // array是待調整的堆數組,i是待調整的數組元素的位置,nlen

原创 ENTER 和 LEAVE

  釋放當前子程序在堆棧中的局部變量,使BP和SP恢復成最近一次的ENTER指令被執行前的值。 ENTER指令相當於 PUSH BP MOV BP,SP LEAVE相當於: MOV SP,BP POP BP