mfc 动态为控件添加事件1
Posted whzym111
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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); }
以上是关于mfc 动态为控件添加事件1的主要内容,如果未能解决你的问题,请参考以下文章