Klasa CButton
Udostępnia funkcje kontrolek przycisków systemu Windows.
Składnia
class CButton : public CWnd
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CButton::CButton | CButton Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CButton::Create | Tworzy kontrolkę przycisku systemu Windows i dołącza ją do CButton obiektu. |
CButton::D rawItem | Zastąp rysowanie obiektu rysowanego CButton przez właściciela. |
CButton::GetBitmap | Pobiera uchwyt mapy bitowej ustawionej wcześniej za pomocą polecenia SetBitmap. |
CButton::GetButtonStyle | Pobiera informacje o stylu kontrolki przycisku. |
CButton::GetCheck | Pobiera stan sprawdzania kontrolki przycisku. |
CButton::GetCursor | Pobiera uchwyt obrazu kursora ustawionego wcześniej za pomocą polecenia SetCursor. |
CButton::GetIcon | Pobiera uchwyt ikony ustawionej wcześniej za pomocą polecenia SetIcon. |
CButton::GetIdealSize | Pobiera idealny rozmiar kontrolki przycisku. |
CButton::GetImageList | Pobiera listę obrazów kontrolki przycisku. |
CButton::GetNote | Pobiera składnik notatek bieżącej kontrolki linku polecenia. |
CButton::GetNoteLength | Pobiera długość tekstu notatki dla bieżącej kontrolki linku polecenia. |
CButton::GetSplitGlyph | Pobiera glif skojarzony z bieżącą kontrolką przycisku podziału. |
CButton::GetSplitImageList | Pobiera listę obrazów dla bieżącej kontrolki przycisku podziału. |
CButton::GetSplitInfo | Pobiera informacje, które definiują bieżącą kontrolkę przycisku podziału. |
CButton::GetSplitSize | Pobiera prostokąt ograniczenia składnika listy rozwijanej bieżącego formantu przycisku podziału. |
CButton::GetSplitStyle | Pobiera style przycisku podziału, które definiują bieżącą kontrolkę przycisku podziału. |
CButton::GetState | Pobiera stan sprawdzania, wyróżnianie stanu i stan koncentracji uwagi kontrolki przycisku. |
CButton::GetTextMargin | Pobiera margines tekstu kontrolki przycisku. |
CButton::SetBitmap | Określa mapę bitową, która ma być wyświetlana na przycisku. |
CButton::SetButtonStyle | Zmienia styl przycisku. |
CButton::SetCheck | Ustawia stan sprawdzania kontrolki przycisku. |
CButton::SetCursor | Określa obraz kursora, który ma być wyświetlany na przycisku. |
CButton::SetDropDownState | Ustawia stan listy rozwijanej bieżącego formantu przycisku podziału. |
CButton::SetIcon | Określa ikonę, która ma być wyświetlana na przycisku. |
CButton::SetImageList | Ustawia listę obrazów kontrolki przycisku. |
CButton::SetNote | Ustawia notatkę w bieżącej kontrolce linku polecenia. |
CButton::SetSplitGlyph | Kojarzy określony glif z bieżącą kontrolką przycisku podziału. |
CButton::SetSplitImageList | Kojarzy listę obrazów z bieżącą kontrolką przycisku podziału. |
CButton::SetSplitInfo | Określa informacje definiujące bieżącą kontrolkę przycisku podziału. |
CButton::SetSplitSize | Ustawia prostokąt ograniczenia składnika listy rozwijanej bieżącego formantu przycisku podziału. |
CButton::SetSplitStyle | Ustawia styl bieżącej kontrolki przycisku podziału. |
CButton::SetState | Ustawia stan wyróżniania kontrolki przycisku. |
CButton::SetTextMargin | Ustawia margines tekstu kontrolki przycisku. |
Uwagi
Kontrolka przycisku to małe, prostokątne okno podrzędne, które można kliknąć i wyłączyć. Przyciski mogą być używane samodzielnie lub w grupach i mogą być oznaczone lub wyświetlane bez tekstu. Przycisk zwykle zmienia wygląd po kliknięciu go przez użytkownika.
Typowe przyciski to pole wyboru, przycisk radiowy i naciśnięcie przycisku. Obiekt CButton
może stać się dowolnym z nich, zgodnie ze stylem przycisku określonym podczas inicjowania przez funkcję Utwórz składową.
Ponadto klasa CBitmapButton pochodząca z CButton
klasy obsługuje tworzenie kontrolek przycisków oznaczonych obrazami map bitowych zamiast tekstu. Obiekt CBitmapButton
może mieć oddzielne mapy bitowe dla stanów przycisku w górę, w dół, fokusu i wyłączonych.
Możesz utworzyć kontrolkę przycisku na podstawie szablonu okna dialogowego lub bezpośrednio w kodzie. W obu przypadkach najpierw wywołaj konstruktor CButton
, aby skonstruować CButton
obiekt, a następnie wywołaj Create
funkcję składową, aby utworzyć kontrolkę przycisku systemu Windows i dołączyć ją do CButton
obiektu.
Konstrukcja może być procesem jednoetapowym w klasie pochodzącej z CButton
klasy . Napisz konstruktor dla klasy pochodnej i wywołaj Create
metodę z wewnątrz konstruktora.
Jeśli chcesz obsługiwać komunikaty powiadomień systemu Windows wysyłane przez kontrolkę przycisku do elementu nadrzędnego (zazwyczaj klasa pochodząca z listy CDialog), dodaj funkcję elementu członkowskiego mapy komunikatów i składową programu obsługi komunikatów do klasy nadrzędnej dla każdego komunikatu.
Każdy wpis mapy komunikatów ma następujący formularz:
ON_Notification ( id, memberFxn )
gdzie identyfikator określa identyfikator okna podrzędnego kontrolki wysyłającej powiadomienie i memberFxn jest nazwą nadrzędnej funkcji składowej zapisanej w celu obsługi powiadomienia.
Prototyp funkcji elementu nadrzędnego jest następujący:
afx_msg void memberFxn();
Potencjalne wpisy mapy komunikatów są następujące:
Wpis mapy | Wysłane do elementu nadrzędnego, gdy... |
---|---|
ON_BN_CLICKED | Użytkownik klika przycisk. |
ON_BN_DOUBLECLICKED | Użytkownik dwukrotnie klika przycisk. |
Jeśli utworzysz CButton
obiekt na podstawie zasobu okna dialogowego, CButton
obiekt zostanie automatycznie zniszczony, gdy użytkownik zamknie okno dialogowe.
Jeśli utworzysz CButton
obiekt w oknie, może być konieczne jego zniszczenie. Jeśli utworzysz CButton
obiekt na stercie przy użyciu new
funkcji, musisz wywołać delete
obiekt, aby go zniszczyć, gdy użytkownik zamknie kontrolkę przycisku systemu Windows. Jeśli utworzysz CButton
obiekt na stosie lub zostanie on osadzony w obiekcie okna dialogowego nadrzędnego, zostanie on zniszczony automatycznie.
Hierarchia dziedziczenia
CButton
Wymagania
Nagłówek: afxwin.h
CButton::CButton
CButton
Tworzy obiekt.
CButton();
Przykład
// Declare a button object.
CButton myButton;
CButton::Create
Tworzy kontrolkę przycisku systemu Windows i dołącza ją do CButton
obiektu.
virtual BOOL Create(
LPCTSTR lpszCaption,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parametry
lpszCaption
Określa tekst kontrolki przycisku.
dwStyle
Określa styl kontrolki przycisku. Zastosuj dowolną kombinację stylów przycisków do przycisku.
Rect
Określa rozmiar i położenie kontrolki przycisku. Może to być CRect
obiekt lub RECT
struktura.
pParentWnd
Określa okno nadrzędne kontrolki przycisku, zwykle CDialog
. Nie może mieć wartości NULL.
Nid
Określa identyfikator kontrolki przycisku.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Obiekt jest konstruowany CButton
w dwóch krokach. Najpierw wywołaj konstruktor, a następnie wywołaj Create
metodę , która tworzy kontrolkę przycisku systemu Windows i dołącza ją do CButton
obiektu.
Jeśli zostanie podany styl WS_VISIBLE, system Windows wysyła kontrolkę przycisku wszystkie komunikaty wymagane do aktywowania i wyświetlania przycisku.
Zastosuj następujące style okna do kontrolki przycisku:
zawsze WS_CHILD
WS_VISIBLE zwykle
WS_DISABLED rzadko
kontrolki WS_GROUP do grupy
WS_TABSTOP Aby dołączyć przycisk do kolejności tabulacji
Przykład
CButton myButton1, myButton2, myButton3, myButton4;
// Create a push button.
myButton1.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CRect(10, 10, 100, 30), pParentWnd, 1);
// Create a radio button.
myButton2.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON,
CRect(10, 40, 100, 70), pParentWnd, 2);
// Create an auto 3-state button.
myButton3.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,
CRect(10, 70, 100, 100), pParentWnd, 3);
// Create an auto check box.
myButton4.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX,
CRect(10, 100, 100, 130), pParentWnd, 4);
CButton::D rawItem
Wywoływana przez platformę, gdy zmieni się wizualny aspekt przycisku rysowanego przez właściciela.
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
Parametry
lpDrawItem, struktura
Długi wskaźnik do struktury DRAWITEMSTRUCT . Struktura zawiera informacje o elemencie, który ma zostać narysowany, oraz wymagany typ rysunku.
Uwagi
Przycisk narysowany przez właściciela ma zestaw stylów BS_OWNERDRAW. Zastąp tę funkcję składową, aby zaimplementować rysunek dla obiektu rysowanego CButton
przez właściciela. Aplikacja powinna przywrócić wszystkie obiekty interfejsu urządzenia graficznego (GDI) wybrane dla kontekstu wyświetlania podanego w lpDrawItemStruct przed zakończeniem funkcji składowej.
Zobacz również wartości stylu BS_ .
Przykład
// NOTE: CMyButton is a class derived from CButton. The CMyButton
// object was created as follows:
//
// CMyButton myButton;
// myButton.Create(_T("My button"),
// WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_OWNERDRAW,
// CRect(10,10,100,30), pParentWnd, 1);
//
// This example implements the DrawItem method for a CButton-derived
// class that draws the button's text using the color red.
void CMyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
UINT uStyle = DFCS_BUTTONPUSH;
// This code only works with buttons.
ASSERT(lpDrawItemStruct->CtlType == ODT_BUTTON);
// If drawing selected, add the pushed style to DrawFrameControl.
if (lpDrawItemStruct->itemState & ODS_SELECTED)
uStyle |= DFCS_PUSHED;
// Draw the button frame.
::DrawFrameControl(lpDrawItemStruct->hDC, &lpDrawItemStruct->rcItem,
DFC_BUTTON, uStyle);
// Get the button's text.
CString strText;
GetWindowText(strText);
// Draw the button text using the text color red.
COLORREF crOldColor = ::SetTextColor(lpDrawItemStruct->hDC, RGB(255, 0, 0));
::DrawText(lpDrawItemStruct->hDC, strText, strText.GetLength(),
&lpDrawItemStruct->rcItem, DT_SINGLELINE | DT_VCENTER | DT_CENTER);
::SetTextColor(lpDrawItemStruct->hDC, crOldColor);
}
CButton::GetBitmap
Wywołaj tę funkcję składową, aby uzyskać dojście do mapy bitowej ustawionej wcześniej za pomocą kontrolki SetBitmap, która jest skojarzona z przyciskiem.
HBITMAP GetBitmap() const;
Wartość zwracana
Uchwyt do mapy bitowej. Wartość NULL, jeśli nie określono wcześniej mapy bitowej.
Przykład
CButton myBitmapButton;
// Create a bitmap button.
myBitmapButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_BITMAP,
CRect(10, 10, 60, 50), pParentWnd, 1);
// If no bitmap is defined for the button, define the bitmap to the
// system close bitmap.
if (myBitmapButton.GetBitmap() == NULL)
myBitmapButton.SetBitmap(::LoadBitmap(NULL, MAKEINTRESOURCE(OBM_CLOSE)));
CButton::GetButtonStyle
Pobiera informacje o stylu kontrolki przycisku.
UINT GetButtonStyle() const;
Wartość zwracana
Zwraca style przycisku dla tego CButton
obiektu. Ta funkcja zwraca tylko wartości stylu BS_ , a nie żadne z innych stylów okna.
Przykład
CButton myRadioButton;
// Create a radio button.
myRadioButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON,
CRect(10, 10, 100, 30), pParentWnd, 1);
// Change the button style to use one of the "auto" styles; for
// push button, change to def push button.
UINT uStyle = myRadioButton.GetButtonStyle();
if (uStyle == BS_PUSHBUTTON)
uStyle = BS_DEFPUSHBUTTON;
else if (uStyle == BS_RADIOBUTTON)
uStyle = BS_AUTORADIOBUTTON;
else if (uStyle == BS_CHECKBOX)
uStyle = BS_AUTOCHECKBOX;
else if (uStyle == BS_3STATE)
uStyle = BS_AUTO3STATE;
// Change the button style to the one wanted.
myRadioButton.SetButtonStyle(uStyle);
CButton::GetCheck
Pobiera stan sprawdzania przycisku radiowego lub pola wyboru.
int GetCheck() const;
Wartość zwracana
Wartość zwracana z kontrolki przycisku utworzonej za pomocą BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON, BS_AUTO3STATE, BS_CHECKBOX, BS_RADIOBUTTON lub stylu BS_3STATE jest jedną z następujących wartości:
Wartość | Znaczenie |
---|---|
BST_UNCHECKED | Stan przycisku jest niezaznaczone. |
BST_CHECKED | Stan przycisku jest zaznaczony. |
BST_INDETERMINATE | Stan przycisku jest nieokreślony (ma zastosowanie tylko wtedy, gdy przycisk ma styl BS_3STATE lub BS_AUTO3STATE). |
Jeśli przycisk ma inny styl, zwracana wartość jest BST_UNCHECKED.
Przykład
CButton myA3Button;
// Create an auto 3-state button.
myA3Button.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,
CRect(10, 10, 100, 30), pParentWnd, 1);
// Set the check state to the next state
// (i.e. BST_UNCHECKED changes to BST_CHECKED
// BST_CHECKED changes to BST_INDETERMINATE
// BST_INDETERMINATE changes to BST_UNCHECKED).
myA3Button.SetCheck(((myA3Button.GetCheck() + 1) % 3));
CButton::GetCursor
Wywołaj tę funkcję składową, aby uzyskać uchwyt kursora, który został wcześniej ustawiony za pomocą polecenia SetCursor, który jest skojarzony z przyciskiem.
HCURSOR GetCursor();
Wartość zwracana
Uchwyt do obrazu kursora. Wartość NULL, jeśli nie określono wcześniej kursora.
Przykład
CButton myIconButton;
// Create an icon button.
myIconButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
CRect(10, 10, 60, 50), pParentWnd, 1);
// If no image is defined for the button, define the image to the
// system arrow and question mark cursor.
if (myIconButton.GetCursor() == NULL)
myIconButton.SetCursor(::LoadCursor(NULL, IDC_HELP));
CButton::GetIcon
Wywołaj tę funkcję składową, aby uzyskać dojście do ikony, wcześniej ustawionej za pomocą polecenia SetIcon, która jest skojarzona z przyciskiem.
HICON GetIcon() const;
Wartość zwracana
Uchwyt do ikony. Wartość NULL, jeśli nie określono wcześniej żadnej ikony.
Przykład
CButton myIconButton2;
// Create an icon button.
myIconButton2.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
CRect(10, 10, 60, 50), pParentWnd, 1);
// If no icon is defined for the button, define the icon to the
// system error icon.
if (myIconButton2.GetIcon() == NULL)
myIconButton2.SetIcon(::LoadIcon(NULL, IDI_ERROR));
CButton::GetIdealSize
Pobiera idealny rozmiar kontrolki przycisku.
BOOL GetIdealSize(SIZE* psize);
Parametry
rozmiar psize
Wskaźnik do bieżącego rozmiaru przycisku.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Ta funkcja składowa emuluje funkcjonalność komunikatu BCM_GETIDEALSIZE zgodnie z opisem w sekcji Przyciski zestawu Windows SDK.
CButton::GetImageList
Wywołaj tę metodę, aby pobrać listę obrazów z kontrolki przycisku.
BOOL GetImageList(PBUTTON_IMAGELIST pbuttonImagelist);
Parametry
pbuttonImagelist
Wskaźnik do listy obrazów CButton
obiektu.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Ta funkcja składowa emuluje funkcjonalność komunikatu BCM_GETIMAGELIST zgodnie z opisem w sekcji Przyciski zestawu Windows SDK.
CButton::GetNote
Pobiera tekst notatki skojarzony z bieżącą kontrolką linku polecenia.
CString GetNote() const;
BOOL GetNote(
LPTSTR lpszNote,
UINT* cchNote) const;
Parametry
lpszNote
[out] Wskaźnik do buforu, który obiekt wywołujący jest odpowiedzialny za przydzielanie i cofanie przydziału. Jeśli zwracana wartość ma wartość TRUE, bufor zawiera tekst notatki skojarzony z bieżącą kontrolką linku polecenia; w przeciwnym razie bufor jest niezmieniony.
cchNote
[in, out] Wskaźnik do niepodpisanej zmiennej całkowitej. Po wywołaniu tej metody zmienna zawiera rozmiar buforu określonego przez parametr lpszNote . Jeśli ta metoda zwraca wartość TRUE, zmienna zawiera rozmiar notatki skojarzonej z bieżącą kontrolką łącza polecenia. Jeśli zwracana wartość to FALSE, zmienna zawiera rozmiar buforu wymagany do przechowywania notatki.
Wartość zwracana
W pierwszym przeciążeniu obiekt CString zawierający tekst notatki skojarzony z bieżącą kontrolką łącza polecenia.
— lub —
W drugim przeciążeniu wartość TRUE, jeśli ta metoda zakończy się pomyślnie; w przeciwnym razie, FAŁSZ.
Uwagi
Tej metody należy używać tylko z kontrolkami, których styl przycisku jest BS_COMMANDLINK lub BS_DEFCOMMANDLINK.
Ta metoda wysyła komunikat BCM_GETNOTE opisany w zestawie Windows SDK.
CButton::GetNoteLength
Pobiera długość tekstu notatki dla bieżącej kontrolki linku polecenia.
UINT GetNoteLength() const;
Wartość zwracana
Długość tekstu notatki w 16-bitowych znakach Unicode dla bieżącej kontrolki linku polecenia.
Uwagi
Tej metody należy używać tylko z kontrolkami, których styl przycisku jest BS_COMMANDLINK lub BS_DEFCOMMANDLINK.
Ta metoda wysyła komunikat BCM_GETNOTELENGTH opisany w zestawie Windows SDK.
CButton::GetSplitGlyph
Pobiera glif skojarzony z bieżącą kontrolką przycisku podziału.
TCHAR GetSplitGlyph() const;
Wartość zwracana
Znak glif skojarzony z bieżącą kontrolką przycisku podziału.
Uwagi
Glif to fizyczna reprezentacja znaku w określonej czcionki. Na przykład kontrolka przycisku podziału może być ozdobiona symbolem znacznika wyboru Unicode (U+2713).
Tej metody należy używać tylko z kontrolkami, których styl przycisku jest BS_SPLITBUTTON lub BS_DEFSPLITBUTTON.
Ta metoda inicjuje mask
element członkowski struktury BUTTON_SPLITINFO z flagą BCSIF_GLYPH , a następnie wysyła tę strukturę w komunikacie BCM_GETSPLITINFO opisanym w zestawie SDK systemu Windows. Gdy funkcja message zwraca, ta metoda pobiera glyph z himlGlyph
elementu członkowskiego struktury.
CButton::GetSplitImageList
Pobiera listę obrazów dla bieżącej kontrolki przycisku podziału.
CImageList* GetSplitImageList() const;
Wartość zwracana
Wskaźnik do obiektu CImageList .
Uwagi
Tej metody należy używać tylko z kontrolkami, których styl przycisku jest BS_SPLITBUTTON lub BS_DEFSPLITBUTTON.
Ta metoda inicjuje mask
element członkowski struktury BUTTON_SPLITINFO z flagą BCSIF_IMAGE, a następnie wysyła tę strukturę w komunikacie BCM_GETSPLITINFO opisanym w zestawie SDK systemu Windows. Gdy funkcja message zwraca, ta metoda pobiera listę obrazów z himlGlyph
elementu członkowskiego struktury.
CButton::GetSplitInfo
Pobiera parametry określające sposób, w jaki system Windows rysuje bieżącą kontrolkę przycisku podziału.
BOOL GetSplitInfo(PBUTTON_SPLITINFO pInfo) const;
Parametry
pInfo
[out] Wskaźnik do struktury BUTTON_SPLITINFO , która odbiera informacje o bieżącym kontrolce przycisku podziału. Obiekt wywołujący jest odpowiedzialny za przydzielanie struktury.
Wartość zwracana
Wartość TRUE, jeśli ta metoda zakończyła się pomyślnie; w przeciwnym razie, FAŁSZ.
Uwagi
Tej metody należy używać tylko z kontrolkami, których styl przycisku jest BS_SPLITBUTTON lub BS_DEFSPLITBUTTON.
Ta metoda wysyła komunikat BCM_GETSPLITINFO opisany w zestawie Windows SDK.
CButton::GetSplitSize
Pobiera prostokąt ograniczenia składnika listy rozwijanej bieżącego formantu przycisku podziału.
BOOL GetSplitSize(LPSIZE pSize) const;
Parametry
Rozmiar p
[out] Wskaźnik do struktury SIZE , która otrzymuje opis prostokąta.
Wartość zwracana
Wartość TRUE, jeśli ta metoda zakończyła się pomyślnie; w przeciwnym razie, FAŁSZ.
Uwagi
Tej metody należy używać tylko z kontrolkami, których styl przycisku jest BS_SPLITBUTTON lub BS_DEFSPLITBUTTON.
Po rozwinięciu kontrolki przycisku podziału można wyświetlić składnik listy rozwijanej, taki jak kontrolka listy lub kontrolka pagera. Ta metoda pobiera prostokąt ograniczenia zawierający składnik listy rozwijanej.
Ta metoda inicjuje mask
element członkowski struktury BUTTON_SPLITINFO z flagą BCSIF_SIZE , a następnie wysyła tę strukturę w komunikacie BCM_GETSPLITINFO opisanym w zestawie SDK systemu Windows. Gdy funkcja message zwraca, ta metoda pobiera prostokąt ograniczenia z size
elementu członkowskiego struktury.
CButton::GetSplitStyle
Pobiera style przycisku podziału, które definiują bieżącą kontrolkę przycisku podziału.
UINT GetSplitStyle() const;
Wartość zwracana
Bitowa kombinacja stylów przycisku podziału. Aby uzyskać więcej informacji, zobacz uSplitStyle
element członkowski struktury BUTTON_SPLITINFO .
Uwagi
Tej metody należy używać tylko z kontrolkami, których styl przycisku jest BS_SPLITBUTTON lub BS_DEFSPLITBUTTON.
Style przycisku podziału określają wyrównanie, współczynnik proporcji i format graficzny, za pomocą którego system Windows rysuje ikonę przycisku podziału.
Ta metoda inicjuje mask
element członkowski struktury BUTTON_SPLITINFO z flagą BCSIF_STYLE, a następnie wysyła tę strukturę w komunikacie BCM_GETSPLITINFO opisanym w zestawie WINDOWS SDK. Po powrocie funkcji komunikatu ta metoda pobiera style przycisku podziału z uSplitStyle
elementu członkowskiego struktury.
CButton::GetState
Pobiera stan kontrolki przycisku.
UINT GetState() const;
Wartość zwracana
Pole bitowe zawierające kombinację wartości wskazujących bieżący stan kontrolki przycisku. W poniższej tabeli wymieniono możliwe wartości.
Stan przycisku | Wartość | Opis |
---|---|---|
BST_UNCHECKED | 0x0000 | Stan początkowy. |
BST_CHECKED | 0x0001 | Kontrolka przycisku jest zaznaczona. |
BST_INDETERMINATE | 0x0002 | Stan jest nieokreślony (możliwe tylko wtedy, gdy kontrolka przycisku ma trzy stany). |
BST_PUSHED | 0x0004 | Naciśnięcie kontrolki przycisku. |
BST_FOCUS | 0x0008 | Kontrolka przycisku ma fokus. |
Uwagi
Kontrolka przycisku z stylem przycisku BS_3STATE lub BS_AUTO3STATE tworzy pole wyboru, które ma trzeci stan o nazwie nieokreślony stan. Nieokreślony stan wskazuje, że pole wyboru nie jest ani zaznaczone, ani niezaznaczone.
Przykład
CButton myPushButton;
// Create a push button.
myPushButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CRect(10, 10, 100, 30), pParentWnd, 1);
// Invert the highlight state of the button.
myPushButton.SetState(!(myPushButton.GetState() & 0x0004));
CButton::GetTextMargin
Wywołaj tę metodę, aby uzyskać margines CButton
tekstu obiektu.
BOOL GetTextMargin(RECT* pmargin);
Parametry
pmargin
Wskaźnik do marginesu CButton
tekstu obiektu.
Wartość zwracana
Zwraca margines tekstu. Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Ta funkcja składowa emuluje funkcjonalność komunikatu BCM_GETTEXTMARGIN zgodnie z opisem w sekcji Przyciski zestawu Windows SDK.
CButton::SetBitmap
Wywołaj tę funkcję składową, aby skojarzyć nową mapę bitową z przyciskiem .
HBITMAP SetBitmap(HBITMAP hBitmap);
Parametry
hBitmap
Uchwyt mapy bitowej.
Wartość zwracana
Uchwyt mapy bitowej wcześniej skojarzony z przyciskiem .
Uwagi
Mapa bitowa zostanie automatycznie umieszczona na twarzy przycisku, domyślnie wyśrodkowanego. Jeśli mapa bitowa jest za duża dla przycisku, zostanie obcięta po obu stronach. Możesz wybrać inne opcje wyrównania, w tym następujące:
BS_TOP
BS_LEFT
BS_RIGHT
BS_CENTER
BS_BOTTOM
BS_VCENTER
W przeciwieństwie do CBitmapButton, który używa czterech map bitowych na przycisk, SetBitmap
używa tylko jednej mapy bitowej na przycisk. Po naciśnięciu przycisku mapa bitowa wydaje się przesuwać w dół i w prawo.
Użytkownik jest odpowiedzialny za zwolnienie mapy bitowej po zakończeniu pracy z nią.
Przykład
CButton myBitmapButton;
// Create a bitmap button.
myBitmapButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_BITMAP,
CRect(10, 10, 60, 50), pParentWnd, 1);
// If no bitmap is defined for the button, define the bitmap to the
// system close bitmap.
if (myBitmapButton.GetBitmap() == NULL)
myBitmapButton.SetBitmap(::LoadBitmap(NULL, MAKEINTRESOURCE(OBM_CLOSE)));
CButton::SetButtonStyle
Zmienia styl przycisku.
void SetButtonStyle(
UINT nStyle,
BOOL bRedraw = TRUE);
Parametry
nStyle
Określa styl przycisku.
bRedraw
Określa, czy przycisk ma być ponownie rysowane. Wartość niezerowa ponownie rysuje przycisk. Wartość 0 nie rysuje ponownie przycisku. Przycisk jest domyślnie ponownie rysowany.
Uwagi
Użyj funkcji składowej GetButtonStyle
, aby pobrać styl przycisku. Krótki wyraz stylu kompletnego przycisku jest stylem specyficznym dla przycisku.
Przykład
CButton myRadioButton;
// Create a radio button.
myRadioButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON,
CRect(10, 10, 100, 30), pParentWnd, 1);
// Change the button style to use one of the "auto" styles; for
// push button, change to def push button.
UINT uStyle = myRadioButton.GetButtonStyle();
if (uStyle == BS_PUSHBUTTON)
uStyle = BS_DEFPUSHBUTTON;
else if (uStyle == BS_RADIOBUTTON)
uStyle = BS_AUTORADIOBUTTON;
else if (uStyle == BS_CHECKBOX)
uStyle = BS_AUTOCHECKBOX;
else if (uStyle == BS_3STATE)
uStyle = BS_AUTO3STATE;
// Change the button style to the one wanted.
myRadioButton.SetButtonStyle(uStyle);
CButton::SetCheck
Ustawia lub resetuje stan sprawdzania przycisku radiowego lub pola wyboru.
void SetCheck(int nCheck);
Parametry
nZnacz
Określa stan sprawdzania. Ten parametr może być jednym z następujących parametrów:
Wartość | Znaczenie |
---|---|
BST_UNCHECKED | Ustaw stan przycisku na niezaznaczone. |
BST_CHECKED | Ustaw stan przycisku na zaznaczony. |
BST_INDETERMINATE | Ustaw stan przycisku na nieokreślony. Tej wartości można użyć tylko wtedy, gdy przycisk ma styl BS_3STATE lub BS_AUTO3STATE. |
Uwagi
Ta funkcja składowa nie ma wpływu na naciśnięcie.
Przykład
CButton myA3Button;
// Create an auto 3-state button.
myA3Button.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,
CRect(10, 10, 100, 30), pParentWnd, 1);
// Set the check state to the next state
// (i.e. BST_UNCHECKED changes to BST_CHECKED
// BST_CHECKED changes to BST_INDETERMINATE
// BST_INDETERMINATE changes to BST_UNCHECKED).
myA3Button.SetCheck(((myA3Button.GetCheck() + 1) % 3));
CButton::SetCursor
Wywołaj tę funkcję składową, aby skojarzyć nowy kursor z przyciskiem .
HCURSOR SetCursor(HCURSOR hCursor);
Parametry
hCursor
Uchwyt kursora.
Wartość zwracana
Uchwyt kursora wcześniej skojarzony z przyciskiem .
Uwagi
Kursor zostanie automatycznie umieszczony na twarzy przycisku, domyślnie wyśrodkowany. Jeśli kursor jest za duży dla przycisku, zostanie obcięty po obu stronach. Możesz wybrać inne opcje wyrównania, w tym następujące:
BS_TOP
BS_LEFT
BS_RIGHT
BS_CENTER
BS_BOTTOM
BS_VCENTER
W przeciwieństwie do CBitmapButton, który używa czterech map bitowych na przycisk, SetCursor
używa tylko jednego kursora na przycisk. Po naciśnięciu przycisku kursor zostanie przesunięty w dół i w prawo.
Przykład
CButton myIconButton;
// Create an icon button.
myIconButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
CRect(10, 10, 60, 50), pParentWnd, 1);
// If no image is defined for the button, define the image to the
// system arrow and question mark cursor.
if (myIconButton.GetCursor() == NULL)
myIconButton.SetCursor(::LoadCursor(NULL, IDC_HELP));
CButton::SetDropDownState
Ustawia stan listy rozwijanej bieżącego formantu przycisku podziału.
BOOL SetDropDownState(BOOL fDropDown);
Parametry
fDropDown
[in] WARTOŚĆ TRUE, aby ustawić stan BST_DROPDOWNPUSHED; w przeciwnym razie, FAŁSZ.
Wartość zwracana
Wartość TRUE, jeśli ta metoda zakończyła się pomyślnie; w przeciwnym razie, FAŁSZ.
Uwagi
Kontrolka przycisku podziału ma styl BS_SPLITBUTTON lub BS_DEFSPLITBUTTON i składa się z przycisku i strzałki listy rozwijanej w prawo. Aby uzyskać więcej informacji, zobacz Style przycisków. Zazwyczaj stan listy rozwijanej jest ustawiany, gdy użytkownik kliknie strzałkę listy rozwijanej. Użyj tej metody, aby programowo ustawić stan listy rozwijanej kontrolki. Strzałka listy rozwijanej jest rysowana w celu wskazania stanu.
Ta metoda wysyła komunikat BCM_SETDROPDOWNSTATE opisany w zestawie Windows SDK.
Przykład
Pierwszy przykład kodu definiuje zmienną , m_splitButton
która jest używana do programowego uzyskiwania dostępu do kontrolki przycisku podziału. Ta zmienna jest używana w poniższym przykładzie.
public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;
Następny przykład kodu ustawia stan kontrolki przycisku podziału, aby wskazać, że strzałka listy rozwijanej jest wypchnięta.
/* Set the state of the split button control to indicate that
the drop-down arrow is pushed. The arrow is drawn shaded to
indicate the state.
*/
m_splitButton.SetDropDownState(TRUE);
CButton::SetElevationRequired
Ustawia stan bieżącej kontrolki przycisku na elevation required
, która jest niezbędna do wyświetlania ikony zabezpieczeń z podwyższonym poziomem uprawnień.
BOOL SetElevationRequired(BOOL fElevationRequired);
Parametry
fElevationRequired
[in] WARTOŚĆ TRUE, aby ustawić elevation required
stan; w przeciwnym razie wartość FALSE.
Wartość zwracana
Wartość TRUE, jeśli ta metoda zakończyła się pomyślnie; w przeciwnym razie, FAŁSZ.
Uwagi
Jeśli kontrolka linku przycisku lub polecenia wymaga podwyższonego poziomu uprawnień zabezpieczeń do wykonania akcji, ustaw kontrolkę na elevation required
stan. Następnie system Windows wyświetla ikonę osłony Kontrola konta użytkownika (UAC) w kontrolce. Aby uzyskać więcej informacji, zobacz Kontrola konta użytkownika.
Ta metoda wysyła komunikat BCM_SETSHIELD opisany w zestawie WINDOWS SDK.
CButton::SetIcon
Wywołaj tę funkcję składową, aby skojarzyć nową ikonę z przyciskiem .
HICON SetIcon(HICON hIcon);
Parametry
hIcon
Uchwyt ikony.
Wartość zwracana
Uchwyt ikony wcześniej skojarzony z przyciskiem .
Uwagi
Ikona zostanie automatycznie umieszczona na twarzy przycisku, domyślnie wyśrodkowana. Jeśli ikona jest za duża dla przycisku, zostanie obcięta po obu stronach. Możesz wybrać inne opcje wyrównania, w tym następujące:
BS_TOP
BS_LEFT
BS_RIGHT
BS_CENTER
BS_BOTTOM
BS_VCENTER
W przeciwieństwie do CBitmapButton, który używa czterech map bitowych na przycisk, SetIcon
używa tylko jednej ikony na przycisk. Po naciśnięciu przycisku ikona zostanie wyświetlona, aby przesunąć w dół i w prawo.
Przykład
CButton myIconButton2;
// Create an icon button.
myIconButton2.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
CRect(10, 10, 60, 50), pParentWnd, 1);
// If no icon is defined for the button, define the icon to the
// system error icon.
if (myIconButton2.GetIcon() == NULL)
myIconButton2.SetIcon(::LoadIcon(NULL, IDI_ERROR));
CButton::SetImageList
Wywołaj tę metodę, aby ustawić listę obrazów CButton
obiektu.
BOOL SetImageList(PBUTTON_IMAGELIST pbuttonImagelist);
Parametry
pbuttonImagelist
Wskaźnik do nowej listy obrazów.
Wartość zwracana
Zwraca wartość TRUE w przypadku powodzenia, FALSE w przypadku niepowodzenia.
Uwagi
Ta funkcja składowa emuluje funkcjonalność komunikatu BCM_SETIMAGELIST zgodnie z opisem w sekcji Przyciski zestawu Windows SDK.
CButton::SetNote
Ustawia tekst notatki dla bieżącej kontrolki linku polecenia.
BOOL SetNote(LPCTSTR lpszNote);
Parametry
lpszNote
[in] Wskaźnik do ciągu Unicode, który jest ustawiony jako tekst notatki dla kontrolki linku polecenia.
Wartość zwracana
Wartość TRUE, jeśli ta metoda zakończyła się pomyślnie; w przeciwnym razie, FAŁSZ.
Uwagi
Tej metody należy używać tylko z kontrolkami, których styl przycisku jest BS_COMMANDLINK lub BS_DEFCOMMANDLINK.
Ta metoda wysyła komunikat BCM_SETNOTE opisany w zestawie Windows SDK.
Przykład
Pierwszy przykład kodu definiuje zmienną , m_cmdLink
która jest używana do programowego uzyskiwania dostępu do kontrolki linku polecenia. Ta zmienna jest używana w poniższym przykładzie.
public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;
Następny przykład kodu ustawia tekst notatki dla kontrolki linku polecenia.
// Set the command link text.
m_cmdLink.SetNote(_T("This is the command link note."));
CButton::SetSplitGlyph
Kojarzy określony glif z bieżącą kontrolką przycisku podziału.
BOOL SetSplitGlyph(TCHAR chGlyph);
Parametry
chGlyph
[in] Znak, który określa glyph do użycia jako strzałkę listy rozwijanej przycisku podziału.
Wartość zwracana
Wartość TRUE, jeśli ta metoda zakończyła się pomyślnie; w przeciwnym razie, FAŁSZ.
Uwagi
Użyj tej metody tylko z kontrolkami, które mają styl przycisku BS_SPLITBUTTON lub BS_DEFSPLITBUTTON.
Glif to fizyczna reprezentacja znaku w określonej czcionki. Parametr chGlyph nie jest używany jako glif, ale zamiast tego służy do wybierania glifów z zestawu glifów zdefiniowanych przez system. Domyślna strzałka listy rozwijanej jest określana przez znak "6" i przypomina znak Unicode BLACK DOWN-POINTING TRIANGLE (U+25BC).
Ta metoda inicjuje mask
element członkowski struktury BUTTON_SPLITINFO z flagą BCSIF_GLYPH i himlGlyph
elementem członkowskim z parametrem chGlyph , a następnie wysyła tę strukturę w komunikacie BCM_GETSPLITINFO opisanym w zestawie Windows SDK.
CButton::SetSplitImageList
Kojarzy listę obrazów z bieżącą kontrolką przycisku podziału.
BOOL SetSplitImageList(CImageList* pSplitImageList);
Parametry
pSplitImageList
[in] Wskaźnik do obiektu CImageList w celu przypisania do bieżącej kontrolki przycisku podziału.
Wartość zwracana
Wartość TRUE, jeśli ta metoda zakończyła się pomyślnie; w przeciwnym razie, FAŁSZ.
Uwagi
Tej metody należy używać tylko z kontrolkami, których styl przycisku jest BS_SPLITBUTTON lub BS_DEFSPLITBUTTON.
Ta metoda inicjuje mask
element członkowski struktury BUTTON_SPLITINFO z flagą BCSIF_IMAGE i himlGlyph
elementem członkowskim z parametrem pSplitImageList , a następnie wysyła tę strukturę w komunikacie BCM_GETSPLITINFO opisanym w zestawie Windows SDK.
CButton::SetSplitInfo
Określa parametry określające sposób, w jaki system Windows rysuje bieżącą kontrolkę przycisku podziału.
BOOL SetSplitInfo(PBUTTON_SPLITINFO pInfo);
Parametry
pInfo
[in] Wskaźnik do struktury BUTTON_SPLITINFO definiującej bieżącą kontrolkę przycisku podziału.
Wartość zwracana
Wartość TRUE, jeśli ta metoda zakończyła się pomyślnie; w przeciwnym razie, FAŁSZ.
Uwagi
Tej metody należy używać tylko z kontrolkami, których styl przycisku jest BS_SPLITBUTTON lub BS_DEFSPLITBUTTON.
Ta metoda wysyła komunikat BCM_SETSPLITINFO opisany w zestawie Windows SDK.
Przykład
Pierwszy przykład kodu definiuje zmienną , m_splitButton
która jest używana do programowego uzyskiwania dostępu do kontrolki przycisku podziału.
public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;
W następnym przykładzie kodu zmienia się glyph, który jest używany na potrzeby strzałki rozwijanej przycisku podziału. W przykładzie jest zastępowany trójkąt w górę dla domyślnego trójkąta wskazującego na dół glif. Wyświetlany glyph zależy od znaku określonego BUTTON_SPLITINFO
w elemencie himlGlyph
członkowskim struktury. Trójkąt wskazujący w dół jest określony przez znak "6", a trójkąt wskazujący w górę jest określony przez znak "5". Aby uzyskać porównanie, zobacz metodę wygody CButton ::SetSplitGlyph.
/*
The drop-down arrow glyph is a function of the specified character.
The default "down" drop-down arrow glyph is specified by a
character '6'. Set the "up" arrow glyph, which is a character '5'.
See the convenience method, SetSplitGlyph(), for comparison.
*/
BUTTON_SPLITINFO bsInfo = {0};
bsInfo.mask = BCSIF_GLYPH;
TCHAR chGlyph = _T('5'); // "up" arrow glyph
bsInfo.himlGlyph = (HIMAGELIST)chGlyph;
bRC = m_splitButton.SetSplitInfo(&bsInfo);
CButton::SetSplitSize
Ustawia prostokąt ograniczenia składnika listy rozwijanej bieżącego formantu przycisku podziału.
BOOL SetSplitSize(LPSIZE pSize);
Parametry
Rozmiar p
[in] Wskaźnik do struktury SIZE opisujący prostokąt ograniczenia.
Wartość zwracana
Wartość TRUE, jeśli ta metoda zakończyła się pomyślnie; w przeciwnym razie, FAŁSZ.
Uwagi
Tej metody należy używać tylko z kontrolkami, których styl przycisku jest BS_SPLITBUTTON lub BS_DEFSPLITBUTTON.
Po rozwinięciu kontrolki przycisku podziału można wyświetlić składnik listy rozwijanej, taki jak kontrolka listy lub kontrolka pagera. Ta metoda określa rozmiar prostokąta ograniczenia, który zawiera składnik listy rozwijanej.
Ta metoda inicjuje mask
element członkowski struktury BUTTON_SPLITINFO z flagą BCSIF_SIZE i size
elementem członkowskim z parametrem pSize , a następnie wysyła tę strukturę w komunikacie BCM_GETSPLITINFO opisanym w zestawie SDK systemu Windows.
Przykład
Pierwszy przykład kodu definiuje zmienną , m_splitButton
która jest używana do programowego uzyskiwania dostępu do kontrolki przycisku podziału. Ta zmienna jest używana w poniższym przykładzie.
public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;
Następny przykład kodu podwaja rozmiar strzałki rozwijanej przycisku podziału.
// Double the size of the split button drop-down arrow.
SIZE sz;
bRC = m_splitButton.GetSplitSize(&sz); // current size
sz.cx = sz.cx * 2;
sz.cy = sz.cy * 2;
bRC = m_splitButton.SetSplitSize(&sz);
CButton::SetSplitStyle
Ustawia styl bieżącej kontrolki przycisku podziału.
BOOL SetSplitStyle(UINT uSplitStyle);
Parametry
uSplitStyle
[in] Bitowa kombinacja stylów przycisku podziału. Aby uzyskać więcej informacji, zobacz uSplitStyle
element członkowski struktury BUTTON_SPLITINFO .
Wartość zwracana
Wartość TRUE, jeśli ta metoda zakończyła się pomyślnie; w przeciwnym razie, FAŁSZ.
Uwagi
Tej metody należy używać tylko z kontrolkami, których styl przycisku jest BS_SPLITBUTTON lub BS_DEFSPLITBUTTON.
Style przycisku podziału określają wyrównanie, współczynnik proporcji i format graficzny, za pomocą którego system Windows rysuje ikonę przycisku podziału. Aby uzyskać więcej informacji, zobacz uSplitStyle
element członkowski struktury BUTTON_SPLITINFO .
Ta metoda inicjuje mask
element członkowski struktury BUTTON_SPLITINFO z flagą BCSIF_STYLE i uSplitStyle
elementem członkowskim z parametrem uSplitStyle , a następnie wysyła tę strukturę w komunikacie BCM_GETSPLITINFO opisanym w zestawie SDK systemu Windows.
Przykład
Pierwszy przykład kodu definiuje zmienną , m_splitButton
która jest używana do programowego uzyskiwania dostępu do kontrolki przycisku podziału.
public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;
Następny przykład kodu ustawia styl strzałki rozwijanej przycisku podziału. Styl BCSS_ALIGNLEFT wyświetla strzałkę po lewej stronie przycisku, a styl BCSS_STRETCH zachowuje proporcje strzałki listy rozwijanej po zmianie rozmiaru przycisku.
/*
Set the style of the split button drop-down arrow: Display the
arrow on the left and retain the arrow's proportions when resizing
the control.
*/
bRC = m_splitButton.SetSplitStyle(BCSS_ALIGNLEFT | BCSS_STRETCH);
CButton::SetState
Określa, czy kontrolka przycisku jest wyróżniona, czy nie.
void SetState(BOOL bHighlight);
Parametry
bHighlight
Określa, czy przycisk ma być wyróżniony. Wartość niezerowa wyróżnia przycisk; wartość 0 usuwa wszelkie wyróżnianie.
Uwagi
Wyróżnianie wpływa na zewnętrzną część kontrolki przycisku. Nie ma wpływu na stan sprawdzania przycisku radiowego lub pola wyboru.
Kontrolka przycisku jest automatycznie wyróżniona, gdy użytkownik kliknie i przytrzymuje lewy przycisk myszy. Wyróżnianie jest usuwane, gdy użytkownik zwolni przycisk myszy.
Przykład
CButton myPushButton;
// Create a push button.
myPushButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CRect(10, 10, 100, 30), pParentWnd, 1);
// Invert the highlight state of the button.
myPushButton.SetState(!(myPushButton.GetState() & 0x0004));
CButton::SetTextMargin
Wywołaj tę metodę, aby ustawić margines CButton
tekstu obiektu.
BOOL SetTextMargin(RECT* pmargin);
Parametry
pmargin
Wskaźnik do nowego marginesu tekstu.
Wartość zwracana
Zwraca wartość TRUE w przypadku powodzenia, FALSE w przypadku niepowodzenia.
Uwagi
Ta funkcja składowa emuluje funkcjonalność komunikatu BCM_SETTEXTMARGIN zgodnie z opisem w sekcji Przyciski zestawu Windows SDK.
Zobacz też
Klasa CWnd
Wykres hierarchii
Klasa CWnd
Klasa CComboBox
Klasa CEdit
Klasa CListBox
Klasa CScrollBar
Klasa CStatic
Klasa CBitmapButton
Klasa CDialog