Notepad++源码学习心得(不断更新中。。。)

1、

功能点:    获取父窗口的背景色

相关函数:    static COLORREF getParentDlgBkColor(HWND hWnd)
基本思想:

给父窗口发送一条WM_ERASEBKGND消息,
参数是一个与父窗口大小相同的位图;父窗口处理这个消息时候,
将本身的或用指定的画刷将与自己背景色相同的颜色画在传进来的那张位图上
然后在取得这张位图0,0点的颜色即可确定父窗口的背景颜色

心得:

      这个函数的处理比较简单,利用消息进行各个窗体间的通信。但是却有不好的感觉,

因为这个函数的动机是用来获取父窗口背景色的,但是发送的却是ERASEBKGND这样的消息

虽然可以实现但觉得是投机取巧。个人觉得比较好的做法是自定义一个新的消息,

在收到这个消息的时候,父窗口再将背景色画在指定的位图上,这样比较好。

2、

功能点:

       创建一个通用的超链接控件

相关函数:

       URLCtrl类

基本思想:

        首先URLCtrl这个类结成与Window类,其次实现一个超链接控件基本功能

         1)没有单击时,显示A颜色,单击之后显示B颜色

         2)单击时执行相应的跳转

         3)超链接文字透明于父窗体,及文字的背景色于父窗体相同

其实实现前两条比较容易,关键是第三条,因为子窗体无法直接取得父窗体的背景色,具体实现见上。

由于URLCtrl继承了window类,所以如果想自己处理各个消息,可以修改原来的消息处理函数,

这可以由SetWindowLongPtr实现。主要处理的消息有:WM_PAINT、WM_MOUSEMOVE、

WM_LBUTTONDOWN、WM_LBUTTONUP

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值