//控件消息,菜单,按钮等 BOOL CXXDlg::OnCommand(WPARAM wParam, LPARAM lParam) { // TODO: 在此添加专用代码和/或调用基类 int wmEVENT=HIWORD(wParam); if ( wmEVENT == EN_CHANGE) { //HWND hwndCtl = (HWND) lParam; int wmID =LOWORD(wParam); if(wmID == IDC_EDIT_NAME) { } } return CDialog::OnCommand(wParam, lParam); }
通过一个消息路由,监控所有编辑框EN_CHANGE事件。
还可以重载对话框 DefWindowsProc()或WindowsProc()
关键点:
理解command消息格式
int wmID =LOWORD(wParam); //产生消息的控件ID
int wmEVENT=HIWORD(wParam); //产生的消息事件代码
HWND hwndCtl = (HWND) lParam; //产生消息的控件句柄
更多:常用控件消息
按扭控件
BN_CLICKED 用户单击了按钮
BN_DISABLE 按钮被禁止
BN_DOUBLECLICKED 用户双击了按钮
BN_HILITE 用户加亮了按钮
BN_PAINT 按钮应当重画
BN_UNHILITE 加亮应当去掉
组合框控件
CBN_CLOSEUP 组合框的列表框被关闭
CBN_DBLCLK 用户双击了一个字符串
CBN_DROPDOWN 组合框的列表框被拉出
CBN_EDITCHANGE 用户修改了编辑框中的文本
CBN_EDITUPDATE 编辑框内的文本即将更新
CBN_ERRSPACE 组合框内存不足
CBN_KILLFOCUS 组合框失去输入焦点
CBN_SELCHANGE 在组合框中选择了一项
CBN_SELENDCANCEL 用户的选择应当被取消
CBN_SELENDOK 用户的选择是合法的
CBN_SETFOCUS 组合框获得输入焦点
编辑框控件
EN_CHANGE 编辑框中的文本己更新
EN_ERRSPACE 编辑框内存不足
EN_HSCROLL 用户点击了水平滚动条
EN_KILLFOCUS 编辑框正在失去输入焦点
EN_MAXTEXT 插入的内容被截断
EN_SETFOCUS 编辑框获得输入焦点
EN_UPDATE 编辑框中的文本将要更新
EN_VSCROLL 用户点击了垂直滚动条消息含义
列表框控件
LBN_DBLCLK 用户双击了一项
LBN_ERRSPACE 列表框内存不够
LBN_KILLFOCUS 列表框正在失去输入焦点
具体消息事件代码宏,请参阅MSDN
更多请参阅:http://blog.csdn.net/cwj976277916/article/details/9019177 深度解析VC中的消息传递