在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
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.0及VS2005)
自定義訊息的步驟如下: (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控制元件的子對話方塊。 目的: 兩個子對話方塊之間傳遞訊息,子對話方塊與主對話