自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

软件人生

代码要写,老婆也要找。

  • 博客(10)
  • 收藏
  • 关注

原创 __stdcall,__cdcel,extern c 和导出函数名

无论c或c++都会对导出函数改名或不改名,无论你是静态还是动态调用一个导出函数,都可能碰上改名后导致的调用失败(甚至可能是调用约定不同而导致清理堆栈出错,造成崩溃),下面分析一下改名和调用约定之间的关系。        一.先说extern c。        其含义是指,按c的方式编译代码。在vs7及以后的vs中,有编译选项可以直接选择“编译为:c代码”(在工程属性----》c/c+

2011-09-17 07:51:36 4793 2

原创 Windows内存机制的问与答

学习windows内存管理过程中,会先有些疑问,然后再不断学习中解答掉,解答也是基于我的不断理解,未必完全准备。下面记录一些。一。如果一个内存页没有被修改过,操作系统可以直接释放它(《windwos核心编程》第五版P362页的描述)。那是不是说明该内存页对应要有页交换文件,里面保持着原始的值?答:不完全是。准备讲,是每个内存页都会有后备页面。但后备页面可以来自页交换文件(最常见),文件映像(PE文件被加载时),内存映射文件(通过系统API创建)。在xp的进程管理器中,“虚拟内存大小”这一列,列出的应该是进程

2011-04-03 13:31:00 611

原创 WM_PAINT 和 WM_ERASEBKGND 消息的区别

先看看,如何获得HDC(设备句柄) 1.调用BeginPaint()。绘制范围是窗口的无效区域。通常是在WM_PAINT中调用。这个api获得HDC,在EndPaint()以后,会将窗口的无效区域置为有效区域。BeginPaint()会根据Invalidate()时传的参数,决定是否擦除背景。需要擦除背景时,BeginPaint()会发送一个WM_ERASEBKGND。 2.调用G

2011-01-11 20:24:00 2338

原创 [转]ActiveX控件去除IE警告框的方法

<br />1、介绍<br /><br />        如果你曾经在网页或者ASP中使用过com对象,你可能会发现,有时候会出现这样讨厌的对话框<br /> <br />     这是因为你的控件没有被标记为安全的,对于初始化不安全或者对于脚本不安全,甚至兼而有之。你每打开一次这样的网页,这种情况就会发生一次,你怎么办?当然,这可以通过设置IE本身的安全等级为low来解决这样的问题,但是如果你要制作一个可发布的控件,你能想象到每一位用户在使用你制作的控件时都要且列抱怨这种强制行为;或者如果你是其中一个使

2010-10-26 14:56:00 2892

原创 firefox查找插件和插件媒体类型的方法

<br />firefox从两个位置加载插件,并查找插件对应的媒体类型(mimetype)<br /> <br />1.安装目录的plugins文件夹下。<br />可以直接把一个插件的dll放到plugins目录下,该插件对应的媒体类型,保存在dll资源的字符串“MIMEType”中。比如观察wmp的插件np-mswmp.dll,其资源中有一个MIMEType字符串,值是“application/x-ms-wmp|application/asx|video/x-ms-asf-plugin|applicat

2010-10-14 11:25:00 1541

原创 浏览器常见引擎(Gecko、webkit、trident)介绍

<br />网页主要包含两部分,html和javascript。所以浏览器一般也包含两个引擎,网页(html)排版引擎(也叫渲染引擎)和js引擎。而一般提到浏览器的内核引擎,更多的是指网页排版引擎。<br /> <br />一.从浏览器来看:<br /> <br />1.firefox<br />firefox的网页排版引擎是Gecko,js引擎叫SpiderMonkey。Gecko大名鼎鼎,但SpiderMonkey这个名字估计就陌生一些了。<br /> <br />2.chrome和safari<br

2010-10-11 17:29:00 1820

原创 用VMQuery查询虚拟地址空间(虚拟内存)的使用情况

        虚拟地址空间,是指进程的可编程地址空间。对于32位系统,这个空间是4G。默认情况下,用户可以使用低地址的2G,高地址的2G是操作系统使用。虚拟地址空间也可以叫虚拟内存,但不能和系统设置中的设置虚拟内存(也叫页交换文件)大小,搞混了。有些名词在出现在不同的地方,其含义是完全不同,最好是用有区分的叫法。      虚拟地址空间的使用,需要两个步骤。第一,预留。第二,提交。预留会预定一块虚拟地址空间,当并不分配物理存储器。提交时才会真正分配物理存储器。通过VirtualAlloc函数实现这两个操作

2010-09-13 01:36:00 2231

原创 windows安全模型--令牌(token)和安全描述符

      当一个程序访问一个资源时,需要有相应的访问权限。windwos安全模型中,有两个角色,一个就是访问者(进程),一个是被访问者(资源)。      资源,也可以成为安全对象,是广义的,可以是文件,目录,注册表,管道,命名句柄,进程,线程。每个安全对象都有一个安全描述符,里面有ACL(访问列表)。ACL由若干条ACE组成。每一条ACE标记了一条访问规则,就是一个SID(一会可以在访问者中看到它)被允许或拒绝做某个操作(如读、写、执行)。可以看出,每个资源(安全对象)记录了谁(SID,可以是多个)可以

2010-09-02 00:12:00 8154

原创 Unicode,Ansi和UTF8

      绝大多数windows API ,只能对Unicode和Ansi编码的字符串进行操作(也就是众所周知的A和W),如果你存其它编码(如UTF-8),那你就是存着自己玩,最终要做其它操作(调用系统API),还得是乖乖转换成那两种字符串中的一种。      Ansi字符集。它不只是一种编码,它是多种编码的集合。如中国大陆的GBK,中国台湾的BIG5,应该说都属于Ansi。大陆和台湾两地的电脑,其Ansi编码并不相同。每种Ansi的编码,都用一个代码页来代表,如GBK的对应的代码页是936。能称为Ans

2010-08-13 08:23:00 669

原创 滚动条编程

Windows GUI 编程

2010-08-10 02:09:00 809

空空如也

空空如也

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

TA关注的人

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