乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      MFC的自定義消息的定義與使用

       牛人的尾巴 2018-10-10

        自定義消息的響應(yīng)和資源消息的響應(yīng)有很多類似之處;資源消息的響應(yīng)是以資源的ID號(hào)作為標(biāo)識(shí)的;自定義的消息要自己聲明消息ID。

      一.           定義:

      第一步要聲明消息:

      #define WM_MYMSG  WM_USER+200

      第二步要在類聲明中聲明消息映射:

      DECLARE_MESSAGE_MAP()

      第三步要在類聲明中定義消息處理函數(shù):

      afx_msg LRESULT MyMsgHandler(WPARAM,LPARAM);

      在.cpp中做的工作:

      第四步要實(shí)現(xiàn)消息映射:

      BEGIN_MESSAGE_MAP()

      ON_MESSAGE(WM_MYMSG,OnMyMsgHandler)

      END_MESSAGE_MAP()

      第五步要實(shí)現(xiàn)消息處理函數(shù)(當(dāng)然可以不實(shí)現(xiàn)):

      LRESULT CMainFrame::OnMyMsgHandler(WPARAM w,LPARAM l)

      {

      AfxMessageBox("Hello,World!");

      return 0;

      }

      二.           使用

      1.      如果該自定義消息所在的類是有CWnd派生出來的,且在本類中調(diào)用,那么我們可以調(diào)用CWnd::SendMessage()函數(shù),具體定義為:

      LRESULT SendMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );

      此時(shí)我們只需要在引發(fā)消息的地方添加如下代碼:

      SendMessge(WM_MYMSG,0,0);

      如果我們想在不同的情況下發(fā)送用戶消息,我們只需要將SendMessage的后兩個(gè)參數(shù)wParam,lParam加以標(biāo)識(shí)即可;在消息處理函數(shù),寫一個(gè)if條件語(yǔ)句(或switch語(yǔ)句)就可以了;將不同情況下的用戶消息區(qū)分開;

        例如看下面的例子:  

       ?、偌尤胂㈨憫?yīng)函數(shù)實(shí)現(xiàn)
        在CCDlg類的實(shí)現(xiàn)文件中加入消息響應(yīng)函數(shù)的實(shí)現(xiàn)部分,代碼如下:
        void CCDlg::Customize(WPARAM wParam, LPARAM lParam)
        {
              CString strTittle;
              strTittle.Format("自定義消息參數(shù):x=%d,y=%d",wParam,lParam);
              SetWindowText(strTittle);
        }
        此函數(shù)的作用是將鼠標(biāo)的位置信息顯示在對(duì)話框的標(biāo)題欄部分。
       ?、冢藛尾糠?br data-filtered="filtered">  在主框架的“幫助”主菜單中加入“自定義消息”子菜單,其ID設(shè)為ID_CUSTOMIZE,通過類向?qū)ы憫?yīng)該命令,函數(shù)名默認(rèn)。其函數(shù)體如下:
        void CMainFrame::OnCustomize()
        {
              // TODO: Add your command handler code here
              POINT pos;
              //將消息參數(shù)定義為屏幕坐標(biāo)值
              GetCursorPos(&pos);
              pdlg->SendMessage(WM_CUSTOMIZE,(UINT)pos.x,pos.y);//這里就是將(UINT)pos.x,pos.y(注:它們分別對(duì)應(yīng)①中消息響應(yīng)函數(shù)的兩個(gè)參數(shù)WPARAM     wParam和LPARAM lParam)兩個(gè)參數(shù)分別傳給消息響應(yīng)函數(shù)。
        }

      2.      如果不在本類中響應(yīng)自定義消息;那么我們只能用win32 的API函數(shù);例如,當(dāng)自定義消息在CMainFrame中,而觸發(fā)消息的地方不在CMainFrame類中,那么我們可以用如下語(yǔ)句:

      ::SendMessge(::AfxGetMainWnd()->m_hWnd,WM_MYMSG,0,0);

       

       

      相關(guān)內(nèi)容網(wǎng)址:

      http://www.cnblogs.com/smartvessel/archive/2011/07/18/2109472.html

      http://blog.csdn.net/penpenandtongtong/article/details/18598907

      http://www.oschina.net/question/565065_72596

      http://blog./uid-24459558-id-299010.html

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多