MFC ActiveX 控制項:加入內建屬性
庫存屬性與自訂屬性不同,因為它們已由 類別 COleControl
實作。 COleControl
包含支援控制項通用屬性的預先定義成員函式。 一些常見的屬性包括控制項的標題和前景和背景色彩。 如需其他股票屬性的詳細資訊,請參閱 本文稍後的新增屬性精靈 所支援的庫存屬性。 庫存屬性的分派對應專案一律會加上DISP_STOCKPROP。
本文說明如何使用 [新增屬性精靈] 將庫存屬性 (在此案例中為 Caption) 新增至 ActiveX 控制項,並說明產生的程式碼修改。 主題包括:
-
注意
Visual Basic 自訂控制項通常具有屬性,例如 Top、Left、Width、Height、Align、Tag、Name、TabIndex、TabStop 和 Parent。 不過,ActiveX 控制項容器負責實作這些控制項屬性,因此 ActiveX 控制項不應支援這些屬性。
使用 [新增屬性精靈] 新增 Stock 屬性
新增庫存屬性的程式碼比新增自訂屬性少,因為 屬性的支援是由 COleControl
自動處理。 下列程式示範如何將 stock Caption 屬性新增至 ActiveX 控制項架構,也可用來新增其他股票屬性。 將選取的股票屬性名稱取代為 Caption。
使用 [新增屬性精靈] 新增 stock Caption 屬性
載入控制項專案。
在 [類別檢視] 中,展開控制項的程式庫節點。
在控制項的介面節點 (程式庫節點的第二個節點) 上按一下滑鼠右鍵,開啟捷徑功能表。
從快捷方式功能表中,按一下 [新增 ],然後按一下 [ 新增屬性 ]。
這會開啟 [ 新增屬性精靈 ]。
在 [ 屬性名稱] 方塊中,按一下 [ 標題 ]。
按一下完成。
新增庫存屬性的屬性精靈變更
因為 COleControl
支援函式庫存屬性,所以 [新增屬性精靈] 不會以任何方式變更類別宣告;它會將屬性新增至分派對應。 [新增屬性精靈] 會將下列這一行新增至控制項的分派對應,而控制項位於 實作中 。。CPP) 檔案:
DISP_STOCKPROP_CAPTION()
下列這一行會新增至控制項的介面描述 (。IDL) 檔案:
[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;
這一行會指派特定識別碼的 Caption 屬性。 請注意,屬性是可系結的,而且會在修改值之前,向資料庫要求許可權。
這可讓控制項的使用者使用 Caption 屬性。 若要使用 stock 屬性的值,請存取基類的成員變數或成員函 COleControl
式。 如需這些成員變數和成員函式的詳細資訊,請參閱下一節新增屬性精靈支援的股票屬性。
新增屬性精靈支援的庫存屬性
類別提供九個 COleControl
股票屬性。 您可以使用 [新增屬性精靈] 來新增所需的屬性。
屬性 | 分派對應專案 | 如何存取值 |
---|---|---|
Appearance |
DISP_STOCKPROP_APPEARANCE( ) | 值可存取為 m_sAppearance 。 |
BackColor |
DISP_STOCKPROP_BACKCOLOR( ) | 呼叫 可存取 GetBackColor 的值。 |
BorderStyle |
DISP_STOCKPROP_BORDERSTYLE( ) | 值可存取為 m_sBorderStyle 。 |
Caption |
DISP_STOCKPROP_CAPTION( ) | 呼叫 可存取 InternalGetText 的值。 |
Enabled |
DISP_STOCKPROP_ENABLED( ) | 值可存取為 m_bEnabled 。 |
Font |
DISP_STOCKPROP_FONT( ) | 請參閱 MFC ActiveX 控制項:使用字型 來使用一文 。 |
ForeColor |
DISP_STOCKPROP_FORECOLOR( ) | 呼叫 可存取 GetForeColor 的值。 |
hWnd |
DISP_STOCKPROP_HWND( ) | 值可存取為 m_hWnd 。 |
Text |
DISP_STOCKPROP_TEXT( ) | 呼叫 可存取 InternalGetText 的值。 這個屬性與 Caption 相同,但屬性名稱除外。 |
ReadyState |
DISP_STOCKPROP_READYSTATE() | 可存取的值為 m_lReadyState 或 GetReadyState |
庫存屬性和通知
大部分的庫存屬性都有可覆寫的通知函式。 例如,每當 BackColor
屬性變更時, OnBackColorChanged
就會呼叫 函式(控制項類別的成員函式)。 預設實作 (在 中 COleControl
) 會呼叫 InvalidateControl
。 如果您想要採取其他動作來回應這種情況,請覆寫此函式。
色彩屬性
繪製控制項時,您可以使用股票 ForeColor
和 BackColor
屬性,或您自己的自訂色彩屬性。 若要使用色彩屬性,請呼叫 COleControl::TranslateColor 成員函式。 此函式的參數是 color 屬性的值和選擇性調色盤控點。 傳回值是一個 COLORREF 值,可以傳遞至 GDI 函式,例如 SetTextColor
和 CreateSolidBrush
。
股票 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);
另請參閱
MFC ActiveX 控制項
MFC ActiveX 控制項:屬性
MFC ActiveX 控制項:方法
COleControl 類別