windows自訂訊息

來源:互聯網
上載者:User

Windows 應用程式所要做的每項工作幾乎都是基於訊息處理的, Windows 系統訊息分為常用 Windows 訊息,控制項通知訊息和命令。然而,有時我們需要定義自己的訊息來通知程式什麼事情發生了,這就是使用者自訂訊息。 ClassWizard 並沒有提供增加使用者自訂訊息的功能,所以要使用使用者自訂訊息,必須手工編寫代碼。然後 ClassWizard 才可以象處理其它訊息一樣處理你自訂的訊息。具體做法如下詳解: 

   第一步:定義訊息。一個訊息實際上是開發 Windows95 應用程式時, Microsoft 推薦使用者自訂訊息至少是 WM_USER+100 ,因為很多新控制項也要使用 WM_USER 訊息。 

   第二步:實現訊息處理函數。該函數使用 WPRAM 和 LPARAM 參數並返回 LPESULT 。 

   LPESULT CMainFrame::OnMyMessage(WPARAM wParam, LPARAM lParam){// TODO: 處理使用者自訂訊息 AfxMessageBox(" 處理使用者自訂訊息 "); return 0;} 

   第三步:在類標頭檔的 AFX_MSG 塊中說明訊息處理函數: 
   class CMainFrame:public CMDIFrameWnd{

   ...

   // 一般訊息映射函數 

   protected:

   // {{AFX_MSG(CMainFrame)

   afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

   afx_msg void OnTimer(UINT nIDEvent);

   afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);

   //}}AFX_MSG

   DECLARE_MESSAGE_MAP()}

   第四步:在使用者類的訊息塊中,使用 ON_MESSAGE 巨集指令將訊息映射到訊息處理函數中。 
   BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)

   //{{AFX_MSG_MAP(CMainFrame)

   ON_WM_CREATE()

   ON_WM_TIMER()

   ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage)

   //}}AFX_MSG_MAPEND_MESSAGE_MAP()

   這樣,一個使用者自訂訊息就可以使用了,如果使用者需要一個整個系統唯一的訊息,可以調用 SDK 函數 RegisterWindowMessage 並使用 ON_REGISTER_MESSAGE 巨集指令取代 ON_MESSAGE 巨集指令,其餘步驟同上。 

 

現在.cpp檔案的頂端
#define WM_MYMESSAGE WM_USER+100
在到.h檔案的
//{{AFX_MSG(CMyDlg) //自動產生的
afx_msg void OnMyMessage(); //你要填寫的
//}}AFX_MSG         //自動產生的。 
在到.cpp檔案中
BEGIN_MESSAGE_MAP(CMyDlg, CDialog) //自動產生的
//{{AFX_MSG_MAP(CMyDlg)//自動產生的
ON_MESSAGE(WM_MYMESSAGE, OnMyMessage) //你要填寫的
//}}AFX_MSG_MAP//自動產生的
END_MESSAGE_MAP() //自動產生的

然後定義函數
void CMyDlg::OnMyMessage()
{
       AfxMessageBox("this is my message") ;
}

最後就是發訊息了,如果不用API
就SendMessage(WM_MYMESSAGE, 0, 0 );
如果用API
就SendMessage(視窗控制代碼,WM_MYMESSAGE, 0 , 0)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.