如何在VC中添加消息处理函数

本文详细介绍了如何在VC6.0及VS2008环境中为窗口添加WM_ERASEBKGND消息处理函数。包括通过ClassWizard工具快速添加以及手动修改代码实现的方式。

为窗口添加消息WM_ERASEBKGND的处理函数

VC6.0

1、

a.首先,为了下面使用擦除背景的方便,先增加OnEraseBkgnd函数(WM_ERASEBKGND)

按快捷键Ctrl+W打开ClassWizard对话框(或菜单->view->ClassWizard):选择Class Info,找到左下角的Messagefilter,下拉列表至最底部,选中Window,OK保存;

b.我们再Ctrl+W 打开ClassWizard对话框,MessageMaps->ClassName:选择当前工程对话框->ObjectIDs:选择当前对话框->Messages:下拉找吧,WM_ERASEBKGND有了吧,双击或者AddFunction,添加到下面的Member functions后,再双击就可以编辑此函数代码了;

2、当然除了以上的方法之外,如果对代码结构基本了解的话,还可以自己手动增加:

a、工程的头文件中增加擦出背景函数定义

afx_msg BOOL OnEraseBkgnd(CDC *pDC);

b、增加消息响应

BEGIN_MESSAGE_MAP(C******Dlg, CDialog)  //C******Dlg是你自己对话框的工程类

   ……

ON_WM_ERASEBKGND()

END_MESSAGE_MAP()

c、工程源文件cpp中增加此函数的操作部分

BOOLCDisplayBmpBackGroundDlg::OnEraseBkgnd(CDC  *pDC) 

{

     //在这里你想增加那些对图片背景处理的东西就随便填吧guohaiyang.blog.163.com

     return TRUE;

}

 

VS2008:

1.在‘资源视图’,打开一个窗口,点击窗口空白处。

2.在右边的属性管理器中选择消息页,会显示出所有可添加消息,找到WM_ERASEBKGND,点击旁边的下拉框,就会看到添加OnERASEBKGND项,点击即可成功添加WM_ERASEBKGND的处理函数

BOOL CRTSPSampleDlg::OnEraseBkgnd(CDC* pDC)
{
 // TODO: 在此添加消息处理程序代码和/或调用默认值

 return CDialog::OnEraseBkgnd(pDC);
}
注:VS2008手动添加消息处理函数的方法与VC6类似。


来自东子的博客



在 Visual C++ 6.0 中为控件添加事件处理函数通常涉及以下几个步骤: ### 添加事件处理函数 1. **使用 ClassWizard 添加事件处理函数**: - 打开 ClassWizard(可以通过菜单 `View -> ClassWizard`)。 - 在 `Message Maps` 选项卡中选择对应的控件 ID。 - 在消息列表中选择需要处理的消息(如 `BN_CLICKED` 表示按钮点击事件)。 - 点击 `Add Function` 按钮,输入函数名称后确认添加。 - ClassWizard 会自动在类的头文件中声明函数,并在消息映射中添加相应的条目,同时生成函数框架[^2]。 2. **手动添加事件处理函数**: - 如果控件是动态创建的,ClassWizard 可能无法直接添加事件处理函数,需要手动操作。 - 在类的头文件中声明函数,例如: ```cpp afx_msg void OnMyButtonClick(); ``` - 在消息映射中添加条目: ```cpp ON_BN_CLICKED(IDC_MY_BUTTON, OnMyButtonClick) ``` - 在实现文件中编写函数体: ```cpp void CMyDialog::OnMyButtonClick() { // 处理按钮点击事件 } ``` ### 示例代码 以下是一个简单的示例,展示如何手动为按钮添加点击事件处理函数: ```cpp // MyDialog.h class CMyDialog : public CDialog { // 其他成员... protected: afx_msg void OnMyButtonClick(); DECLARE_MESSAGE_MAP() }; // MyDialog.cpp BEGIN_MESSAGE_MAP(CMyDialog, CDialog) ON_BN_CLICKED(IDC_MY_BUTTON, OnMyButtonClick) END_MESSAGE_MAP() void CMyDialog::OnMyButtonClick() { // 处理按钮点击事件 AfxMessageBox("Button clicked!"); } ``` ### 注意事项 - 确保控件的 ID 是唯一的,并且在资源文件中正确声明。 - 对于动态创建的控件,需要确保在创建控件时指定正确的 ID,并且在对话框类中正确声明和实现事件处理函数
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值