1. 程式人生 > >在MFC中如何自定義訊息及相應事件(VC6.0及VS2005)

在MFC中如何自定義訊息及相應事件(VC6.0及VS2005)

自定義訊息的步驟如下:
(1)建立Single Document的MFC Application,工程名為:MyMessage
(2)自定義訊息:
第一步:定義訊息
在Resource.h中新增如下程式碼:

//推薦使用者自定義訊息至少是WM_USER+100,因為很多新控制元件也要使用WM_USER訊息。
#define WM_MY_MESSAGE (WM_USER+100)

第二步:宣告訊息處理函式
選擇CMainFrame類中新增訊息處理函式
在MainFrm.h檔案中,類CMainFrame內(其實就是你想要進行響應的窗體類),宣告訊息處理函式,程式碼如下:

protect:
    afx_msg LRESULT

OnMyMessage(WPARAM wParam, LPARAM lParam); 

PS:返回型別必須是LRESULT,不然是void等等型別。

第三步:實現訊息處理函式
在MainFrm.cpp檔案中新增如下程式碼:

LRESULT CMainFrame::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
      //TODO: Add your message handle code
      return 0;
}
 第四步:在CMainFrame類的訊息塊中,使用ON_MESSAGE巨集指令將訊息對映到訊息處理函式中

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
    ON_WM_CREATE()
    ON_MESSAGE(WM_MY_MESSAGE,OnMyMessage)


    //ON_REGISTERED_MESSAGE (WM_MY_MESSAGE,OnMyMessage)
END_MESSAGE_MAP()
 如果使用者需要一個定義整個系統唯一的訊息,可以呼叫SDK函式RegisterWindowMessage定義訊息:
在Resource.h中將程式碼

#define WM_MY_MESSAGE (WM_USER+100)
替換為:

static UINT WM_MY_MESSAGE=RegisterWindowMessage(_T("User"));
並使用ON_REGISTERED_MESSAGE巨集指令取代ON_MESSAGE巨集指令,其餘步驟同上。
注:如果仍然使用ON_MESSAGE巨集指令,compile可以通過,但是無法響應訊息。
當需要使用自定義訊息時,可以在相應類中的函式中呼叫函式PostMessage或SendMessage傳送訊息PoseMessage(WM_MY_MESSAGE,0,0)。

VC6.0開發環境:

區別:

返回型別可以是void型別,這個可以參見孫鑫老師的第十五課講解。

相關推薦

MFC如何定義訊息相應事件VC6.0VS2005

自定義訊息的步驟如下: (1)建立Single Document的MFC Application,工程名為:MyMessage (2)自定義訊息: 第一步:定義訊息在Resource.h中新增如下程式碼: //推薦使用者自定義訊息至少是WM_USER+100,因為很多新控制元件也要使用WM_USER訊息。

如何在MFC定義訊息

訊息對映、迴圈機制是Windows程式執行的基本方式。VC++   MFC   中有許多現成的訊息控制代碼,可當我們需要完成其它的任務,需要自定義訊息,就遇到了一些困難。在MFC   ClassWizard中不允許新增使用者自定義訊息,所以我們必須在程式中新增相應程式碼

MFC定義訊息過程

 這幾天接觸一個MFC自定義訊息,但是之前沒用過,犯了一個低階錯誤,粘貼出來供大家參考。  下圖是Windows訊息圖示: 有使用者自定義訊息的一些範圍。以一個具體的例子介紹使用方法:  第一步:本人定義一個訊息    

MFC定義按鈕響應鍵盤的回車操作

在MFC的專案中,預設情況下,執行時按下回車的時候程式就會退出。 我們希望在按下回車的時候執行我們自定義的按鈕,可以這樣去做。 首先,我們新增訊息處理函式,按住Ctrl+W,如下圖 然後點選“Add Function”之後,就會看到 這個時候我們看到,標頭檔案中, p

VC定義訊息ON_MESSAGE的用法

在一個對話方塊mark.cpp中,自定義一個訊息, 首先在mark.cpp中新增 #define WM_DATA   WM_USER+100   之後再mark.h裡 protected:// Generated message map functions//{{AFX_M

VS2008下如何為mfc新增定義訊息

VS2008與其它VS系列有很大的變化,取消了class wized這個東西,用起來一開始確實很不習慣,以前新增自定義訊息直接按新增按鈕然後配置一個頭檔案就好了,現在都要自己來寫,也算溫習下windows的訊息機制吧 1.首先在標頭檔案中定義ON_MESSAG

ListView定義Item點選事件處理

