VS2015动态库编程之MFC扩展动态库(下)

文章相关视频教程下载地址http://pan.baidu.com/s/1pKY4gzh

(2)添加WM_CTLCOLOR的反射消息响应函数

要改变编辑框中文字颜色、背景等,需要对该控件的WM_CTLCOLOR消息进行响应,重写该消息的响应函数。

将鼠标焦点设置到CMyEdit.h头文件中,之后在VS2015界面的右侧选择“属性”,接下来在属性界面的上部点击“消息”图标,并且在“=WM_CTLCOLOR”栏上选择“<Add> CtlColor”,为WM_CTLCOLOR消息添加响应函数CtlColor(),如图3所示。

 

3 添加WM_CTLCOLOR消息的响应函数

 

相关链接1=WM_COLCOLOR

当对话框中的控件时,控件会向对话框发送WM_COLCOLOR消息。而对话框收到该消息后,如果没有对该消息进行处理(没有该消息的响应函数),则对话框会将该消息反射回控件,由控件自行处理,这就是消息反射。消息反射对于创建可重用的控件类是一个功能强大的工具,因为他使得派生控件类有了独立于父窗口(对话框)执行自身操作的能力。通过消息反射,派生类都可以将任何发送给父窗口的消息映射给自己的成员函数。=WM_COLCOLOR消息前的“=”就表示该消息为反射消息。

CMyEdit.h中将CtlColor()函数声明中的两个参数名的注释去掉

afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);

然后再CMyEdit.cpp中将CtlColor()函数定义中的两个参数名的注释去掉,并加入如下代码

HBRUSH CMyEdit::CtlColor(CDC* pDC, UINT nCtlColor)

{

pDC->SetTextColor(RGB(255, 0, 0));

pDC->SetBkColor(RGB(0, 255, 0));

return (HBRUSH)CreateSolidBrush(RGB(0, 0, 255));

}

其中,CDC类的SetTextColor()函数的作用是设置编辑框文字的颜色;CDC类的SetBkColor()函数的作用是设置文字背景的颜色;CtlColor()函数的返回值是通过CreateSolidBrush()创建的画刷是用来设置编辑框背景的。

最后,编译生成动态库文件。

2 调用动态库程序的生成

生成一个基于对话框的MFC程序,修改该程序的“附加库目录”和“附加依赖项”(修改的方法见VS2015动态库编程之Win32动态库的使用),并且将生成的DLL文件拷贝到该MfC程序源代码所在的目录下。

2.1 界面设计

在该MFC程序的对话框中添加一个编辑框控件,如图4所示。

 

4 对话框界面设计

2.2 为控件添加变量

选中该编辑框控件,并且在右键菜单中选择“添加变量”,之后,在弹出的“添加成员变量向导”对话框中将“类别”选择为“Control”;将“变量类型”手动添加为“CMyEdit”,即在“1 动态库的生成”中在DLL文件中添加的CEdit类的派生类;将“变量名”设置为“m_myEdit”,最后,点击右下角的“完成”按键,如图5所示。

 

5 为编辑框控件添加变量

接下来,将“1 动态库的生成中动态库中CMyEdit类的头文件MyEdit.h拷贝到本MFC程序源代码所在的目录,将该头文件导入到项目中,并在该MFC程序的头文件中包含MyEdit.h

#include “MyEdit.h”

2.3 设置编辑框显示的内容

MFC对话框类的OnInitDialog()函数中,通过m_myEdit变量设置编辑框显示的内容。

m_myEdit.SetWindowTextW(_T("这是自定义控件"));

运行该MFC程序,其效果如图6所示。

 

6 调用DLLMFC程序运行效果


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值