MFC自绘皮肤编写[笔记一]

用了这么长时间的MFC,感觉不错是不错,可是那个界面呀,真让人难受啊.虽然在VS2008中有了提供,但是还是不理想,所以就想找个皮肤库,现在比较好用的(个人感觉)SkinMagic,不过它不支持VS2008悲哀呀.所以打算自己写一个.

关于那些基础知识和HOOK的知识我就不详细说了,可以去

http://www.fengfly.com/plus/view-171863-1.html

这里来看下.虽然这个是用C#但还是让我收获不小

我们现在采用在要HOOK方式来给界面换肤,下面就来说一具体的步骤,

这里用到的是VS2008,不采用VC 6.0这样就可以直接要VS 2008中使用了.由于也可以让别人来使用,所以我们就用DLL的方式来换肤.

 



具体步骤:

1.新建一个Dll工程,这里我命名的是"dll",选择"带静态链接 MFC 的规则 DLL(R)",然后完成

2.打开工程的主要cpp文件,我的是dll.cpp.然后添加一个RunHook函数

 这个函数是我们的主要函数,它是我们的主入口,下面来看一下 HOOKProc 为个钩子函数

 

 

 

 这样我们会发现CDrawEdit这个是这个错误.CDrawEdit是我们自定义的一个Edit类,它的主要功能是实现自绘Edit框.下面是CDrawEdit在代码

 

 把必要的函数在头文件中声明下,或者放在RunHook 这个函数之前.

添加卸载钩子函数

3.导出函数

打开dll.def,在下面添加

 RunHook
 StopHook

下面是整个dll.def的内容

然后编译一下.本人测试通过

 


 

这样我们就可以实现所有的"编辑框"的换肤.现在再新建一个exe工程来测试一下我们dll是不是可以正常的使用

 

1.新建一个exe工程添加到当前的工程中.这里我选的是"基于对话框(D)"和" " .其它默认

2.在对话框中添加一个"编辑框"

3.在exeApp.cpp中包含dll.h和使用隐式连接dll.lib,

 

并在InitInstance函数中添加代码

 

编译一下,本人用win 7旗舰版+VS 2008编译通过

下面是程序的运行截图

 

 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值