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

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

    • 分享

      MFC 消息處理方法-自定義消息-攔截-變更-攔截關機重啟消息

       筆錄收藏 2012-09-11

      /****************************************************************
      編程筆記:在MFC中常用的消息處理方法
      編寫作者:Coderui
      整理日期:2009年11月04日
      編寫語言:C++(MFC)
      編譯環(huán)境:VC++ 6.0
      聯(lián)系郵箱:
      作者博客:http://hi.baidu.com/coderui
      ****************************************************************/

      一、自定義消息

      假如想在CMyMessageDlg類中添加自定義消息:

      1、在頭文件"MyMessageDlg.h"中添加自定義消息的宏聲明:
      #define WM_USER_MYMESSAGE WM_USER + 100

      2、在頭文件"MyMessageDlg.h"中添加消息映射函數(shù)的聲明:
      afx_msg void OnMyMessageProc(WPARAM wParam, LPARAM lParam);

      3、在文件"MyMessageDlg.cpp"中添加處理自定義消息的宏:
      ON_MESSAGE(WM_USER_MYMESSAGE, OnMyMessageProc)

      4、在文件"MyMessageDlg.cpp"中添加自定義消息函數(shù)的實現(xiàn)部分:
      void CMyMessageDlg::OnMyMessageProc(WPARAM wParam, LPARAM lParam)
      {
      // ……
      }

      5、觸發(fā)自定義消息的方法:
      void CMyMessageDlg::OnOK()
      {
      // 調用自定義消息
      SendMessage(WM_USER_MYMESSAGE, (WPARAM)0, (LPARAM)0);
      }

      二、消息攔截

      假如想攔截自定義消息“WM_USER_MYMESSAGE”和系統(tǒng)消息“WM_SIZE”:
      #define WM_USERMESSAGE_NULL WM_USER+32   // 自定義消息

      重載WindowProc函數(shù),在函數(shù)中實現(xiàn)消息的攔截
      LRESULT CMyMessageDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
      {
      // TODO: Add your specialized code here and/or call the base class
      switch (message)
      {
      case WM_USERMESSAGE:
         AfxMessageBox("自定義消息攔截");

         // 如果在這里把消息銷毀掉,不讓其正確轉發(fā),則對應的消息處理函數(shù)就不會被調用了。
      //   message WM_USERMESSAGE_NULL;
         break ;

      case WM_SIZE:
         AfxMessageBox("系統(tǒng)消息攔截");
         break ;
      }

      return CDialog::WindowProc(message, wParam, lParam);
      }

      三、消息變更

      假如接到消息“WM_USER_MYMESSAGE1”后,需要根據(jù)條件來判斷是否需要變更消息:
      #define WM_USER_MYMESSAGE1 WM_USER + 101
      #define WM_USER_MYMESSAGE2 WM_USER + 102

      重載WindowProc函數(shù),在函數(shù)中實現(xiàn)消息的攔截
      LRESULT CMyMessageDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
      {
      // TODO: Add your specialized code here and/or call the base class
      switch (message)
      {
      case WM_USER_MYMESSAGE1:
         if (條件判斷)
         {
          // 把消息變更為其它消息
          message = WM_USER_MYMESSAGE2;
         }
         break ;
      }

      return CDialog::WindowProc(message, wParam, lParam);
      }

      四、例子:攔截系統(tǒng)注銷、重啟和關機消息的例子

      假如想把系統(tǒng)注銷、重啟和關機的消息都攔截下來,并銷毀掉,不讓其執(zhí)行注銷、重啟和關機等操作:
      #define WM_USERMESSAGE_NULL WM_USER+32   // 自定義消息

      LRESULT CMyMessageDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
      {
      // TODO: Add your specialized code here and/or call the base class
      // WM_QUERYENDSESSION消息是Windows向你詢問Windows能否關閉
      // WM_ENDSESSION消息表示提示你Windows即將關閉。
      switch(message)
      {
      case WM_ENDSESSION:
         AfxMessageBox("消息攔截1");
         // 把消息銷毀掉,不讓其正確轉發(fā)。
         message = WM_USERMESSAGE_NULL;
         break ;
      case WM_QUERYENDSESSION:
         AfxMessageBox("消息攔截2");
         // 把消息銷毀掉,不讓其正確轉發(fā)。
         message = WM_USERMESSAGE_NULL;
         break ;
      }

      return CDialog::WindowProc(message, wParam, lParam);
      }

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多