共用方式為


MFC ActiveX 控制項:加入內建屬性

庫存屬性與自訂屬性不同,因為它們已由 類別 COleControl 實作。 COleControl 包含支援控制項通用屬性的預先定義成員函式。 一些常見的屬性包括控制項的標題和前景和背景色彩。 如需其他股票屬性的詳細資訊,請參閱 本文稍後的新增屬性精靈 所支援的庫存屬性。 庫存屬性的分派對應專案一律會加上DISP_STOCKPROP。

本文說明如何使用 [新增屬性精靈] 將庫存屬性 (在此案例中為 Caption) 新增至 ActiveX 控制項,並說明產生的程式碼修改。 主題包括:

使用 [新增屬性精靈] 新增 Stock 屬性

新增庫存屬性的程式碼比新增自訂屬性少,因為 屬性的支援是由 COleControl 自動處理。 下列程式示範如何將 stock Caption 屬性新增至 ActiveX 控制項架構,也可用來新增其他股票屬性。 將選取的股票屬性名稱取代為 Caption。

使用 [新增屬性精靈] 新增 stock Caption 屬性

  1. 載入控制項專案。

  2. 在 [類別檢視] 中,展開控制項的程式庫節點。

  3. 在控制項的介面節點 (程式庫節點的第二個節點) 上按一下滑鼠右鍵,開啟捷徑功能表。

  4. 從快捷方式功能表中,按一下 [新增 ],然後按一下 [ 新增屬性 ]。

    這會開啟 [ 新增屬性精靈 ]。

  5. 在 [ 屬性名稱] 方塊中,按一下 [ 標題 ]。

  6. 按一下完成

新增庫存屬性的屬性精靈變更

因為 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_lReadyStateGetReadyState

庫存屬性和通知

大部分的庫存屬性都有可覆寫的通知函式。 例如,每當 BackColor 屬性變更時, OnBackColorChanged 就會呼叫 函式(控制項類別的成員函式)。 預設實作 (在 中 COleControl ) 會呼叫 InvalidateControl 。 如果您想要採取其他動作來回應這種情況,請覆寫此函式。

色彩屬性

繪製控制項時,您可以使用股票 ForeColorBackColor 屬性,或您自己的自訂色彩屬性。 若要使用色彩屬性,請呼叫 COleControl::TranslateColor 成員函式。 此函式的參數是 color 屬性的值和選擇性調色盤控點。 傳回值是一個 COLORREF 值,可以傳遞至 GDI 函式,例如 SetTextColorCreateSolidBrush

股票 ForeColorBackColor 屬性的色彩值是藉由分別呼叫 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 類別