MFC ActiveX 控制項:加入內建屬性
內建屬性與自訂屬性不同它們的類別 COleControl已經實作。 COleControl 包含預先定義的成員函式控制項支援通用屬性。 一些通用屬性包含控制項的標題和前景和背景色彩。 如需其他內建屬性的詳細資訊,請參閱本主題稍後的 加入屬性精靈支援的內建屬性。 文章。 內建屬性的分派對應項目由 DISP_STOCKPROP一律加上前置字元。
本文說明如何將內建屬性 (在這種情況下,標題) 加入至 ActiveX 控制項加入屬性精靈並說明產生的程式碼修改。 主題包括:
使用將加入屬性精靈的內建屬性。
加入屬性內建屬性的精靈變更
加入屬性精靈支援的內建屬性。
內建屬性和告知
色彩屬性
注意事項
Visual Basic 自訂控制項通常會有屬性,例如 Top,寬度、高度、對齊、標記、名稱、TabIndex、TabStop 和父代。ActiveX 控制項容器,然而,對實作這些控制項屬性負責同時 ActiveX 控制項不應支援這些屬性。
使用將加入屬性精靈的內建屬性。
因為支援屬性由 COleControl,自動將內建屬性來將自訂屬性需要較少的程式碼。 下列程序示範將內建標頭屬性加入至 ActiveX 控制項架構,而且也可以加入其他內建屬性。 用標題替代選擇的內建屬性名稱。
使用加入屬性精靈,將內建的標題屬性
載入控制項的專案。
在類別檢視中,展開您的控制項程式庫節點。
以滑鼠右鍵按一下控制項的 (程式庫節點的第二個節點介面節點) 開啟捷徑功能表。
從捷徑功能表中,按一下 [加入],再按一下 [加入屬性]。
這樣會開啟 加入屬性精靈。
在 Property Name 方塊中,按一下 Caption。
按一下 [完成]。
加入屬性內建屬性的精靈變更
由於 COleControl 支援內建屬性,加入屬性精靈在任何情況下都不會變更類別宣告;它將屬性加入至分派對應。 加入屬性精靈會將下列行加入至控制項的分派對應,位於實作 (.CPP) 檔案:
DISP_STOCKPROP_CAPTION()
下列程式碼行加入至控制項的介面描述 (.IDL) 檔案:
[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;
此行指派標題屬性特定 ID. 請注意屬性為可繫結,並在修改值之前要求資料庫的使用權限。
這個標頭屬性提供給控制項的使用者。 若要使用內建屬性的值,請存取 COleControl 基底類別的成員變數或成員函式。 如需這些成員變數和成員函式的詳細資訊,請參閱下一節,加入屬性精靈支援的內建屬性。
加入屬性精靈支援的內建屬性。
COleControl 類別提供九個內建屬性。 您可以將使用加入屬性精靈,您要的屬性。
屬性 |
分派對應項目 |
如何存取值。 |
---|---|---|
外觀 |
DISP_STOCKPROP_APPEARANCE () |
做為 m_sAppearance的值可存取的。 |
BackColor |
DISP_STOCKPROP_BACKCOLOR () |
值可以藉由呼叫 GetBackColor。 |
BorderStyle |
DISP_STOCKPROP_BORDERSTYLE () |
做為 m_sBorderStyle的值可存取的。 |
Caption |
DISP_STOCKPROP_CAPTION () |
值可以藉由呼叫 InternalGetText。 |
已啟用 |
DISP_STOCKPROP_ENABLED () |
做為 m_bEnabled的值可存取的。 |
Font |
DISP_STOCKPROP_FONT () |
使用方式參閱本文 MFC ActiveX 控制項:使用字型 。 |
ForeColor |
DISP_STOCKPROP_FORECOLOR () |
值可以藉由呼叫 GetForeColor。 |
hWnd |
DISP_STOCKPROP_HWND( ) |
值可以為 m_hWnd。 |
文字 |
DISP_STOCKPROP_TEXT( ) |
值可以藉由呼叫 InternalGetText。 這個屬性會與 Caption,除了屬性名稱。 |
ReadyState |
DISP_STOCKPROP_READYSTATE () |
做為 m_lReadyState 或 GetReadyState的值可供存取 |
內建屬性和告知
大部分的內建屬性具有可覆寫的告知功能。 例如,在中,當 BackColor 屬性變更時, OnBackColorChanged 函式 (控制項類別的成員函式) 呼叫。 預設實作(在COleControl中)會呼叫 InvalidateControl。 覆寫這個函式要採取其他動作以回應這個情況。
色彩屬性
則繪製控制項時,您可以使用內建 ForeColor 和 BackColor 屬性,或者您的自訂色彩屬性。 若要使用色彩屬性,請呼叫 COleControl::TranslateColor 成員函式。 這個函式參數是色彩屬性的值和選擇性調色盤控制代碼。 傳回值是可傳遞至 GDI 函式,例如 SetTextColor 和 CreateSolidBrush的 COLORREF 值。
內建 ForeColor 和 BackColor 屬性的色彩值是透過呼叫 GetForeColor 或 GetBackColor 函式存取,分別。
則繪製控制項時,下列範例將示範如何使用這兩個色彩屬性。 它使用暫存 COLORREF 變數和 CBrush 物件與呼叫 TranslateColor:使用 ForeColor 屬性和其他使用 BackColor 屬性。 暫存 CBrush 物件會用來繪製控制項的矩形,請使用 ForeColor 屬性,因此,文字色彩設定。
CBrush bkBrush(TranslateColor(GetBackColor()));
COLORREF clrFore = TranslateColor(GetForeColor());
pdc->FillRect(rcBounds, &bkBrush);
pdc->SetTextColor(clrFore);
pdc->DrawText(InternalGetText(), -1, rcBounds, DT_SINGLELINE | DT_CENTER | DT_VCENTER);