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

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


你可能感兴趣的:(Notepad++源码学习心得(不断更新中。。。))