MFC-为动态控件绑定事件方法1

知识点:
认识窗口过程
GetWindowLong
SetWindowLong
为动态控件绑定事件

一、获取窗口过程

二、设置新窗口过程
1、书写一个新窗口过程函数
窗口过程格式
LRESULT CALLBACK WindowProc(

HWND hwnd, // 窗口句柄

UINT uMsg, // 消息事件

WPARAM wParam, // 消息参数1
LPARAM lParam //消息参数2
);

CallWindowProc 把消息事件传递给以前的窗口过程
LRESULT CallWindowProc(

WNDPROC lpPrevWndFunc, // 指向前一个窗口过程

HWND hWnd, // 窗口句柄

UINT Msg, // 消息事件

WPARAM wParam, // 消息参数1

LPARAM lParam // 消息参数2
);

2、注册新的窗口过程 

三、为动态控件绑定事件
EN_CHANGE
WM_CHAR
WM_LBUTTONDOWN

WNDPROC oldProc;
LRESULT CALLBACK newProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
if (uMsg==WM_COMMAND)
{
switch(LOWORD(wParam)) //0xFFFF FFFF
{
case 10081:
if (HIWORD(wParam)==EN_CHANGE)
{
TRACE(” myedt 控件 产生EN_CHANGE消息\n”);
// 添加相应事件处理函数
}
break;
case 10082:
if (HIWORD(wParam)==EN_CHANGE)
{
TRACE(” myedt2 控件 产生EN_CHANGE消息\n”);
// 添加相应事件处理函数
}
break;
}
}

return CallWindowProc(oldProc,hwnd,uMsg,wParam,lParam);

}

// CDialog_Dynamics_Create 消息处理程序

void CDialog_Dynamics_Create::OnBnClickedButton1()
{
//替换窗口过程
//1获取当前窗口过程
oldProc=(WNDPROC)GetWindowLong(m_hWnd,GWL_WNDPROC);
//替换窗口过程
SetWindowLong(m_hWnd,GWL_WNDPROC,(LONG) newProc);
}
设计的窗口获得消息时候,能够在输出界面上看到控件绑定事件来确定消息确实收到。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值