MFC動態建立控制元件的訊息處理 (轉)
MFC動態建立的訊息處理
前些天有人在論壇裡問在動態建立TreeCtrl後怎麼響應訊息,於是便寫了一點自己的心得,現整理如下。
本例在view中動態建立一個ListCtrl並響應其NM_CLICK訊息,先寫出動態建立的程式碼:
新建一SDI工程,給view加上一個成員變數:
CListCtrl m_list;
在view的OnCreate中建立它:
if(!m_list.Create(WS_BORDER |WS_CHILD|WS_VISIBLE|LVS_ICON |LVS_AUTOARRANGE|LVS_SHOWSELALWAYS|LVS_EDITLABELS,CRect(10,10,310,210),this,ID_LISTCTRL))
{
TRACE0("Failed to create ListCtrl windown");
return -1;
}
//新增一些項
CString str;
for(int i=0;i<10;i++)
{
str.Format("item%d",i);
m_list.InsertItem(i,str);
}
其中的ID_LISTCTRL是這個控制元件的ID,當然你可以直接用數值來表示,但為了清淅還是定義一個常量的好,在主選單View->Re Symbols彈出的對話方塊中點選New按鈕,在Name下面輸入ID_LISTCTRL.
建立完畢,編譯連結後就可以執行了,但你怎麼點選它都沒反應,當然,因為我們還沒寫訊息處理的程式碼。
通常做法是手動寫訊息處理及訊息對映,至少得三步:1,在頭中定義訊息處理函式的原型,2,在cpp中實現這個函式,3,在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP()之間寫上訊息對映。如果是單單處理一個訊息的話那還可以忍受,訊息一多的話不但麻煩還容易出錯。
所以我採取下面的方法:
1.開啟about對話方塊資源,放入一個ListCtrl控制元件到對話方塊中,並將其ID設為ID_LISTCTRL.
2.Ctrl+W,把Class Name由原來的CAboutDlg改為CxxxView,在左邊的 IDS中選擇ID_LISTCTRL,這時右邊會出現相應的通知訊息,這時就可以跟平常一樣雙擊新增訊息對映了.
嘿嘿,是不是跟在對話方塊裡響應控制元件的訊息一樣很方便呀.
有一點需要注意,只有當開啟你加入控制元件的那個對話方塊資源編輯器的時候按Ctrl+W時,Class Wizard中才會出現那個ID_LISTCTRL,還有發行時注意把對話方塊上的listctrl控制元件刪掉.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992375/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 訊息處理:利用控制元件的動態派生[RunTime],為控制元件新增該控制元件未定義的訊息對映 (轉)控制元件
- OCX 控制元件主動傳送訊息給 MFC 視窗訊息控制元件
- MFC應用程式中處理訊息的順序
- 在VC中,讓動態建立的ActiveX控制元件響應Windows訊息。 (轉)控制元件Windows
- mfc中的訊息的應用 (轉)
- C#的訊息處理方法 (轉)C#
- VCL中訊息處理初探 (轉)
- 利用Delphi訊息處理建立類似Windows開始選單 (轉)Windows
- 處理鍵盤輸入訊息(轉)
- 請教mina處理訊息?需要建立訊息佇列?佇列
- MFC訊息響應機制分析 (轉)
- C++ BUILDER 訊息處理的深入探索 (轉)C++UI
- 三、訊息的可靠處理
- php ActiveMQ的傳送訊息,與處理訊息PHPMQ
- IOS 訊息推送處理iOS
- aspx頁面中動態建立控制元件 (轉)控制元件
- 深入解析MFC訊息響應和訊息路由路由
- SysListView控制元件類的訊息常量 (轉)View控制元件
- MPLS RSVP訊息處理——VecloudCloud
- Storm保證訊息處理ORM
- 靈活定義和處理SOAP頭訊息 (轉)
- 關於捕獲VCL沒有處理的Windows訊息 (轉)Windows
- oracle動態sql語句處理(轉)OracleSQL
- .net core 訊息流處理流程
- Go 語言的錯誤訊息處理Go
- 處理檔案上傳時的訊息格式轉換問題
- 處理滑鼠離開視窗的訊息 (WM_MOUSELEAVE) (轉)
- VB與VC混合程式設計中處理訊息的方法 (轉)程式設計
- Protobuf_動態訊息-反射反射
- MFC學習(四) 訊息機制
- 如何生動形象的理解Android Handler訊息處理機制Android
- 動態移動控制元件 (轉)控制元件
- 如何處理RabbitMQ 訊息堆積和訊息丟失問題MQ
- 基於MFC的大型資料檔案處理方法 (轉)
- 處理記憶體洩漏的一種MFC方法 (轉)記憶體
- Windows應用程式的訊息處理機制Windows
- Looper中的訊息佇列處理機制OOP佇列
- struts 如何能夠報處理正常的訊息