如何处理MFC中动态创建的对象的事件?
我想知道如何处理动态创建的变量(例如列表控件)的事件。
CListCtrl* pList = new CListCtrl();<br/>
pList->Create(...);
如何处理 pList 的 LVN_ITEMCHANGED 事件?
OnLvnItemchangedList(NMHDR *pNMHDR, LRESULT *pResult)
{
//do stuff
}
我是否必须创建一个扩展的 CListCtrl 还是有其他方法?我不想创建扩展类。
I am wondering how I can handle an event for a dynamically created variable, e.g. a list control.
CListCtrl* pList = new CListCtrl();<br/>
pList->Create(...);
How can I handle the event LVN_ITEMCHANGED for pList?
OnLvnItemchangedList(NMHDR *pNMHDR, LRESULT *pResult)
{
//do stuff
}
Do I have to create an extended CListCtrl or is there some other way? I would prefer not creating a extended class.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
LVN_ITEMCHANGED 通过 WM_NOTIFY 消息发送控制到其父级,因此您只需在父级类中添加 LVN_ITEMCHANGE 处理函数(例如 CMyDlg):
在头文件中:
在源文件中:
无论
CListCtrl
控件是如何创建的(通过资源编辑器或动态创建),方法都是相同的。只需确保您在ON_NOTIFY
消息映射条目中使用正确的控件ID
即可。 (ID
传递给Create
/CreateEx
或在资源编辑器的 Properties 中定义)。LVN_ITEMCHANGED is sent through WM_NOTIFY message from control to its parent so you just need to add LVN_ITEMCHANGE handler function in parent's class (e.g. CMyDlg):
In header file:
In source file:
It does not matter how
CListCtrl
control is created (through resource editor or dynamically), approach is the same. Just make sure you are using correct controlID
inON_NOTIFY
message map entry. (ID
passed toCreate
/CreateEx
or defined in Properties in resource editor).