vc2005/MFC-添加不常用的消息的消息处理函数/消息处理函数.
2009-02-16 17:41
459 查看
一般情况下, 添加常用的消息的消息处理函数的过程为: 点击要添加消息处理函数的类名->在属性界面内选择对应的消息->添加消息处理函数即可.
但是, 属性列表里自带的消息处理函数有限. 那么如何添加别的消息的消息处理函数呢?
下面 以 WM_COPYDATA为例. 做一个介绍:
1:
首先在属性列表里添加 WM_KEYDOWN的消息处理函数OnKeyDown(...)
2:
找到vc2005为响应WM_KEYDOWN而添加的宏:
如果不出意外的话, 应该是如下所示:
BEGIN_MESSAGE_MAP(CMainDlg, CDialog)
ON_WM_KEYDOWN()
END_MESSAGE_MAP()
3:
右击ON_WM_KEYDOWN宏, 转到定义, 你会发现几乎所有的消息都在这里做了映射, 当然少不了 WM_COPYDATA消息. 找到WM_COPYDATA消息对应的宏: ON_WM_COPYDATA()
4:
添加宏 ON_WM_COPYDATA()
BEGIN_MESSAGE_MAP(CMainDlg, CDialog)
ON_WM_KEYDOWN()
ON_WM_COPYDATA() // 添加到这里
END_MESSAGE_MAP()
5:
#define ON_WM_COPYDATA() /
{ WM_COPYDATA, 0, 0, 0, AfxSig_bWCDS, /
(AFX_PMSG)(AFX_PMSGW) /
(static_cast< BOOL (AFX_MSG_CALL CWnd::*)(CWnd*, COPYDATASTRUCT*) > ( &ThisClass :: OnCopyData)) }
通过查看宏,可以知道, 对应WM_COPYDATA的消息处理函数为OnCopyData, 参数列表为(CWnd*, COPYDATASTRUCT*) , 返回值为: BOOL.
6:
添加成员函数即可.
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg BOOL OnCopyData( CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct ); // 新添加的
////////////////////////////
另一方面,也可以通过重载WindowProc, 自行处理WM_COPYDATA消息.
////////////////////////////
由于消息的宏映射和VC6.0的不一样了,添加自定义的消息处理宏, 应该和上面的方式一样
比如
自己写一个ON_WM_MYMSG() ....???
但是, 属性列表里自带的消息处理函数有限. 那么如何添加别的消息的消息处理函数呢?
下面 以 WM_COPYDATA为例. 做一个介绍:
1:
首先在属性列表里添加 WM_KEYDOWN的消息处理函数OnKeyDown(...)
2:
找到vc2005为响应WM_KEYDOWN而添加的宏:
如果不出意外的话, 应该是如下所示:
BEGIN_MESSAGE_MAP(CMainDlg, CDialog)
ON_WM_KEYDOWN()
END_MESSAGE_MAP()
3:
右击ON_WM_KEYDOWN宏, 转到定义, 你会发现几乎所有的消息都在这里做了映射, 当然少不了 WM_COPYDATA消息. 找到WM_COPYDATA消息对应的宏: ON_WM_COPYDATA()
4:
添加宏 ON_WM_COPYDATA()
BEGIN_MESSAGE_MAP(CMainDlg, CDialog)
ON_WM_KEYDOWN()
ON_WM_COPYDATA() // 添加到这里
END_MESSAGE_MAP()
5:
#define ON_WM_COPYDATA() /
{ WM_COPYDATA, 0, 0, 0, AfxSig_bWCDS, /
(AFX_PMSG)(AFX_PMSGW) /
(static_cast< BOOL (AFX_MSG_CALL CWnd::*)(CWnd*, COPYDATASTRUCT*) > ( &ThisClass :: OnCopyData)) }
通过查看宏,可以知道, 对应WM_COPYDATA的消息处理函数为OnCopyData, 参数列表为(CWnd*, COPYDATASTRUCT*) , 返回值为: BOOL.
6:
添加成员函数即可.
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg BOOL OnCopyData( CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct ); // 新添加的
////////////////////////////
另一方面,也可以通过重载WindowProc, 自行处理WM_COPYDATA消息.
////////////////////////////
由于消息的宏映射和VC6.0的不一样了,添加自定义的消息处理宏, 应该和上面的方式一样
比如
自己写一个ON_WM_MYMSG() ....???
相关文章推荐
- 在vs2008 vc++ 中添加mfc中消息处理函数
- 在vs2008 vc++ 中添加mfc中消息处理函数
- 在vs2008 vc++ 中添加mfc中消息处理函数
- 在vs2008 vc++ 中添加mfc中消息处理函数
- VS2010/MFC编程入门之八(对话框:为控件添加消息处理函数)
- MFC学习笔记——CDialog(为控件添加消息处理函数)
- (转载)VS2010/MFC编程入门之九(对话框:为控件添加消息处理函数)
- VS2010/MFC对话框四:为控件添加消息处理函数
- MFC+OpenGL添加WM_DESTROY的消息处理函数Ondestroy( )后出现的错误
- vc 添加自定义消息及消息处理函数分5步
- vc 添加自定义消息及消息处理函数分5步
- 为MFC菜单项添加消息处理函数
- VS2013/MFC编程入门(对话框:为控件添加消息处理函数)
- 如何在VC中添加消息处理函数
- 【VS2010学习笔记】【函数学习】一(MFC+OpenCV2.4.7读取摄像头之WM_TIMER消息处理函数的添加问题)
- MFC如何添加系统消息处理函数?
- (转载)VS2010/MFC编程入门之五十四(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)
- 在MFC中手动添加消息处理函数PreTranslateMessage和自定义消息