從標準控制項衍生控制項
就像任何 CWnd-衍生的類別,您可以藉由從現有控制項類別衍生出新的類別修改控制項的行為。
若要建立衍生的控制項類別
從現有控制項類別衍生您的類別,並選擇性地覆寫建立 作業,以提供必要的引數到基底類別的成員函式 建立函式。
提供訊息處理常式成員函式和訊息對應項目,來修改控制項的行為,以回應特定的 Windows 訊息。 請參閱將訊息對應至函式。
提供新的成員函式來擴充功能的控制項 (可省略)。
在對話方塊裡使用衍生的控制項需要額外的工作。 型別和控制項的對話方塊中的位置通常會指定在對話方塊樣板資源中。 如果您建立衍生的控制項類別,您不能在對話方塊範本中指定它,因為資源編譯器知道有關您的衍生類別的執行任何動作。
若要將衍生的控制項放在一個對話方塊
在嵌入物件衍生的控制項類別的衍生的對話方塊類別的宣告。
覆寫OnInitDialog成員函式,在您的對話方塊類別,以呼叫SubclassDlgItem的衍生控制項的成員函式。
SubclassDlgItem從對話方塊範本建立 「 動態子類別 」 控制項。 子控制項以動態方式類別時,您 Windows 與檔案相連,處理自己的應用程式中的某些郵件然後將其他的郵件傳遞至 Windows。 如需詳細資訊,請參閱 SubclassDlgItem 成員函式類別的CWnd在 MFC 參考手冊 》。 下列範例會示範如何撰寫的覆寫OnInitDialog呼叫SubclassDlgItem:
BOOL CSubDialog::OnInitDialog()
{
CDialog::OnInitDialog();
m_wndMyBtn.SubclassDlgItem(IDC_MYBTN, this);
return TRUE;
}
衍生的控制項內嵌於對話方塊類別,因為它建構的當建構對話方塊時,並將會終結時被終結對話方塊。 比較這個程式碼中的範例與加入的控制項間距手。