自定义博客皮肤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)
  • 资源 (10)
  • 收藏
  • 关注

原创 构造函数中调用虚函数

在生成派生类Derive的实例时,由Derive的构造函数来调用Base的构造函数先完成基类Base的构建。Base的构造函数中调用虚函数Foo,此时从虚函数表中获取的只能是Base类的虚函数表的地址,因此虚函数Foo绑定的是Base类的Foo,只能执行Base的Foo。

2015-02-02 19:41:21 558

原创 链表宏

#define Destroy(_p) {if (((layer_type *)(_p))->Canvas != NULL) delete[] ((layer_type *)(_p))->Canvas; free(_p);} #define Destroy_(Head, _p) {if (((layer_type *)(_p))->src == (ListNode *)((layer_ty

2015-01-27 21:24:18 419

原创 c++类模板特例化

#include #include using namespace std;template class A{ public: A(){cout << typeid(*this).name() << " construction" << endl;} ~A(){} T1 m_a1; T2 m_a2; T3 m_a3;};

2015-01-18 15:27:55 1903

原创 __declspec(naked) int add(int a, int b)

__declspec(naked) int add(int a, int b){ _asm { mov eax, dword ptr [esp + 0x4] add eax, dword ptr [esp + 0x8] ret }}因为函数开头没有push ebp mov ebp, espebp没有入栈,所以函数参数

2013-08-12 10:45:35 500

原创 Photoshop马赛克效果

