首页 > 代码库 > mfc 动态为控件添加事件1
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。