Formanty MFC ActiveX: dodawanie właściwości standardowych

Właściwości zapasów różnią się od właściwości niestandardowych, które są już implementowane przez klasę COleControl. COleControl zawiera wstępnie zdefiniowane funkcje składowe, które obsługują typowe właściwości kontrolki. Niektóre typowe właściwości obejmują podpis kontrolki oraz kolory pierwszego planu i tła. Aby uzyskać informacje o innych właściwościach zapasów, zobacz Właściwości zapasów obsługiwane przez Kreatora dodawania właściwości w dalszej części tego artykułu. Wpisy mapy wysyłania dla właściwości zapasów są zawsze poprzedzone DISP_STOCKPROP.

W tym artykule opisano sposób dodawania właściwości stock (w tym przypadku Caption) do kontrolki ActiveX przy użyciu Kreatora dodawania właściwości i wyjaśniono wynikowe modyfikacje kodu. Tematy obejmują:

Dodawanie właściwości za pomocą Kreatora dodawania właściwości w celu dodania właściwości stockowej

Dodanie właściwości zapasów wymaga mniejszej ilości kodu niż dodanie właściwości niestandardowych, ponieważ obsługa właściwości jest obsługiwana automatycznie przez element COleControl. Poniższa procedura przedstawia dodawanie właściwości stock Caption do struktury kontrolek ActiveX i może służyć do dodawania innych właściwości zapasów. Zastąp wybraną nazwę właściwości stock dla pola Caption.

Aby dodać właściwość stock Caption za pomocą Kreatora dodawania właściwości

  1. Załaduj projekt kontrolki.

  2. W widoku klasy rozwiń węzeł biblioteki kontrolki.

  3. Kliknij prawym przyciskiem myszy węzeł interfejsu kontrolki (drugi węzeł biblioteki), aby otworzyć menu skrótów.

  4. W menu skrótów kliknij pozycję Dodaj , a następnie kliknij pozycję Dodaj właściwość.

    Spowoduje to otwarcie Kreatora dodawania właściwości.

  5. W polu Nazwa właściwości kliknij pozycję Podpis.

  6. Kliknij przycisk Finish (Zakończ).

Dodawanie zmian kreatora właściwości dla właściwości standardowych

Ponieważ COleControl obsługuje właściwości zapasów, Kreator dodawania właściwości nie zmienia deklaracji klasy w żaden sposób; dodaje właściwość do mapy wysyłania. Kreator dodawania właściwości dodaje następujący wiersz do mapy wysyłania kontrolki, która znajduje się w implementacji (. Plik CPP):

DISP_STOCKPROP_CAPTION()

Następujący wiersz jest dodawany do opisu interfejsu kontrolki (. Plik IDL):

[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;

Ten wiersz przypisuje właściwość Caption określony identyfikator. Zwróć uwagę, że właściwość jest powiązana i zażąda uprawnień z bazy danych przed zmodyfikowaną wartością.

Dzięki temu właściwość Caption jest dostępna dla użytkowników kontrolki. Aby użyć wartości właściwości stock, uzyskaj dostęp do zmiennej składowej lub funkcji składowej klasy bazowej COleControl . Aby uzyskać więcej informacji na temat tych zmiennych składowych i funkcji składowych, zobacz następną sekcję Właściwości zapasów obsługiwane przez Kreatora dodawania właściwości.

Właściwości zapasów obsługiwane przez Kreatora dodawania właściwości

Klasa COleControl udostępnia dziewięć właściwości magazynowych. Właściwości, które chcesz dodać, można dodać za pomocą Kreatora dodawania właściwości.

Właściwości Wysyłanie wpisu mapy Jak uzyskać dostęp do wartości
Appearance DISP_STOCKPROP_APPEARANCE( ) Wartość dostępna jako m_sAppearance.
BackColor DISP_STOCKPROP_BACKCOLOR( ) Wartość dostępna przez wywołanie metody GetBackColor.
BorderStyle DISP_STOCKPROP_BORDERSTYLE( ) Wartość dostępna jako m_sBorderStyle.
Caption DISP_STOCKPROP_CAPTION( ) Wartość dostępna przez wywołanie metody InternalGetText.
Enabled DISP_STOCKPROP_ENABLED( ) Wartość dostępna jako m_bEnabled.
Font DISP_STOCKPROP_FONT( ) Zobacz artykuł Kontrolki ActiveX MFC: używanie czcionek do użycia.
ForeColor DISP_STOCKPROP_FORECOLOR( ) Wartość dostępna przez wywołanie metody GetForeColor.
hWnd DISP_STOCKPROP_HWND( ) Wartość dostępna jako m_hWnd.
Text DISP_STOCKPROP_TEXT( ) Wartość dostępna przez wywołanie metody InternalGetText. Ta właściwość jest taka sama jak Caption, z wyjątkiem nazwy właściwości.
ReadyState DISP_STOCKPROP_READYSTATE() Wartość dostępna jako m_lReadyState lub GetReadyState

Właściwości i powiadomienia o magazynie

Większość właściwości magazynowych ma funkcje powiadomień, które można zastąpić. Na przykład za każdym razem, gdy BackColor właściwość zostanie zmieniona, OnBackColorChanged wywoływana jest funkcja (funkcja składowa klasy kontrolnej). Domyślna implementacja (w pliku COleControl) wywołuje metodę InvalidateControl. Zastąpi tę funkcję, jeśli chcesz wykonać dodatkowe akcje w odpowiedzi na tę sytuację.

Właściwości koloru

Podczas malowania kontrolki można użyć akcji ForeColor i BackColor właściwości lub własnych niestandardowych właściwości kolorów. Aby użyć właściwości color, wywołaj funkcję składową COleControl::TranslateColor . Parametry tej funkcji to wartość właściwości color i opcjonalny uchwyt palety. Wartość zwracana jest wartością COLORREF , którą można przekazać do funkcji GDI, takich jak SetTextColor i CreateSolidBrush.

Dostęp do wartości kolorów akcji ForeColor i BackColor właściwości uzyskuje się, wywołując GetForeColor odpowiednio funkcję lub GetBackColor .

W poniższym przykładzie pokazano użycie tych dwóch właściwości kolorów podczas malowania kontrolki. Inicjuje tymczasową zmienną COLORREF i CBrush obiekt z wywołaniami metody TranslateColor: jedną przy użyciu właściwości i drugą BackColor przy użyciu ForeColor właściwości . Obiekt tymczasowy CBrush jest następnie używany do malowania prostokąta kontrolki, a kolor tekstu jest ustawiany przy użyciu ForeColor właściwości .

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);

Zobacz też

Kontrolki ActiveX MFC
Kontrolki ActiveX MFC: właściwości
Kontrolki ActiveX MFC: metody
Klasa COleControl