void _alpha__fastcall_pre_ TAlpha::Mosaic(AlphaPara *Para){ int left; int top; int right = (left = Para->X) + Para->Width - 1; int bottom = (top = Para->Y) + Para->Height - 1; int linebyte

2013-01-05 14:10:50 458

原创 单图处理的接口函数 Process_Plus

void TAlpha::Process_Plus(HDC hdc, int X, int Y, int Width, int Height, typeprocess_plus_op_fun_ptr op_fun_ptr, void *funPara){ Process_PlusPara pluspara; AlphaPara para; para.X = X; para.

2013-01-04 21:31:01 372

原创 TAlpha类的灰色浮雕处理函数GrayEmboss_1000

//灰色浮雕[maxwidth:1000]void TAlpha::GrayEmboss_1000(byte &r, byte &g, byte &b, byte &a, int x, int y, int width, int height, void *Para){ const int maxsize = 1000; static byte rgb[maxsize];

2013-01-04 14:42:18 519

原创 结构体类型数组int成员变量求和函数

struct stru1{ int a; float b; int c; int d;};struct stru2{ int a; char b[100]; int c; stru1 d;};struct stru1 s1[100];struct stru2 s2[100];...int sum1 = supe

2012-10-10 10:48:18 2987

原创 一维二维数组共用一次new

优化前//非共用的int Height;...const int COL = 3;int *dgree = new int[Height];byte *grgb = new byte[Height * COL];...delete[] dgree;delete[] grgb;优化后//共用的int Height;...

2012-10-01 19:48:51 531

原创 嵌套优化版括号匹配检查

设置三个计数器初值设为零,分别记录小括号、中括号、大括号。开始进行第一次扫描,从左向右依次扫描每个字符,遇到左括号计数器加一,遇到右括号计数器减一,出现计数器小于零时,报错退出。扫描结束后,若三个计数器有一个不为零说明括号不匹配,报错结束检查。       第一步扫描结束,如果正确说明三种括号本身匹配正确。现在可能出现的错误只可能是不同括号出现交叉,比如 {(}{)},({[)]}。

2012-09-09 11:31:02 1071

原创 #if 宏处理循环双流水

#define SIZE 5int a[SIZE] = {1, 2, 3, 4, 5};#if SIZE & 1 //SIZE是奇数 int s = a[0]; for (int i = 1; i < SIZE; i += 2) { s += a[i]; s += a[i + 1]; }#else //SIZE是偶数 int s

2012-08-30 22:36:30 850

原创 MDI切换到上次显示的子窗口

void __fastcall TMainBuilder::mnuWindow_LastVisitedClick(TObject *Sender){ const HWND hwnd = m_hLastActiveChild; if (IsWindow(hwnd)) { bool bmaximized; HWND hwndactivechild = (HWND)

2012-08-28 10:15:14 581

转载 [转]让程序只运行一个实例的四种方法

源代码下载:http://d.download.csdn.net/down/907655/magictong 综述:让一个程序只运行一个实例的方法有多种,但是原理都类似,也就是在程序创建前,有窗口的程序在窗口创建前,检查系统中是否已经设置了某些特定标志了,如果有说明已经有一个实例在运行了,则当前程序通知用户怎样怎样,然后程序退出,当然方法有这么多,各自也就有自己的优缺点了。 方法一

2012-07-23 20:19:02 271

转载 [转]绝对绝对不要TerminateThread

听过无数次不要TerminateThread,只是工作中常用,貌似也没有什么问题。今天在高强度测试中发现了一个不可原谅的错误。参看下面的例子 DWORD __stdcall mythread(void* ){    while( true )    {        char* p = new char[1024];        delete p;

2012-07-23 20:15:03 844

转载 [转]理解EnterCriticalSection 临界区

通俗解释就像上厕所: 门锁了,就等着,等到别人出来了,进去锁上,然后该干什么干什么,干完了,把门打开 门没锁,就进去,锁上,然后该干什么干什么,干完了,把门打开 -------------------------------------------------- 多线程中用来确保同一时刻只有一个线程操作被保护的数据 InitializeCriticalSection(&cs);

2012-07-21 23:17:12 1640

原创 gcc内联汇编将结构体成员清零

typedef struct tagstru{ int a; int b; int c;}stru; stru sa; sa.a = 0x123; sa.b = 0x456; sa.c = 0x789; printf("stru: a=%d b=%d c=%d\n", sa.a, sa.b, sa.c); __asm__ __volati

2012-06-26 17:49:49 979

原创 void Mask_1 - gcc汇编

void Mask_1(unsigned char * const ptrDestBuffer, const unsigned char * const ptrSrcBuffer, int Width, int Height, int idLineAdd, int isLineAdd, int idPixelAdd, int isPixelAdd, int MaskColor){ cons

2012-06-17 19:41:04 512

原创 内联汇编优化的TAlpha::FillSolidColor

#ifndef __GNUC__ #define _calpha_using_inlineasm_ 1#else #define _calpha_using_gccinlineasm_ 1 #ifdef _calpha_using_inlineasm_ #undef _calpha_using_inlineasm_ #endif#endif

2012-06-16 10:43:44 297

原创 内联汇编优化的TAlpha::Mask 部分汇编

内联汇编优化版 #ifdef _calpha_using_inlineasm_ i = Height - 1; if (i < 0) return; __asm { mov ecx, Width mov eax, ptrDest mov edx, ptrSrc mov esi, i

2012-06-14 13:21:15 717

原创 内联汇编优化的TAlpha::FillSolidColor 部分汇编

if ((lr & 1) == 1) { asm { cld } lr >>= 1; for (; i >= 0; i--) { //memcpy(ptrDest, ptrBuffer, lr); asm { mov ecx, 1 mov esi, ptrB

2012-06-09 15:24:04 456

原创 TAlpha::Negative 部分汇编

Width *= 3; register const int ld = iLineAdd + Width; Width >>= 1; Width--; for (register int i = Height - 1; i >= 0; i--) { register unsigned short int *p

2012-05-28 10:39:56 377

原创 TAlpha::FillSolidColor 部分汇编

for (i = Width - 1; i >= 0; i--) { *((unsigned short int *)ptrDest) = *((unsigned short int *)b

2012-05-28 10:38:53 390

原创 通过GetCurrentObject和GetObject获取和hdc相关的位图对象数据区起始地址

通过windows API当中提供的GetCurrentObject和GetObject两个函数可以直接获取和hdc相关的位图对象数据区起始地址,由此可以直接对位图对象进行读写操作。 代码BITMAP bm;HBITMAP hBitmap = (HBITMAP)GetCurrentObject(hdc, OBJ_BITMAP);if (hBitmap != NULL)

2012-05-10 20:31:43 3543 1

原创 二叉树计算以结构体数组元素为变量的表达式

有如下结构体的数据typedef struct tagdata{ double a; double b; double c; double d;}data;有数组数据data x[1000];有公式y = (x.a + x.b + x.c + x.d + 100) / 4其中数据对应关系为y[n] = (x[n - 1].a + x[n - 2]

2012-04-10 19:49:42 668

原创 二叉树计算包含函数的中缀表达式

二叉树计算中缀表达式,支持科学计数法,支持前导正负号,支持指数运算符“^”,支持括号,支持函数,具有错误检查。以字符串形式输入。 #include #include #include #include #include #include #include #include #ifdef _WIN32 #include #include

2012-03-28 15:22:32 1169

原创 用动态规划优化老鼠走迷宫中的最短路线解法

#include #include #include #include #include #ifdef _WIN32 #include #endif#ifndef STRICT #define STRICT 1#endif/* 宏DYNAMIC-是否开启动态规划 */#define DYNAMIC 1#define

2012-01-30 11:29:14 2460

原创 老鼠走迷宫算法中的一点优化

老鼠走迷宫的算法当中在搜索路线时,有一些位置是死胡同,事先标记出来可以大大减少无效搜索,提高搜索速度。比如三个方向都是墙壁,只有一个方向可以走通的非起点非终点位置就可以标记出来,在搜索时根本不用再去计算。 原始图 标记图 #include #include #include #ifdef _WIN32 #include void g

2012-01-19 21:55:20 1074

原创 三叉树解2011年度最变态的迷宫难题

问题出处:Matrix67: My Blog ? Blog Archive ? 2011年度最变态的迷宫难题        问题描述:“下面大家将会看到的是一个极其简单而又极其复杂的“迷宫”,这无疑是我在本年度见到的最变态的谜题:从左边入口处的 2011 进去,在迷宫里转悠,最后变成 2012 从右边出来。你可以在迷宫里转圈,可以重复之前走过的路,但不能往回退着走。”

2012-01-14 13:25:33 717

原创 二叉树计算中缀表达式(三)

二叉树计算中缀表达式,支持指数运算符“^”,支持括号,以字符串形式输入。括号通过递归处理。下一步要支持科学计数,处理空格正负号,检查输入错误。#include #include #include #include #include #include #define BRACKETSMARK 0x40#define MAXBUFFERLEN 1024typ

2012-01-09 14:22:16 566

原创 二叉树计算中缀表达式(二)

二叉树计算中缀表达式,支持指数运算符“^”,暂时不支持括号,直接以字符串形式输入。#include #include #include #include #include typedef struct tagbintree{ char op; char level; /* 记录括号 */ double fvalue; struct tagbintre

2012-01-09 13:44:28 529

原创 二叉树计算中缀表达式

二叉树计算中缀表达式,暂时不支持括号,直接以字符串形式输入。#include #include #include #include typedef struct tagbintree{ char op; char level; /* 记录括号 */ double fvalue; struct tagbintree *lchild; struct ta

2012-01-09 13:38:56 812

原创 不用栈检查小括号、中括号、大括号的匹配

设置三个计数器初值设为零,分别记录小括号、中括号、大括号。开始进行第一次扫描,从左向右依次扫描每个字符,遇到左括号计数器加一,遇到右括号计数器减一,出现计数器小于零时,报错退出。扫描结束后,若三个计数器有一个不为零说明括号不匹配,报错结束检查。       第一步扫描结束,如果正确说明三种括号本身匹配正确。现在可能出现的错误只可能是不同括号出现交叉,比如 {(}{)},({[)]}。

2012-01-09 13:28:46 1930

DEBUG118.zip

32位debug,包含完整的汇编源代码。

2012-09-14

谭浩强C语言程序设计.pdf

谭浩强C语言程序设计 清晰版pdf,C语言入门不错。

2012-09-13

VB函数参考手册.chm

VB函数参考手册,很全,分类列出。

2012-09-13

ucc162.zip

国人写的c编译器

2012-09-13

More Effective C++[中文版].pdf

More Effective C++ Scott Meyers 著 侯捷 译 清晰版,绝非影印。

2012-09-13

C函数速查.chm

方便的C函数手册。

2012-09-12

C_C++ Reference.chm

C/C++函数大全,包括STL函数详解,C++开发必不可少的手册

2012-09-12

WINDOWS核心编程中文版.chm

Jeffrey Richter名著,windows开发必读,WINDOWS核心编程中文版

2012-09-12

Effective C++ Second Edtion(中文版).chm

Scott Meyers 著作 Effective C++ Second Edtion

2012-09-12

More Effective C++中文版.chm

C++经典之作 More Effective C++

2012-09-12

空空如也

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

TA关注的人

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