首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

动态创建的 CButton 怎么响应其事件

2012-01-12 
动态创建的 CButton 如何响应其事件我看了一些帖子,似乎都不太好.动态创建的CButtonID是不固定的,因此不能

动态创建的 CButton 如何响应其事件
我看了一些帖子,似乎都不太好.
动态创建的   CButton   ID是不固定的,因此不能事先指定ID.
有个解决办法是响应父窗口的   preTranslateMsg   函数,在这里判断是否是此按钮的相关事件.
但   preTranslateMsg   函数的控件ID似乎不在wParam和lParam里,我一直没跟踪到是在哪,哪如何判断是哪个控件的事件呢?

[解决办法]
ON_COMMAND_RANGE(ID_MY_ADD_BUTTON,ID_MY_ADD_BUTTON+100,OnMyAddButton).
创建button时,使用事先预留好的ID。(例,起始ID_MY_ADD_BUTTON,留100个)。
在统一的响应函数 OnMyAddButton(UINT nID)中响应,具体是哪个button, 由参数nID决定。
[解决办法]
rayland()
已经说的很清楚了,
如果你创建的ID不是ID_xxx的常量,而是变量,比如 int nIDmin = 10002, nIDmax = 10145;
则把对应的常量用变量替换即可.
比如
if( (LOWORD(wParam) > = nIDmin ) && (LOWORD(wParam) <= nIDmax ))
{
OnMyAddButton(LOWORD(wParam) );
return true;
}

这里的 if 处理,就相当于 ON_COMMAND()
所以不再需要用宏定义消息映射.

热点排行