MFC ActiveX 控制項: 加入內建屬性
內建屬性與不同的自訂屬性類別所實作的COleControl。 COleControl包含預先定義的成員函式支援控制項的通用屬性。 有些公用的內容包括控制項的標題以及前景和背景色彩。 如需其他內建屬性的資訊,請參閱所加入屬性精靈支援的內建屬性本文件稍後。 內建屬性的分派對應項目永遠冠 DISP_STOCKPROP。
這篇文章說明如何將內建的屬性 (在此案例中,標題) 加入至 ActiveX 控制項使用加入屬性精靈,並說明程式碼修改結果。 主題包括:
使用加入屬性精靈來加入內建屬性
加入屬性精靈針對內建屬性的變更
加入屬性精靈支援的內建屬性
內建屬性和通知
色彩屬性
注意事項 Visual Basic 的自訂控制項通常會有屬性,例如頁首、 左、 寬度、 高度、 對齊、 標記、 名稱、 定位點索引、 定位點和父代。ActiveX 控制項的容器,不過,負責實作這些控制項的屬性,因此 ActiveX 控制項應該不會支援這些屬性。
使用加入屬性精靈來加入內建屬性
新增內建屬性需要較少的程式碼,不如加入自訂屬性,因為支援的屬性都自動地處理COleControl。 下列程序會示範將內建的 [標題] 屬性加入至 ActiveX 控制架構,也可用來加入其他內建屬性。 以取代所選取的內建屬性名稱的標題。
若要新增內建的標題屬性使用加入屬性精靈
載入控制項專案。
在 [類別檢視中,展開您的控制項程式庫節點。
您的控制項 (程式庫節點的第二個節點) 的 [介面] 節點上按一下滑鼠右鍵來開啟快顯功能表。
從快速鍵功能表中,按一下 [ 新增 ,然後按一下 [ 加入屬性。
如此會開啟加入屬性精靈。
在屬性名稱 方塊中,按一下 標題。
按一下 [完成]。
加入屬性精靈針對變更內建屬性
因為COleControl支援內建屬性,加入屬性精靈不會變更以任何方式 ; 在類別宣告 它會將屬性加入至分派對應。 加入屬性精靈會將下面這一行加入至控制項,在實作中的分派對應 (。Cpp):
DISP_STOCKPROP_CAPTION()
下面這一行會加入至控制項的介面描述 (。IDL) 檔案:
[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;
這一行會指定 [標題] 屬性是特定的識別碼。 請注意屬性是可繫結,而且會從資料庫要求的權限修改值之前。
讓 [標題] 屬性至控制項的使用者。 若要使用內建屬性的值,可存取成員變數或成員函式的COleControl基底類別。 如需有關這些成員變數及成員函式的詳細資訊,請參閱下一步] 區段中,藉由加入屬性精靈支援的內建屬性。
內建支援的屬性加入屬性精靈
COleControl類別會提供九個內建屬性。 您可以新增您想要使用加入屬性精靈的內容。
屬性 |
分派對應項目 |
如何存取值 |
---|---|---|
外觀 |
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。 |
文字 |
DISP_STOCKPROP_TEXT) |
藉由呼叫可存取值InternalGetText。 此屬性等同於標題,除了做為屬性名稱。 |
ReadyState |
DISP_STOCKPROP_READYSTATE() |
M_lReadyState 是可存取的值或GetReadyState |
內建屬性及告知
大多數內建屬性具有可覆寫告知函式。 比方說,每當BackColor屬性變更時, OnBackColorChanged會呼叫函式 (控制項類別的成員函式)。 預設實作 (在COleControl) 呼叫InvalidateControl。 如果您想要採取其他動作以回應這種情況下,覆寫這個函式。
色彩屬性
您可以使用內建ForeColor和BackColor屬性,或是您自己的自訂色彩屬性,當繪製控制項。 若要使用的色彩屬性,呼叫 COleControl::TranslateColor 成員函式。 這個函式的參數是 「 顏色 」 屬性和選擇性調色盤的控制代碼的值。 傳回值是 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);