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
Dodawanie zmian Kreatora właściwości dla właściwości zapasów
Właściwości zapasów obsługiwane przez Kreatora dodawania właściwości
-
Uwaga
Kontrolki niestandardowe języka Visual Basic zwykle mają właściwości, takie jak Górna, Lewa, Szerokość, Wysokość, Wyrównanie, Tag, Nazwa, TabIndex, TabStop i Element nadrzędny. Kontenery kontrolek ActiveX są jednak odpowiedzialne za zaimplementowanie tych właściwości kontrolki i dlatego kontrolki ActiveX nie powinny obsługiwać tych właściwości.
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
Załaduj projekt kontrolki.
W widoku klasy rozwiń węzeł biblioteki kontrolki.
Kliknij prawym przyciskiem myszy węzeł interfejsu kontrolki (drugi węzeł biblioteki), aby otworzyć menu skrótów.
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.
W polu Nazwa właściwości kliknij pozycję Podpis.
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
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla