如同任何 CWnd 衍生類別,您可以從現有的控件類別衍生新類別來修改控件的行為。
建立衍生控件類別
從現有的控制項類別衍生類別,並選擇性地覆寫
Create
成員函式,以便提供基類Create
函式所需的參數。提供訊息處理常式成員函式和訊息映射項目,以在回應特定 Windows 訊息時修改控制項的行為。 請參閱 將訊息對應至函式。
提供新的成員函式來擴充控件的功能(選擇性)。
在對話框中使用衍生控件需要額外的工作。 對話框中控件的類型和位置通常會在對話框範本資源中指定。 如果您建立衍生控件類別,就無法在對話範本中指定它,因為資源編譯程式對衍生類別一無所知。
將衍生控制項置於對話框中
在衍生對話類別的宣告中內嵌衍生控件類別的物件。
在你的對話框類別中覆寫
OnInitDialog
成員函數,來呼叫衍生控件的SubclassDlgItem
成員函數。
SubclassDlgItem
將從對話框範本建立的控制項進行動態子類化。 當控件動態子類別化時,您可以連結至 Windows,在自己的應用程式中處理一些訊息,然後將其餘的訊息傳遞至 Windows。 如需詳細資訊,請參閱 MFC 參考中 類別CWnd
的 SubclassDlgItem 成員函式。 下列範例示範如何撰寫一個覆寫以呼叫 OnInitDialog
與 SubclassDlgItem
:
BOOL CSubDialog::OnInitDialog()
{
CDialog::OnInitDialog();
m_wndMyBtn.SubclassDlgItem(IDC_MYBTN, this);
return TRUE;
}
因為衍生控件內嵌在對話框類別中,所以會在建構對話框時加以建構,而且會在對話框終結時終結。 比較此程式代碼與依 手新增控件中的範例。