開發中很常見的一個問題,專案中的listview不僅僅是簡單的文字,常常需要自己定義listview的Item,自己的Adapter去繼承BaseAdapter,在adapter中按照需求進行編寫,問題就出現了,可能會發生點選每一個item的時候沒有反應,無法獲

CSS定義select選擇框樣式右側下拉箭頭

如圖:自定義select的箭頭樣式  HTML以及CSS程式碼如下: <select class="form_select"> <option value="0">請選擇</option> <option value=

定義時間選擇控制元件仿ios滾動效果

1.先上自定義的控制元件: /** * 滾輪選擇器 * author LH * data 2016/8/20 17:26 */ public class WheelView extends View { public static final String

定義頂端頂部導航欄可配合ViewPager使用

最近做專案,需要有類似網易新聞頂端的導航欄的ui元件,但是就是有切換動畫的那種,於是就自己動手寫了一個,看了我的文章,如果有什麼問題,歡迎大家交流哦。 實現原理:通過OnPageChangeListener的onPageScrolled()事件獲取當前頁面的偏移量,從而改

閱讀徐宜生《Android群英傳》的筆記——第3章 Android控制元件架構與定義控制元件詳解3.6-3.8

3.6 自定義 View 在自定義 View 時,我們通常會去重寫 onDraw() 方法來繪製 View 的顯示內容。如果該 View 還需要使用 wrap_content 屬性,那麼還必須重寫 onMeasure() 方法。另外,通過自定義 attr

[Visual Studio C++] [MFC] 新增使用者定義訊息訊息響應函式講解

一、前言           本文介紹 兩種方法 新增使用者自定義訊息及訊息響應函式。  第一種,使用者手動新增兩個檔案((.h)和 (.cpp))的內容。  第二種,利用 MFC 的整合功能,自動新增。(推薦

MFC傳送定義訊息機制,PostMessage和SendMessage方式

       MFC中有種訊息佇列,使用PostMessage()或者SendMessage()給窗體傳送自定義訊息,當窗體接收到訊息時呼叫該訊息對應繫結的方法。 PostMessage:把訊息投放到執行緒的訊息佇列,不等訊息被處理就立即返回;Send

MFC新增使用者定義訊息

首先弄清楚兩點: (1)誰要傳送這個訊息(2)誰要接受這個訊息。   用一個簡單的例子來說明。物件A向B(也可以就是A到A)傳送訊息。   1 傳送訊息   首先在A的標頭檔案中定義這個訊息:     #define WM_USERMESSAGE WM_USER+30      所有自定義訊息都

[C++][Visual Studio] [MFC] 新增使用者定義訊息訊息響應函式講解

一. 在對應類的標頭檔案中自定義訊息。          程式碼: #define WM_MyMessage  WM_USER+100            說明:                             MFC自有的訊息都是在WM_USER內的,所以

MFC使用者定義訊息及其響應函式的方法

1.在對應類的標頭檔案中自定義訊息 如:#define WM_RESULT WM_USER+1 2.在標頭檔案中定義訊息響應函式,注意:這個函式的返回值必須是LRESULT 引數必須是 WPARAM 和LPARAM型別。 這是因為afx_msg void OnMyMessa

1 .net定義事件的步驟

sender soc size etc utf nbsp 並且 ram void 1 申明一個自定義的類並且繼承事件的基類 public class ClientSocketModelConnectedEvent:EventArgs { priv

JavaScript定義函數以文本框、radio、下拉框的值的獲取,結合淘寶競拍案例來理解。。。

支付寶 價格 select back html alt 文本框 lec 獲取 淘寶競拍案例: HTML部分代碼: <form action="#" method="post"> <h2>歡迎進入淘寶競拍</h2> &l

接入微信公眾平臺開發之使用者關注取消事件觸發後臺定義訊息體通知給使用者的實現過程

1.需求:使用者關注公眾號後回覆給使用者一個字串,字串不能重複使用即如果a使用者關注公眾號後商戶後臺回覆給使用者字串str1後,b使用者關注就是其他字串,且a使用者取消關注再次關注不回覆訊息體 2.實現過程:   ①首先配置伺服器url並開啟,再次過程中需要微信後臺與商戶後臺進行通訊,所以,微信後臺會發送

vc++ 不同對話方塊傳遞資訊的方法基於定義訊息SendMessage

也是花了一天時間才搞定的。 背景: 新建了一個基於對話方塊的MFC程式,在主對話方塊中新增tabcontrol控制元件,又新建了兩個Dialog(CDialog1和CDialog2),將它們設為tabcontrol控制元件的子對話方塊。 目的: 兩個子對話方塊之間傳遞訊息,子對話方塊與主對話