自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 资源 (8)
  • 收藏
  • 关注

原创 SDK实现带工具栏、状态栏的窗口程序

创建一个工具栏2个函数可以用,CreateToolbarEx或者CreateWindowEx.这里用后者。用CreateWindowEx需要指定窗口类为TOOLBARCLASSNAME,初始化为没有包含任何按钮。MSDN中也说了它属于公共控件(common control),需要使用InitCommonControlsEx初始化。可以用2个消息来增加按钮。分别是TB_ADDBUTTONS,TB

2011-12-13 11:03:53 5196 3

原创 VC++SDK中实现直线(矩形,椭圆等)的移动及直线依附矩形椭圆的移动方法(附:运行效果图)

在SDK中实现画条直线,画个矩形等都有现成的函数供我们去调用,有时候直线,矩形画完之后需要能够随鼠标进行移动进而调整图形的位置。不知道该怎么去表述,就贴代码吧,代码中已经添加了很详细的注释了。直接把完整的例子代码都贴出来吧,这样最省事了。// areatest.cpp : 定义应用程序的入口点。//#include "stdafx.h"#include "areates

2011-11-03 21:19:50 3312

原创 关于访问C++类对象中私有成员变量的方法,不考虑用友元

晚上看到群里有人问这样的题目: class   a     {   public:   void GetValue()   {cout<<k<<endl;}  private:     int   k;     }; 要求不用友元,不在这个类里添加任何代码,把成员变量k的值改为100,结果自然是通过公共成员函数GetValue来验证。 实现如下:

2011-10-19 21:45:10 2604

原创 vc6.0中用GDIPlus实现加载动态gif图片(非MFC实现)

今天心情很嗨皮,原因是花了5块钱买了一张刮刮彩,给中了100快,喜悦感可谓是油然而生吧,好了进入正题吧。关于GDI+的介绍在这里就不谈了,总之相比GDI确实方便了太多,比如首先GDI仅仅支持bmp格式的位图,对其他格式比如jpg,png,gif.....都很吃力了,而用GDI+确

2011-08-20 00:16:09 8670 13

原创 自定义MessageBox----HOOK

HOOK自己接触的其实非常少,所以也从来没敢谈论过什么,这个MessageBox还真的研究了好几个hour呢,挺怕被大牛们嘲笑的,今天我也不要脸了,说说我的一些看法,欢迎扔砖头,西红柿。 众所周知,一个标准的messagebox框通常不是自定义风格的,因为我们从来不能正常找到它的

2011-07-11 20:23:03 6072 8

转载 利用钩子函数来注入DLL的一个具体应用:点击桌面不同图标,播放相应音符

最近看核心编程,看到DLL注入这一章,有一个Desktop Item Positon Saver(DIPS)的例子,这个例子是使用窗口挂钩来将一个DLL注入到Explorer.exe的地址空间中,来保存和恢复图标位置。于是便想根据这个例子自己改造一下,正好前段时间看到在 Google 的首页上,谷歌为了纪念电吉他之父莱斯·保罗 96 周年诞辰,特意做了一个很有意思的Doodle,这个 谷歌电吉他L

2011-06-30 20:52:00 2014

原创 WINDOWS核心编程第三章内核对象的一点细节

