ON_MESSAGE
来源:互联网 发布:八进制转十进制算法 编辑:程序博客网 时间:2024/06/13 12:05
昨天在socket异步选择模型试验时,写那个回调的消息处理函数.
写成4个参的了(hwnd, umsg, wparam, lparam), 收到的eventid是编外的,很奇怪.
后来实在没招,对照正确的实现,才找到区别. 原来回调消息处理是2个参的(wparam, lparam).
用了一个多小时,解决这个问题。
总结一下,遇到这类问题怎么搞.
就算消息处理函数写的不对,那就在入口处断住,去调用链上看看, MFC是按照怎样的消息处理函数来调用的,一下子就清楚了, 这样搞最简单.
case AfxSig_lwl: lResult = (this->*mmf.pfn_lwl)(wParam, lParam); break;
去看ON_MESSAGE或定下的消息映射宏也可以
// for Windows messages#define ON_MESSAGE(message, memberFxn) \ { message, 0, 0, 0, AfxSig_lwl, \ (AFX_PMSG)(AFX_PMSGW)(LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM))&memberFxn },
msdn上也有的,可是我当时看到另外一个分支上去了
这个分支上就没写自定义消息函数有几个参,我就想当然的搞了4个参…
总之,就是当时没想到,挫了.
//}}AFX_MSG_MAP ON_MESSAGE(WM_SHOW_THREAD_MSG, OnShowThreadMsg)END_MESSAGE_MAP()
//}}AFX_MSG afx_msg void OnShowThreadMsg(WPARAM wParam, LPARAM lParam); DECLARE_MESSAGE_MAP()
void CPingUIDlg::OnShowThreadMsg(WPARAM wParam, LPARAM lParam) { CString str; EnterCriticalSection(&g_csDispMsg); if (0 == wParam) { while (!m_ListDispMsg.empty()) { str = m_ListDispMsg.front(); m_ListDispMsg.pop_front(); ShowMsg((LPTSTR)(LPCTSTR)str); } } else { m_CtrlListBoxMsg.ResetContent(); } LeaveCriticalSection(&g_csDispMsg);}
0 0
- ON_MESSAGE
- ON_MESSAGE宏
- ON_MESSAGE / NOTIFY
- ON_MESSAGE使用方法
- ON_MESSAGE使用方法
- ON_MESSAGE使用方法
- PostMessaget ON_MESSAGE
- MFC 消息 ON_MESSAGE
- ON_MESSAGE ,ON_COMMAND, ON_NOTIFY
- ON_COMMAND ON_MESSAGE ON_NOTIFY
- on_message与on_registered_message
- PostMessaget与ON_MESSAGE
- VC2008 on_message的问题
- ON_MESSAGE ,ON_COMMAND, , ON_NOTIFY
- ON_MESSAGE和ON_REGISTERED_MESSAGE
- VS2005 on_message的问题
- ON_MESSAGE和ON_NOTIFY 区别
- PostMessaget与ON_MESSAGE
- const void* 指向的内存是否可改变
- (Caffe,LeNet)初始化测试网络(四)
- ubuntu下编写简单的helloworld程序
- java中静态变量和实例变量到底有什么区别
- android最佳实践指南
- ON_MESSAGE
- 使用异步任务下载--疯狂android讲义实例
- 枚举
- 数组I冒泡法排序
- 分布式服务框架 dubbo/dubbox 入门示例
- Elasticsearch - 短语匹配(match_phrase)以及slop参数
- java io(一)
- [IOS]Label-UIMenuController
- 21. Merge Two Sorted Lists | Java最短代码实现