Formanty ActiveX MFC: Dodawanie właściwości zasobu
Właściwości zapasów różnią się od właściwości niestandardowe, już są one wykonywane przez klasę COleControl.COleControlzawiera funkcji wstępnie zdefiniowanych elementów członkowskich, obsługujących wspólnych właściwości formantu.Niektóre typowe właściwości zawierają kolory pierwszego planu i tła i tytuł formantu.Informacje na temat innych właściwości zasobów, zobacz Zapasów właściwości obsługiwane przez Kreatora dodawania właściwości w dalszej części tego artykułu.Wpisy mapy wysyłki dla właściwości zapasów są zawsze poprzedzone prefiksem DISP_STOCKPROP.
W tym artykule opisano sposób dodawania właściwości zapasów (w tym przypadku podpis) do formantu ActiveX za pomocą Kreatora dodawania właściwości i wyjaśnia wynikające z niego modyfikacje kodu.Tematy obejmują:
Dodawanie właściwości zapasów przy użyciu Kreatora dodawania właściwości
Dodawanie właściwości Kreatora zmiany właściwości zapasów
Właściwości zapasów obsługiwane przez Kreatora dodawania właściwości
Właściwości zapasów i powiadomienia
Właściwości kolorów
[!UWAGA]
Niestandardowe formanty Visual Basic zazwyczaj mają właściwości, takie jak u góry, po lewej stronie, szerokość, wysokość, Wyrównaj, znacznik, nazwa, TabIndex, TabStop i nadrzędnej.Pojemniki formantu ActiveX, jednak są odpowiedzialne za realizację tych właściwości formantu i formanty ActiveX nie powinny zatem obsługi tych właściwości.
Za pomocą dodać właściwości kreatora, aby dodać właściwości zasobu
Dodawanie właściwości zapasów wymaga mniejszej ilości kodu niż dodanie właściwości niestandardowych, ponieważ obsługa właściwość jest obsługiwane automatycznie przez COleControl.Poniższa procedura ilustruje dodanie zapasów właściwości Caption RAM formantu ActiveX i można również dodać inne właściwości zapasów.Podstaw nazwę wybranej właściwości zapasów podpis.
Aby dodać właściwość Caption zapasów przy użyciu Kreatora dodawania właściwości
Załadować projekt programu kontroli.
W widoku klasy rozwiń węzeł Biblioteka formantu.
Kliknij prawym przyciskiem myszy węzeł interfejsu dla formantu (drugiego węzła węzeł biblioteki), aby otworzyć menu skrótów.
W menu skrótów kliknij polecenie Dodaj i kliknij przycisk Dodaj właściwość.
Spowoduje to otwarcie Kreatora dodawania właściwości.
W Nazwa właściwości kliknij Caption.
Kliknij Zakończ.
Dodawanie właściwości Kreatora zmiany właściwości zasobu
Ponieważ COleControl obsługuje zapasów właściwości Kreatora dodawania właściwości nie powoduje zmiany deklaracji klasy w jakikolwiek sposób; Dodaje właściwość do mapy wysyłki.Kreator dodawania właściwości dodaje następujący wiersz do formantu, który znajduje się w realizacji mapy wysyłki (.Plik CPP):
DISP_STOCKPROP_CAPTION()
Aby opis interfejsu użytkownika kontroli dodaje się następujący wiersz (.Plik IDL):
[id(DISPID_CAPTION), helpstring("property Caption")] BSTR Caption;
Ten wiersz przypisuje właściwości Caption określonym identyfikatorem.Należy zauważyć, że właściwość jest, które można powiązać i będzie zażądać uprawnienia z bazy danych przed rozpoczęciem modyfikowania wartości.
Spowoduje to udostępnienie właściwości Caption użytkownikom formantu.Aby użyć wartości właściwości zapasów, dostęp zmienną lub funkcji Członkowskich COleControl klasa podstawowa.Aby uzyskać więcej informacji o tych zmiennych i funkcji elementów członkowskich Zobacz następnej sekcji zapasów właściwości obsługiwane przez Kreatora dodawania właściwości.
Podstawowy właściwości obsługiwane przez właściwość Kreatora dodawania
COleControl Klasy zapewnia dziewięciu właściwości zapasów.Można dodać właściwości, które mają za pomocą Kreatora dodawania właściwości.
Właściwość |
Wpisu mapy wysyłki |
Jak uzyskać dostęp do wartości |
---|---|---|
Wygląd |
(DISP_STOCKPROP_APPEARANCE) |
Wartości dostępne jako m_sAppearance. |
BackColor |
(DISP_STOCKPROP_BACKCOLOR) |
Wartości dostępne przez wywołanie GetBackColor. |
BorderStyle |
(DISP_STOCKPROP_BORDERSTYLE) |
Wartości dostępne jako m_sBorderStyle. |
Podpis |
(DISP_STOCKPROP_CAPTION) |
Wartości dostępne przez wywołanie InternalGetText. |
Włączone |
(DISP_STOCKPROP_ENABLED) |
Wartości dostępne jako m_bEnabled. |
Czcionka |
(DISP_STOCKPROP_FONT) |
Zobacz artykuł formantów ActiveX MFC: przy użyciu czcionki sposób użycia. |
ForeColor |
(DISP_STOCKPROP_FORECOLOR) |
Wartości dostępne przez wywołanie GetForeColor. |
hWnd |
(DISP_STOCKPROP_HWND) |
Wartości dostępne jako m_hWnd. |
Tekst |
(DISP_STOCKPROP_TEXT) |
Wartości dostępne przez wywołanie InternalGetText.Ta właściwość jest taki sam, jak Caption, z wyjątkiem dla nazwy właściwości. |
ReadyState |
DISP_STOCKPROP_READYSTATE() |
Wartości dostępne jako m_lReadyState lubGetReadyState |
Podstawowy właściwości i powiadomienia
Większość właściwości zapasów ma funkcje powiadomień, które mogą zostać zastąpione.Na przykład, gdy BackColor zmienić właściwości, OnBackColorChanged wywoływana jest funkcja (funkcja Członkowskie klasy control).Domyślna implementacja (w COleControl) wywołania InvalidateControl.Zastąpić tę funkcję, jeśli chcesz podjąć dodatkowe działania w odpowiedzi na tę sytuację.
Właściwości kolorów
Można użyć zasobu ForeColor i BackColor właściwości lub własne właściwości kolor niestandardowy, malując kontroli.Aby użyć właściwości kolorów, call COleControl::TranslateColor funkcji składowej.Parametry tej funkcji są wartość właściwości kolor i dojście opcjonalne palety.Zwracana jest wartość COLORREF wartości, który może zostać przekazany do interfejsu GDI funkcje, takie jak SetTextColor i CreateSolidBrush.
Wartości kolorów dla zasobu ForeColor i BackColor właściwości są dostępne przez wywołanie albo GetForeColor lub GetBackColor działa, odpowiednio.
Następujący przykład demonstruje użycie właściwości tych dwóch kolorów, malując formantu.Inicjuje on tymczasowy COLORREF zmiennej i CBrush obiekt z wywołania TranslateColor:, używając ForeColor właściwości i inne using BackColor właściwości.Tymczasowy CBrush obiekt jest następnie używany do malowania formantu prostokąt i kolor tekstu jest ustawiona za pomocą 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);