久仰此书大名已久,可惜以前没看懂。。。现在感觉有点基础了回头再看,感觉多少有点死皮赖脸的嫌疑。。。。关于啥是内核对象请看第三章就对了,看的时候发现书上说GetCurrentProcess返回的是伪句柄(对GetCurrentDirectory比较熟悉,吃过一次亏,进程工作目录跟进程的镜像文件EXE所在的路径完全不是一回事,尤其设置了程序开机自启动,重启后默认的进程工作目录是系统目录,所以特

2011-06-04 22:12:00 1313 1

转载 Windows系统编程之进程间通信

<br />Windows系统编程之进程间通信<br />作者:北极星2003<br />来源:看雪论坛(www.pediy.com)<br />Windows 的IPC(进程间通信)机制主要是异步管道和命名管道。(至于其他的IPC方式,例如内存映射、邮槽等这里就不介绍了)<br />管道(pipe)是用于进程间通信的共享内存区域。创建管道的进程称为管道服务器,而连接到这个管道的进程称为管道客户端。一个进程向管道写入信息,而另外一个进程从管道读取信息。<br />异步管道是基于字符和半双工的(即单向),一般

2011-05-31 19:59:00 1458

原创 WIN32 SDK中树形视图与图像列表的配合使用实例(一)

树形视图算属于高级控件了,比较特别一点,能够很清晰的反应某种层次关系,日常生活中也比较常见,比如资源管理器左边窗口就正是树形视图。同时,它也不例外的属于窗口,那就可以用CreateWindowEx来创建,需传递一个"SysTreeView32"的类名,特殊之处在于这家伙属于通用控件,因此需要在代码中加入InitCommonControls函数。InitCommonControls函数是动态链接库comctl32.dll中的一个函数,只要在您的程序中的任意地方引用了该函数就、会使得WINDOWS的程序加载器P

2011-04-20 22:02:00 5999 3

原创 对LockWindowUpdate与GetDCEx的理解

<br />MSDN如是说:<br />The LockWindowUpdate function disables or enables drawing in the specified window. Only one window can be locked at a time. <br /><br />BOOL LockWindowUpdate(<br />  HWND hWndLock   // handle to window<br />);<br /><br />Parameters<br /

2011-04-18 21:24:00 2664 1

原创 设备上下文(DC)与内存设备上下文中的位图与画刷属性的一些零碎

设备内容众所周知,设备上下文是一种包含有关某个设备,如显示器、打印机等的绘制属性信息的WINDOWS数据结构。所有绘制调用都是通过设备上下文对象进行,其中这些对象中包含了画笔,位图,画刷等。设备内容与特定的显示设备相关,对于视讯显示器,设备内容总是与显示器上的特定的窗口相关。设备内容中的有些值是图形属性,这些属性定义了GDI绘图函数的工作细节,for example,TextOut,设备内容的属性中确定了文字的颜色,文字的背景色,x坐标,Y坐标映射到所要显示区域的方式,还有显示这些文字时系统使用的字体。当一

2011-04-17 17:28:00 2905

原创 WINDOWS内存映射文件原理分析+代码演示

WINDOWS为任何一个进程都赋予了4G的独立的虚拟地址空间,然而学过OS的都晓得这个只是逻辑上的虚拟的地址空间,进程实际拥有的远小于4GB的物理地址空间。并且进程的虚拟地址空间是每个进程私有的,有操作系统分配,本质上不过是物理内存地址的映像罢了。因此可以得出结论:在进程内运行的线程只能访问其所处进程的内存空间,即不同进程中可以用相同地址的指针用来指向属于各自进程中的内容,互不干扰,因为彼此都是以进程中的虚地址去访问内存的,操作系统再将虚拟地址转换为真正的物理内存地址。这样减少了程序员很多的麻烦事,使得我们

2011-03-31 23:57:00 5961 4

原创 利用远程线程将代码注入到目标进程中执行

<br />/* ************************************<br />* remote.c<br />* 创建远程线程、将代码注入到其他进程中执行<br />**************************************/<br />/* 头文件 */<br />#include <windows.h><br />#include <Tlhelp32.h><br />/*************************************<br />* BO

2011-03-26 23:18:00 3152 4

转载 说说字符集和编码

<br />很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。 <br /><br />再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为"计算机"。 <br /><br /><br /><br />开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。 <br /><br />他们把其中的编

2011-03-22 23:58:00 979 1

转载 关于LEA指令

堆栈种分配的局部变量所谓的“标号”,你以为是什么?(都是那些该死的宏惹的祸,大家要都是老老实实写代码,就不会有这些疑问了)。      比如你用local在栈上定义了一个局部变量LocalVar,你知道实际的指令是什么么?一般都差不多像下面的样子:      push    ebp      mov    esp,    ebp      sub    esp,    4      现在栈上就有了4各字节的空间,这就是你的局部变量。      接下来,你执行mov    LocalVar,    4,那么实

2011-02-18 13:25:00 3893

原创 给VC/SDK中的应用程序加上皮肤(实例演示)

<br />网上MFC加皮肤的资料蛮多的,SDK方面的相对较少,但是原理雷同,废话不多说了。<br />简单说明一下过程<br />1、复制 SkinH.dll、SkinH.lib、SkinH.h 以及皮肤文件MSN.she 至工程目录下;<br />  这里为了方便我直接把皮肤文件放到了一个文件夹中,在包含头文件的时候注意相应的路径就OK。<br />2、在工程中引入 .h 头文件及 Lib 静态库,大家在引用的时候要注意文件的路径;<br />#include "SkinH.h"<br />#pragm

2011-02-16 20:14:00 3365 2

原创 纯SDK实现双缓冲绘图与普通绘图差别演示

先大致介绍一下WINDOWS下的绘图原理:我们在 Windows 环境下看到各种元素,如菜单、按钮、窗口、图像,从根本上说,都是“画”出来的。这时的屏幕,就相当于一块黑板,而 Windows 下的各种 GDI 要素,如画笔、画刷等,就相当于彩色粉笔了。我们在黑板上手工画图时,是一笔一划的,电脑亦然。只不过电脑的速度比手工快的太多,所以在我们看起来好像所有的图形文字都是同时出现的。普通绘图方式的局限上述绘图方式我们暂且称之为普通绘图方式吧。虽然这种方式能满足相当一部分的绘图需要,但是当要绘制的对象太复杂,尤其

2011-01-19 20:57:00 4202 6

转载 Callback函数详解

<br />2010年的最后一天了,转载一篇自己认为还不错的文章与大家分享。希望对大家有所帮助。<br /> <br />一,回调函数<br /><br />我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理、用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函数)有何不同呢?<br /><br />使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数

2010-12-31 22:18:00 25559 4

原创 对WM_NCHITTEST消息的了解+代码实例进行演示

这个消息比较实用也很关键,它代表非显示区域命中测试。这个消息优先于所有其他的显示区域和非显示区域鼠标消息。其中lParam参数含有鼠标位置的x和y屏幕坐标,wParam 这里没有用。Windows应用程序通常把这个消息传送给DefWindowProc,然后Windows用WM_NCHITTEST消息产生与鼠标位置相关的所有其他鼠标消息。通俗的讲从消息产生消息。case WM_NCHITTEST:return (LRESULT)HTNOWHERE;以上代码能禁用窗口的所有显示区域和非显示区域鼠标消息,也就是当

2010-12-16 22:22:00 11229

转载 Windows消息编程

本文主要包括以下内容:1、简单理解Windows的消息2、通过一个简单的Win32程序理解Windows消息3、通过几个Win32程序实例进一步深入理解Windows消息4、队列消息和非队列消息5、WM_COMMAND和WM_NOTIFY6、MFC的消息映射7、消息反射机制1、简单理解Windows的消息消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。举个例子来说,鼠标单击某应用程序的一个按钮。这时,Windows(操作系统)给应用程序发送这个消息,通知应用程序该按钮被点击,应用程序将

2010-12-11 18:10:00 2666 11

转载 WM_CLOSE、WM_DESTROY、WM_QUIT, SENDMESSAGE ,POSTMESSAGE

1、发送消息SendMessage、PostMessagePostMessage将消息放入消息队列后马上返回,而SendMessage直到窗口过程处理完消息后才返回 2、三个消息的区别WM_CLOSE:  在系统菜单里选择了“关闭”或者点击了窗口右上角的“X”按钮,你的窗口过程就会收到WM_CLOSE。DefWindowProc对 WM_CLOSE的处理是调用DestroyWindow。当然,你可以不让DefWindowProc处理,而是自己处理,例如询问用户是否保存更改等。如果用户选择“取消”,你忽略此消

2010-12-08 14:26:00 5334

转载 2010年获奖小小说(x_o_)

<br />《第一篇:好悬》   老张提前下班回家,发现老婆正和书记偷情,吓得赶紧跑回单位,叹道:好悬,差点被领导发现早退!   <br />《第二篇:谦虚》   老张胆小、嘴笨。一日酒后仗胆审妻,妻抵赖说:只有一次。老张指着妻气愤说:你…你…你谦虚!   <br />《第三篇:原谅》   老张很无奈,找书记妻倾诉,书记妻气极:咱俩报复他俩。事毕,书记妻还气,又报复一次!一连五次。老张跪倒告饶:求求你嫂子,我已经原谅他们了!

2010-12-02 17:13:00 1086

转载 C++编程中对缓冲区的理解

什么是缓冲区缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。为什么要引入缓冲区我们为什么要引入缓冲区呢?比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这样就可以减少磁盘的读写次数,再加上计算机对缓冲区的操作大大快于对磁盘的操作,故应用缓冲区可大大提高计算机的运行速

2010-11-28 17:43:00 8298 1

转载 UNICODE 编程入门

<br />简介<br />    如果你编写的程序是针对非英语国家的用户,如中国、日本、东欧和中东地区,那么你一定要熟悉 UNICODE 字符集。尤其是用 Visual C++/MFC 编写针对上述国家和地区的用户的程序时,如果你想让自己的应用程序得到更广泛的用户,那么必须考虑代码 UNICODE 的兼容性,也就是说它既在 ASCII 模式下运行 ,也能在UNICODE 模式下运行。本文将介绍 UNICODE 的一些基本编程知识,澄清很多人(包括我自己)在这个问题上存在的模糊认识。对于任何使用 Visua

2010-11-28 12:00:00 795 2

转载 Unicode字符集和多字节字符集关系

<br />在计算机中字符通常并不是保存为图像,每个字符都是使用一个编码来表示的,而每个字符究竟使用哪个编码代表,要取决于使用哪个字符集(charset)。 <br />  在最初的时候,Internet上只有一种字符集——ANSI的ASCII字符集,它使用7 bits来表示一个字符,总共表示128个字符,其中包括了英文字母、数字、标点符号等常用字符。之后,又进行扩展,使用8 bits表示一个字符,可以表示256个字符,主要在原来的7 bits字符集的基础上加入了一些特殊符号例如制表符。 <br />  后

2010-11-27 23:56:00 623

转载 操作符重载浅析

<br />什么是操作符重载?一看到重载,很容易就让人联想到成员函数重载,函数重载可以使名称相同的函数具有不同的实际功能,只要赋给这些同名函数不同的参数就可以了,操作符重载也是基于这一机制的。系统为我们提供了许多操作符,比如“+”,“[ ]”等,这些操作符都有一些默认的功能,而操作符重载机制允许我们给这些操作符赋予不同的功能,并能够按照普通操作符的使用格式来使用自己定义功能的操作符(即重载的操作符)。定义之后,我们就可以按照平常使用操作符的格式来使用我们自己的重载操作符了。操作符重载一般在类内部定义,就像成

2010-11-21 13:11:00 1268

原创 C++对二叉树的简单实现。

<br />二叉树结点类的实现如下:<br />#ifndef BINARYTREENODE_H#define BINARYTREENODE_H#include<iostream>using namespace std;template<class Type>class BinaryTreeNode{public: BinaryTreeNode(){m_leftChild=m_rightChild=NULL;} BinaryTreeNode(const Type &dat

2010-11-20 02:54:00 911

转载 为什么父类指针可以指向子类反之则不行

<br />例如: <br />class a <br />{public: <br />int aa}; <br />class b:public a <br />{public: <br />int bb; <br />} <br />从内存的来看 <br />如a <br />---------| <br />|占一个int数据大小--| <br />|----(aa数据)------| <br />|--------- <br />而b则是 <br />---------|--------- <br

2010-11-14 00:28:00 1711 1

转载 论调用约定

<br />在C语言中,假设我们有这样的一个函数:<br /><br />int function(int a,int b)<br /><br />调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传递参数,传递参数的工作必须由函数调用者和函数本身来协调。为此,计算机提供

2010-11-13 14:57:00 626 2

原创 光棍节写给那些至少目前还是单身的女性朋友们的忠告

<br />作为一个GG(不是哥哥),我希望广大单身女同胞们在考虑对象这个严肃而又重要的问题上一定要有原则性,要优先考虑像我这样的属于纯洁类型的GG,而暂时不要去理会那些所谓的二手或者多手光棍,他们都不是什么好东西,在这个问题上我的观点跟广大女同胞们保持一致,而且是始终一致。

2010-11-09 23:43:00 812

原创 C++解决八皇后问题,主要用到了回溯。

<br />#include<iostream>#include<conio.h>using namespace std;#define MAX 8int sum=0;class QueenPuzzle{ int queens[MAX];public: void printOut(); int IsValid(int n); void placeQueen(int i);};void QueenPuzzle::printOut(){ for(i

2010-11-09 23:33:00 1310

原创 VS2008中解决没有找到MSVCP90D.DLL的问题

<br />昨天花了不少时间下载---安装上了VS2008,今天写一个小的C++项目就发现了这个古怪的问题,查找资料后发现这是微软的一个BUG,具体的解决办法官网上有介绍。<br /> <br />方法仍与FAT32有关:在项目的“属性|配置属性|清单工具|常规(Project | Game Properties | Configuration Properties | C/C++ | Code Generation | Runtime Library)”中的“使用FAT32解决办法”选择“是”(默认为“否

2010-11-07 20:08:00 4664 2

原创 简单模仿string类的设计实现.

<br />#include<iostream>#include<stdio.h>using namespace std;class String{public: char* get(){return m_data;} String(const char *str=NULL); String(const String& other); ~String(); String& operator=(const String& other);private: ch

2010-11-04 16:52:00 1269

转载 拷贝构造函数的参数为什么必须使用引用类型.

<br />在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识。 但是如果我问你“拷贝构造函数的参数为什么必须使用引用类型?”这个问题, 你会怎么回答? 或许你会回答为了减少一次内存拷贝? 很惭愧的是,我的第一感觉也是这么回答。不好还好,我有理性这个好品质。思索一下以后,发现这个答案是不对的。让我来撕开(有点暴力,但是我喜欢,嘿嘿--龇牙)那件隐藏在真理外的小裤衩,让它袒露在“登徒子”们的眼前吧。<br />先从一个小例子开始:(自己测试一下自己看看这个程

2010-11-04 14:31:00 949

原创 VC6.0中,整型const static成员不能在类的定义体中初始化.

<br />class A{private: static int aa; static const int count=0; const int bb;public: A(int a); static void print();};A::A(int a):bb(a){ aa+=1;}void A::print(){ cout<<"count="<<count<<endl; cout<<"aa="<<aa<<endl;}int A:

2010-11-03 13:24:00 3108 2

转载 c/c++关于内存分配的知识

<br /><br />一个由c/C++编译的程序占用的内存分为以下几个部分 <br />1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 <br />2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 <br />3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初

2010-11-02 23:12:00 801

转载 定义在类中的友元函数

<br />#include "stdafx.h"<br />#include<iostream><br /><br />using std::cout;<br />using std::endl;<br />class X{<br />public:<br />X(int t=10):val(t){}<br />//friend void fun(const X &);//声明<br />friend void fun(const X &orj){cout<<orj.val<<endl;};<br />f

2010-11-02 23:06:00 7504

原创 VC6.0中友元函数无法访问类私有成员的解决办法

<br />#include<iostream>#include<string>using namespace std;class animal{ string name; int age;public: animal(string name,int age=0) { this->name=name; this->age=age; } animal& operator+(animal& a); friend ostream& operator <<

2010-11-02 22:49:00 1606 1

原创 引用容易犯的错误。

<br />class A{public: A(int i){x=i;} int get(){return x;}private: int x;};A & func(){ A a(23); return a;}int main(){ A&r=func(); cout<<r.get()<<endl; return 0;}<br />由于对象a是个局部对象,因此当函数对象func结束后,局部对象a也就被删除了。由于对象a消失了,所以Func

2010-10-30 22:35:00 1028

转载 境界--------相濡以沫,不如相忘于江湖

<br />《庄子·大宗师》原句<br /><br />相濡以沫,不如相忘于江湖<br />大家都听过现在流行的一个词——江湖,这个“江湖”是从哪儿出来的呢?很多人想到武侠小说里的一句“人在江湖,身不由己”,其实不然,江湖这个词最早的出处,便是在庄子说“相濡以沫”的这句话中。<br />在《大宗师》篇中,庄子给我们讲了这么一个小故事:“泉涸,鱼相与处于陆,相呴以湿,相濡以沫,不如相忘于江湖。”<br />意思是说是有一天,一眼泉水干了,两条小鱼被困在了一个小水洼,为了生存下去,它们彼此从嘴中吐出泡泡,用自己

2010-10-29 20:42:00 2668 1

VC6.0中用GDI+加载动态gif图片示例

VC6.0中用GDI+加载动态gif图片示例,用到了GDI+,IDE:VC6.0,OS:XP SP3,SDK写的非MFC。

2011-08-19

文件关联问题,问题详细请看CSDN中我的提问

文件关联问题 日常中会遇到 可以看看这个方法 人家是如何实现的 问题描述看这里 http://topic.csdn.net/u/20110515/03/e809df5b-65cd-4fda-b9d7-45abefebe329.html

2011-05-15

给VC/SDK中的应用程序加上皮肤(实例演示)

给VC/SDK中的应用程序加上皮肤(实例演示)

2011-02-16

郁金香由浅入深学习感染pe文件的操作.rar

郁金香由浅入深学习感染pe文件的操作.rar

2011-02-15

SDK双缓冲绘图跟普通绘图对比效果演示

完整的例子包括资源文件跟DEBGU的EXE文件。可以直接下载运行,无需积分。

2011-01-19

c语言深度剖析.pdf

非常好的一部书籍,C语言中的关键问题都有深入的进行剖析!

2010-09-03

网络电视的代码文件和生成的网络电视exe文件

网络电视的代码文件和生成的网络电视exe文件 网络电视的代码文件和生成的网络电视exe文件 网络电视的代码文件和生成的网络电视exe文件

2010-01-15

定时关机的代码和生成的EXE文件

定时关机的代码和生成的EXE文件 大家可以多多参考参考 看是否有需要学习改进的地方

2010-01-15

空空如也

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

TA关注的人

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