SDK实现带工具栏、状态栏的窗口程序 创建一个工具栏2个函数可以用,CreateToolbarEx或者CreateWindowEx.这里用后者。用CreateWindowEx需要指定窗口类为TOOLBARCLASSNAME,初始化为没有包含任何按钮。MSDN中也说了它属于公共控件(common control),需要使用InitCommonControlsEx初始化。可以用2个消息来增加按钮。分别是TB_ADDBUTTONS,TB
VC++SDK中实现直线(矩形,椭圆等)的移动及直线依附矩形椭圆的移动方法(附:运行效果图) 在SDK中实现画条直线,画个矩形等都有现成的函数供我们去调用,有时候直线,矩形画完之后需要能够随鼠标进行移动进而调整图形的位置。不知道该怎么去表述,就贴代码吧,代码中已经添加了很详细的注释了。直接把完整的例子代码都贴出来吧,这样最省事了。// areatest.cpp : 定义应用程序的入口点。//#include "stdafx.h"#include "areates
关于访问C++类对象中私有成员变量的方法,不考虑用友元 晚上看到群里有人问这样的题目: class a { public: void GetValue() {cout<<k<<endl;} private: int k; }; 要求不用友元,不在这个类里添加任何代码,把成员变量k的值改为100,结果自然是通过公共成员函数GetValue来验证。 实现如下:
vc6.0中用GDIPlus实现加载动态gif图片(非MFC实现) 今天心情很嗨皮,原因是花了5块钱买了一张刮刮彩,给中了100快,喜悦感可谓是油然而生吧,好了进入正题吧。关于GDI+的介绍在这里就不谈了,总之相比GDI确实方便了太多,比如首先GDI仅仅支持bmp格式的位图,对其他格式比如jpg,png,gif.....都很吃力了,而用GDI+确
自定义MessageBox----HOOK HOOK自己接触的其实非常少,所以也从来没敢谈论过什么,这个MessageBox还真的研究了好几个hour呢,挺怕被大牛们嘲笑的,今天我也不要脸了,说说我的一些看法,欢迎扔砖头,西红柿。 众所周知,一个标准的messagebox框通常不是自定义风格的,因为我们从来不能正常找到它的
利用钩子函数来注入DLL的一个具体应用:点击桌面不同图标,播放相应音符 最近看核心编程,看到DLL注入这一章,有一个Desktop Item Positon Saver(DIPS)的例子,这个例子是使用窗口挂钩来将一个DLL注入到Explorer.exe的地址空间中,来保存和恢复图标位置。于是便想根据这个例子自己改造一下,正好前段时间看到在 Google 的首页上,谷歌为了纪念电吉他之父莱斯·保罗 96 周年诞辰,特意做了一个很有意思的Doodle,这个 谷歌电吉他L
WINDOWS核心编程第三章内核对象的一点细节 久仰此书大名已久,可惜以前没看懂。。。现在感觉有点基础了回头再看,感觉多少有点死皮赖脸的嫌疑。。。。关于啥是内核对象请看第三章就对了,看的时候发现书上说GetCurrentProcess返回的是伪句柄(对GetCurrentDirectory比较熟悉,吃过一次亏,进程工作目录跟进程的镜像文件EXE所在的路径完全不是一回事,尤其设置了程序开机自启动,重启后默认的进程工作目录是系统目录,所以特
Windows系统编程之进程间通信 Windows系统编程之进程间通信作者:北极星2003来源:看雪论坛(www.pediy.com)Windows 的IPC(进程间通信)机制主要是异步管道和命名管道。(至于其他的IPC方式,例如内存映射、邮槽等这里就不介绍了)管道(pipe)是用于进程间通信的共享内存区域。创建管道的进程称为管道服务器,而连接到这个管道的进程称为管道客户端。一个进程向管道写入信息,而另外一个进程从管道读取信息。异步管道是基于字符和半双工的(即单向),一般
WIN32 SDK中树形视图与图像列表的配合使用实例(一) 树形视图算属于高级控件了,比较特别一点,能够很清晰的反应某种层次关系,日常生活中也比较常见,比如资源管理器左边窗口就正是树形视图。同时,它也不例外的属于窗口,那就可以用CreateWindowEx来创建,需传递一个"SysTreeView32"的类名,特殊之处在于这家伙属于通用控件,因此需要在代码中加入InitCommonControls函数。InitCommonControls函数是动态链接库comctl32.dll中的一个函数,只要在您的程序中的任意地方引用了该函数就、会使得WINDOWS的程序加载器P
对LockWindowUpdate与GetDCEx的理解 MSDN如是说:The LockWindowUpdate function disables or enables drawing in the specified window. Only one window can be locked at a time. BOOL LockWindowUpdate( HWND hWndLock // handle to window);Parameters
设备上下文(DC)与内存设备上下文中的位图与画刷属性的一些零碎 设备内容众所周知,设备上下文是一种包含有关某个设备,如显示器、打印机等的绘制属性信息的WINDOWS数据结构。所有绘制调用都是通过设备上下文对象进行,其中这些对象中包含了画笔,位图,画刷等。设备内容与特定的显示设备相关,对于视讯显示器,设备内容总是与显示器上的特定的窗口相关。设备内容中的有些值是图形属性,这些属性定义了GDI绘图函数的工作细节,for example,TextOut,设备内容的属性中确定了文字的颜色,文字的背景色,x坐标,Y坐标映射到所要显示区域的方式,还有显示这些文字时系统使用的字体。当一
WINDOWS内存映射文件原理分析+代码演示 WINDOWS为任何一个进程都赋予了4G的独立的虚拟地址空间,然而学过OS的都晓得这个只是逻辑上的虚拟的地址空间,进程实际拥有的远小于4GB的物理地址空间。并且进程的虚拟地址空间是每个进程私有的,有操作系统分配,本质上不过是物理内存地址的映像罢了。因此可以得出结论:在进程内运行的线程只能访问其所处进程的内存空间,即不同进程中可以用相同地址的指针用来指向属于各自进程中的内容,互不干扰,因为彼此都是以进程中的虚地址去访问内存的,操作系统再将虚拟地址转换为真正的物理内存地址。这样减少了程序员很多的麻烦事,使得我们
利用远程线程将代码注入到目标进程中执行 /* ************************************* remote.c* 创建远程线程、将代码注入到其他进程中执行**************************************//* 头文件 */#include <windows.h>#include <Tlhelp32.h>/************************************** BO
说说字符集和编码 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。 再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为"计算机"。 开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。 他们把其中的编
关于LEA指令 堆栈种分配的局部变量所谓的“标号”,你以为是什么?(都是那些该死的宏惹的祸,大家要都是老老实实写代码,就不会有这些疑问了)。 比如你用local在栈上定义了一个局部变量LocalVar,你知道实际的指令是什么么?一般都差不多像下面的样子: push ebp mov esp, ebp sub esp, 4 现在栈上就有了4各字节的空间,这就是你的局部变量。 接下来,你执行mov LocalVar, 4,那么实
给VC/SDK中的应用程序加上皮肤(实例演示) 网上MFC加皮肤的资料蛮多的,SDK方面的相对较少,但是原理雷同,废话不多说了。简单说明一下过程1、复制 SkinH.dll、SkinH.lib、SkinH.h 以及皮肤文件MSN.she 至工程目录下; 这里为了方便我直接把皮肤文件放到了一个文件夹中,在包含头文件的时候注意相应的路径就OK。2、在工程中引入 .h 头文件及 Lib 静态库,大家在引用的时候要注意文件的路径;#include "SkinH.h"#pragm