C++中添加自定义消息的响应 (BEGIN_MESSAGE_MAP ON_MESSAGE)

1首先要在窗口类的cpp文件手动添加消息响应机制,


ON_MESSAGE(ID,Handler) 
LRESULT Handler(WPARAM,LPARAM);//响应的函数

 

 

Cpp代码 
  1. BEGIN_MESSAGE_MAP(CShellDlg, CDialog)  
  2.     //{{AFX_MSG_MAP(CShellDlg)  
  3.     ON_MESSAGE(WM_SENDOFFLINE, OnSendOffline) //自定义消息  
  4.     ON_MESSAGE(WM_SWIPECARD, OnSwipeCard)     //自定义消息  
  5.     ON_MESSAGE(WM_MODEM, OnModem)     
  6.     ON_MESSAGE(WM_PINPAD, OnPinPad)  
  7.     ON_MESSAGE(WM_TRANSACTION, OnTransaction)  
  8.     ON_MESSAGE(WM_THREAD_ERROR, OnThreadError)  
  9.     ON_MESSAGE(WM_SENDRECALL, OnSendRecall)  
  10.     ON_MESSAGE(WM_CHECKTXN, OnOnCheckTxn)    //自定义消息  
  11.     ON_WM_TIMER()  
  12.     ON_WM_KEYDOWN()  
  13.     ON_WM_DESTROY()  
  14.     //}}AFX_MSG_MAP  
  15. END_MESSAGE_MAP()  


2 其次在窗口类h文件添加如下代码;

 

Cpp代码 
  1. // Generated message map functions  
  2. //{{AFX_MSG(CShellDlg)  
  3. virtual BOOL OnInitDialog();  
  4. afx_msg void OnTimer(UINT nIDEvent);  
  5. afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);  
  6. afx_msg void OnDestroy();  
  7. afx_msg LONG OnSwipeCard(WPARAM wParam,LPARAM lParam);  
  8. afx_msg LONG OnModem(WPARAM wParam, LPARAM lParam);  
  9. afx_msg LONG OnPinPad(WPARAM wParam, LPARAM lParam);      
  10. afx_msg LONG OnTransaction(WPARAM wParam, LPARAM lParam);  
  11. afx_msg LONG OnThreadError(WPARAM wParam, LPARAM lParam);  
  12. afx_msg LONG OnSendOffline(WPARAM wParam, LPARAM lParam);  
  13. afx_msg LONG OnSendRecall(WPARAM wParam, LPARAM lParam);  
  14. afx_msg LONG OnOnCheckTxn(WPARAM wParam, LPARAM lParam);  
  15. //}}AFX_MSG  
  16. DECLARE_MESSAGE_MAP()  

 

3 实现响应函数,

 

Cpp代码 
  1. LONG XXXDlg::OnOnCheckTxn(WPARAM wParam, LPARAM lParam)  
  2. {  
  3.     dwCurTranType =0;  
  4.         .....  
  5.         //这部分添加自己响应代码  
  6.     return 0;  
  7. }  


4 最后在自己需要的地方调用自己定义的消息(消息响应)

MyMsg(pDlg->m_hWnd, WM_CHECKTXN, (WPARAM)TXN_DOWNTYPE, 0);

 

 

Cpp代码 
  1. //消息转发  
  2. BOOL MyMsg(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)  
  3. {  
  4.     BOOL bRet = FALSE;  
  5.     bRet = PostMessage(hWnd, uMsg, wParam, lParam);  
  6.     return bRet;  
  7. }  

 


这样就全部OK了,等有时间把测试代码在整理出来

posted on 2011-04-16 16:36  烟波钓徒  阅读(2305)  评论(0编辑  收藏  举报