計(jì)算機(jī)二級(jí)C語言輔導(dǎo):VC增加自定義消息

字號(hào):

ClassWizard不允許增加用戶自定義消息,所以你必須手工輸入。輸入后,ClassWizard就可以象處理其它消息一樣處理你自定義的消息了。
    下面是增加自定義消息的步驟:
    第一步:定義消息。開發(fā)Windows95應(yīng)用程序時(shí),Microsoft推薦用戶自定義消息至少是WM_USER+100,因?yàn)楹芏嘈驴丶惨褂肳M_USER消息。
    第二步:實(shí)現(xiàn)消息處理函數(shù)。該函數(shù)使用WPRAM和LPARAM參數(shù)并返回LRESULT。
    LRESULTCMainFrame::OnMyMessage(WPARAMwParam,LPARAMlParam) //Lonefox轉(zhuǎn)注:若是通過MFC添加的函數(shù),必須把類定義中的函數(shù)頭刪除,否則和下面的消息映射定義重疊,編譯時(shí)報(bào)重定義錯(cuò)誤
    {
    //TODO:處理用戶自定義消息
    ...
    return0;
    }
    第三步:在類頭文件的AFX_MSG塊中說明消息處理函數(shù):
    classCMainFrame:publicCMDIFrameWnd
    {
    ...
    //一般消息映射函數(shù)
    protected:
    //{{AFX_MSG(CMainFrame)
    afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);
    afx_msgvoidOnTimer(UINTnIDEvent);
    afx_msgLRESULTOnMyMessage(WPARAMwParam,LPARAMlParam);
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
    }
    第四步:在用戶類的消息塊中,使用ON_MESSAGE宏指令將消息映射到消息處理函數(shù)中。
    BEGIN_MESSAGE_MAP(CMainFrame,CMDIFrameWnd)
    //{{AFX_MSG_MAP(CMainFrame)
    ON_WM_CREATE()
    ON_WM_TIMER()
    ON_MESSAGE(WM_MY_MESSAGE,OnMyMessage)
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP
    =======================
    Lonefox:我用于在多線程全部完成時(shí)發(fā)送自定義消息到主窗口,主窗口接收。