您的位置:首页 > 其它

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

2017-12-28 10:10 453 查看
知识点:

认识窗口过程

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);

}

设计的窗口获得消息时候,能够在输出界面上看到控件绑定事件来确定消息确实收到。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: