程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> VC++中subclassdlgitem函數的功能、用法及注意事項

VC++中subclassdlgitem函數的功能、用法及注意事項

編輯:關於VC++

subclassdlgitem

該函數用來子類化一個控件.

Subclass(子類化)是MFC中最常用的窗體技術之一。子類化完成兩個工作:一是把窗體類對象attach到一個windows窗體實體中(即把一個窗體的hwnd賦給該類)。另外就是把該類對象的消息加入到消息路由中,使得該類可以捕獲消息。

SubclassDlgItem可以把對話框中已有的控件與某個窗口對象動態連接起來,該窗口對象將接管控件的消息處理,從而使控件具有新的特性.SubclassDlgItem函數的聲明為

BOOL SubclassDlgItem( UINT nID, CWnd* pParent );

參數nID是控件的ID,pParent是指向父窗口的指針.若連接成功則函數返回TRUE,否則返回FALSE.

綜上所述,要在程序中使用派生控件,應該按下面兩步進行:

在對話框模板中放置好基類控件.

在對話框類中嵌入派生控件類的對象.

在OnInitDialog中調用SubclassDlgItem將派生類的控件對象與對話框中的基類控件相連接,則這個基類控件變成了派生控件

要在程序中創建新設計的控件,顯然不能用自動創建的辦法,因為對話框模板對新控件的特性一無所知.程序可以用手工方法創建控件,在調用派生類的Create函數時,派生類會調用基類的Create函數創建控件.用Create函數創建控件是一件比較麻煩的工作,程序需要為函數指定一大堆的控件風格以及控件的坐標和ID.特別是控件的坐標,沒有經驗的程序員很難確切地安排控件的位置和大小,往往需要反復調整.利用MFC的CWnd::SubclassDlgItem提供的動態連接功能,可以避免Create函數的許多麻煩,該函數大大簡化了在對話框中創建派生控件的過程.

大家知道,在用手工方法創建控件時,先要構建一個控件對象,然後再用Create函數在屏幕上創建控件窗口,也就是說,控件的創建工作是由控件對象完成的.動態連接的思路則不同,SubclassDlgItem可以把對話框中已有的控件與某個窗口對象動態連接起來,該窗口對象將接管控件的消息處理,從而使控件具有新的特性.SubclassDlgItem函數的聲明為

BOOL SubclassDlgItem( UINT nID, CWnd* pParent ); 

參數nID是控件的ID,pParent是指向父窗口的指針.若連接成功則函數返回TRUE,否則返回FALSE.

綜上所述,要在程序中使用派生控件,應該按下面兩步進行:

在對話框模板中放置好基類控件.

在對話框類中嵌入派生控件類的對象.

否則函數將會執行失敗,一定要注意!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved