Classe CButton

Fornisce la funzionalità dei controlli pulsante di Windows.

Sintassi

class CButton : public CWnd

Membri

Costruttori pubblici

Nome Descrizione
CButton::CButton Costruisce un oggetto CButton.

Metodi pubblici

Nome Descrizione
CButton::Create Crea il controllo pulsante di Windows e lo collega all'oggetto CButton .
CButton::D rawItem Eseguire l'override per disegnare un oggetto disegnato dal CButton proprietario.
CButton::GetBitmap Recupera l'handle della bitmap impostata in precedenza con SetBitmap.
CButton::GetButtonStyle Recupera informazioni sullo stile del controllo pulsante.
CButton::GetCheck Recupera lo stato di controllo di un controllo pulsante.
CButton::GetCursor Recupera l'handle dell'immagine del cursore impostata in precedenza con SetCursor.
CButton::GetIcon Recupera l'handle dell'icona impostata in precedenza con SetIcon.
CButton::GetIdealSize Recupera le dimensioni ideali del controllo pulsante.
CButton::GetImageList Recupera l'elenco di immagini del controllo pulsante.
CButton::GetNote Recupera il componente note del controllo collegamento al comando corrente.
CButton::GetNoteLength Recupera la lunghezza del testo della nota per il controllo collegamento al comando corrente.
CButton::GetSplitGlyph Recupera il glifo associato al controllo pulsante di divisione corrente.
CButton::GetSplitImageList Recupera l'elenco di immagini per il controllo pulsante di divisione corrente.
CButton::GetSplitInfo Recupera informazioni che definiscono il controllo pulsante di divisione corrente.
CButton::GetSplitSize Recupera il rettangolo di delimitazione del componente a discesa del controllo pulsante di divisione corrente.
CButton::GetSplitStyle Recupera gli stili del pulsante di divisione che definiscono il controllo pulsante di divisione corrente.
CButton::GetState Recupera lo stato di controllo, lo stato di evidenziazione e lo stato attivo di un controllo pulsante.
CButton::GetTextMargin Recupera il margine di testo del controllo pulsante.
CButton::SetBitmap Specifica una bitmap da visualizzare sul pulsante.
CButton::SetButtonStyle Modifica lo stile di un pulsante.
CButton::SetCheck Imposta lo stato di controllo di un controllo pulsante.
CButton::SetCursor Specifica un'immagine del cursore da visualizzare sul pulsante.
CButton::SetDropDownState Imposta lo stato a discesa del controllo pulsante di divisione corrente.
CButton::SetIcon Specifica un'icona da visualizzare sul pulsante.
CButton::SetImageList Imposta l'elenco di immagini del controllo pulsante.
CButton::SetNote Imposta la nota sul controllo collegamento al comando corrente.
CButton::SetSplitGlyph Associa un glifo specificato al controllo pulsante di divisione corrente.
CButton::SetSplitImageList Associa un elenco di immagini al controllo pulsante di divisione corrente.
CButton::SetSplitInfo Specifica le informazioni che definiscono il controllo pulsante di divisione corrente.
CButton::SetSplitSize Imposta il rettangolo di delimitazione del componente a discesa del controllo pulsante di divisione corrente.
CButton::SetSplitStyle Imposta lo stile del controllo pulsante di divisione corrente.
CButton::SetState Imposta lo stato di evidenziazione di un controllo pulsante.
CButton::SetTextMargin Imposta il margine di testo del controllo pulsante.

Osservazioni:

Un controllo pulsante è una piccola finestra figlio rettangolare che può essere selezionata e disattivata. I pulsanti possono essere usati da soli o in gruppi e possono essere etichettati o visualizzati senza testo. Un pulsante cambia in genere aspetto quando l'utente lo fa clic.

I pulsanti tipici sono la casella di controllo, il pulsante di opzione e il pulsante di scelta. Un CButton oggetto può diventare uno di questi, in base allo stile del pulsante specificato all'inizializzazione dalla funzione crea membro.

Inoltre, la classe CBitmapButton derivata da CButton supporta la creazione di controlli pulsante etichettati con immagini bitmap anziché testo. Un CBitmapButton oggetto può avere bitmap separate per gli stati su, giù, attivo e disabilitato di un pulsante.

È possibile creare un controllo pulsante da un modello di finestra di dialogo o direttamente nel codice. In entrambi i casi, chiamare prima il costruttore CButton per costruire l'oggetto CButton , quindi chiamare la Create funzione membro per creare il controllo pulsante di Windows e collegarlo all'oggetto CButton .

La costruzione può essere un processo in un unico passaggio in una classe derivata da CButton. Scrivere un costruttore per la classe derivata e chiamare Create dall'interno del costruttore.

Se vuoi gestire i messaggi di notifica di Windows inviati da un controllo pulsante al relativo elemento padre (in genere una classe derivata da CDialog), aggiungi una voce della mappa messaggi e una funzione membro del gestore messaggi alla classe padre per ogni messaggio.

Ogni voce della mappa messaggi ha il formato seguente:

ON_Notification ( id, memberFxn )

dove id specifica l'ID finestra figlio del controllo che invia la notifica e memberFxn è il nome della funzione membro padre scritta per gestire la notifica.

Il prototipo della funzione padre è il seguente:

afx_msg void memberFxn();

Le potenziali voci della mappa dei messaggi sono le seguenti:

Voce della mappa Inviato all'elemento padre quando...
ON_BN_CLICKED L'utente fa clic su un pulsante.
ON_BN_DOUBLECLICKED L'utente fa doppio clic su un pulsante.

Se si crea un CButton oggetto da una risorsa di dialogo, l'oggetto CButton viene eliminato automaticamente quando l'utente chiude la finestra di dialogo.

Se si crea un CButton oggetto all'interno di una finestra, potrebbe essere necessario eliminarlo definitivamente. Se si crea l'oggetto nell'heap CButton usando la new funzione , è necessario chiamare delete sull'oggetto per distruggerlo quando l'utente chiude il controllo pulsante di Windows. Se si crea l'oggetto CButton nello stack o viene incorporato nell'oggetto finestra di dialogo padre, viene eliminato automaticamente.

Gerarchia di ereditarietà

CObject

CCmdTarget

CWnd

CButton

Requisiti

Intestazione: afxwin.h

CButton::CButton

Costruisce un oggetto CButton.

CButton();

Esempio

// Declare a button object.
CButton myButton;

CButton::Create

Crea il controllo pulsante di Windows e lo collega all'oggetto CButton .

virtual BOOL Create(
    LPCTSTR lpszCaption,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parametri

lpszCaption
Specifica il testo del controllo pulsante.

dwStyle
Specifica lo stile del controllo pulsante. Applicare qualsiasi combinazione di stili di pulsante al pulsante.

rect
Specifica le dimensioni e la posizione del controllo pulsante. Può essere un CRect oggetto o una RECT struttura.

pParentWnd
Specifica la finestra padre del controllo pulsante, in genere un oggetto CDialog. Non deve essere NULL.

nID
Specifica l'ID del controllo pulsante.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

Si costruisce un CButton oggetto in due passaggi. Prima di tutto, chiamare il costruttore e quindi chiamare Create, che crea il controllo pulsante di Windows e lo collega all'oggetto CButton .

Se viene specificato lo stile WS_VISIBLE, Windows invia il controllo pulsante a tutti i messaggi necessari per attivare e visualizzare il pulsante.

Applicare gli stili di finestra seguenti a un controllo pulsante:

  • WS_CHILD sempre

  • WS_VISIBLE in genere

  • WS_DISABLED raramente

  • WS_GROUP A raggruppare i controlli

  • WS_TABSTOP Per includere il pulsante nell'ordine di tabulazione

Esempio

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

Chiamato dal framework quando un aspetto visivo di un pulsante disegnato dal proprietario è cambiato.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Parametri

lpDrawItemStruct
Puntatore lungo a una struttura DRAWITEMSTRUCT . La struttura contiene informazioni sull'elemento da disegnare e sul tipo di disegno richiesto.

Osservazioni:

Un pulsante disegnato dal proprietario ha il set di stili BS_OWNERDRAW. Eseguire l'override di questa funzione membro per implementare il disegno per un oggetto disegnato dal CButton proprietario. L'applicazione deve ripristinare tutti gli oggetti GDI (Graphics Device Interface) selezionati per il contesto di visualizzazione fornito in lpDrawItemStruct prima che la funzione membro termini.

Vedere anche i valori di stile BS_ .

Esempio

// 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

Chiamare questa funzione membro per ottenere l'handle di una bitmap, impostata in precedenza con SetBitmap, associata a un pulsante.

HBITMAP GetBitmap() const;

Valore restituito

Handle di una bitmap. NULL se non è stata specificata alcuna bitmap in precedenza.

Esempio

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

Recupera informazioni sullo stile del controllo pulsante.

UINT GetButtonStyle() const;

Valore restituito

Restituisce gli stili del pulsante per questo CButton oggetto. Questa funzione restituisce solo i valori di stile BS_ , non gli altri stili di finestra.

Esempio

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

Recupera lo stato di controllo di un pulsante di opzione o di una casella di controllo.

int GetCheck() const;

Valore restituito

Il valore restituito da un controllo pulsante creato con lo stile BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON, BS_AUTO3STATE, BS_CHECKBOX, BS_RADIOBUTTON o BS_3STATE è uno dei valori seguenti:

Valore Significato
BST_UNCHECKED Lo stato del pulsante è deselezionato.
BST_CHECKED Lo stato del pulsante è selezionato.
BST_INDETERMINATE Lo stato del pulsante è indeterminato (si applica solo se il pulsante ha lo stile BS_3STATE o BS_AUTO3STATE).

Se il pulsante ha qualsiasi altro stile, il valore restituito è BST_UNCHECKED.

Esempio

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

Chiamare questa funzione membro per ottenere l'handle di un cursore, impostato in precedenza con SetCursor, associato a un pulsante.

HCURSOR GetCursor();

Valore restituito

Handle per un'immagine del cursore. NULL se non è stato specificato alcun cursore in precedenza.

Esempio

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

Chiamare questa funzione membro per ottenere l'handle di un'icona, impostata in precedenza con SetIcon, associata a un pulsante.

HICON GetIcon() const;

Valore restituito

Handle di un'icona. NULL se in precedenza non è specificata alcuna icona.

Esempio

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

Recupera le dimensioni ideali per il controllo pulsante.

BOOL GetIdealSize(SIZE* psize);

Parametri

psize
Puntatore alla dimensione corrente del pulsante.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

Questa funzione membro emula la funzionalità del messaggio di BCM_GETIDEALSIZE, come descritto nella sezione Pulsanti di Windows SDK.

CButton::GetImageList

Chiamare questo metodo per ottenere l'elenco di immagini dal controllo pulsante.

BOOL GetImageList(PBUTTON_IMAGELIST pbuttonImagelist);

Parametri

pbuttonImagelist
Puntatore all'elenco di immagini dell'oggetto CButton .

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

Questa funzione membro emula la funzionalità del messaggio di BCM_GETIMAGELIST, come descritto nella sezione Pulsanti di Windows SDK.

CButton::GetNote

Recupera il testo della nota associato al controllo collegamento al comando corrente.

CString GetNote() const;

BOOL GetNote(
    LPTSTR lpszNote,
    UINT* cchNote) const;

Parametri

lpszNote
[out] Puntatore a un buffer, responsabile dell'allocazione e della deallocazione del chiamante. Se il valore restituito è TRUE, il buffer contiene il testo della nota associato al controllo collegamento al comando corrente; in caso contrario, il buffer rimane invariato.

cchNote
[in, out] Puntatore a una variabile integer senza segno. Quando questo metodo viene chiamato, la variabile contiene le dimensioni del buffer specificato dal parametro lpszNote . Quando termina, se il valore restituito è TRUE, la variabile contiene le dimensioni della nota associata al controllo collegamento al comando corrente. Se il valore restituito è FALSE, la variabile contiene le dimensioni del buffer necessarie per contenere la nota.

Valore restituito

Nel primo overload, un oggetto CString che contiene il testo della nota associato al controllo collegamento al comando corrente.

oppure

Nel secondo overload, TRUE se questo metodo ha esito positivo; in caso contrario, FALSE.

Osservazioni:

Utilizzare questo metodo solo con i controlli il cui stile del pulsante è BS_COMMANDLINK o BS_DEFCOMMANDLINK.

Questo metodo invia il messaggio di BCM_GETNOTE , descritto in Windows SDK.

CButton::GetNoteLength

Recupera la lunghezza del testo della nota per il controllo collegamento al comando corrente.

UINT GetNoteLength() const;

Valore restituito

Lunghezza del testo della nota, in caratteri Unicode a 16 bit, per il controllo collegamento al comando corrente.

Osservazioni:

Utilizzare questo metodo solo con i controlli il cui stile del pulsante è BS_COMMANDLINK o BS_DEFCOMMANDLINK.

Questo metodo invia il messaggio BCM_GETNOTELENGTH , descritto in Windows SDK.

CButton::GetSplitGlyph

Recupera il glifo associato al controllo pulsante di divisione corrente.

TCHAR GetSplitGlyph() const;

Valore restituito

Carattere glifo associato al controllo pulsante di divisione corrente.

Osservazioni:

Un glifo è la rappresentazione fisica di un carattere in un tipo di carattere specifico. Ad esempio, un controllo pulsante di divisione potrebbe essere decorato con il glifo del carattere segno di spunta Unicode (U+2713).

Utilizzare questo metodo solo con i controlli il cui stile del pulsante è BS_SPLITBUTTON o BS_DEFSPLITBUTTON.

Questo metodo inizializza il mask membro di una struttura BUTTON_SPLITINFO con il flag BCSIF_GLYPH e quindi invia tale struttura nel messaggio BCM_GETSPLITINFO descritto in Windows SDK. Quando la funzione messaggio viene restituita, questo metodo recupera il glifo dal himlGlyph membro della struttura.

CButton::GetSplitImageList

Recupera l'elenco di immagini per il controllo pulsante di divisione corrente.

CImageList* GetSplitImageList() const;

Valore restituito

Puntatore a un oggetto CImageList .

Osservazioni:

Utilizzare questo metodo solo con i controlli il cui stile del pulsante è BS_SPLITBUTTON o BS_DEFSPLITBUTTON.

Questo metodo inizializza il mask membro di una struttura BUTTON_SPLITINFO con il flag BCSIF_IMAGE e quindi invia tale struttura nel messaggio BCM_GETSPLITINFO descritto in Windows SDK. Quando la funzione messaggio viene restituita, questo metodo recupera l'elenco di immagini dal himlGlyph membro della struttura.

CButton::GetSplitInfo

Recupera i parametri che determinano il modo in cui Windows disegna il controllo pulsante di divisione corrente.

BOOL GetSplitInfo(PBUTTON_SPLITINFO pInfo) const;

Parametri

pInfo
[out] Puntatore a una struttura BUTTON_SPLITINFO che riceve informazioni sul controllo pulsante di divisione corrente. Il chiamante è responsabile dell'allocazione della struttura.

Valore restituito

TRUE se questo metodo ha esito positivo; in caso contrario, FALSE.

Osservazioni:

Utilizzare questo metodo solo con i controlli il cui stile del pulsante è BS_SPLITBUTTON o BS_DEFSPLITBUTTON.

Questo metodo invia il messaggio BCM_GETSPLITINFO , descritto in Windows SDK.

CButton::GetSplitSize

Recupera il rettangolo di delimitazione del componente a discesa del controllo pulsante di divisione corrente.

BOOL GetSplitSize(LPSIZE pSize) const;

Parametri

pSize
[out] Puntatore a una struttura SIZE che riceve la descrizione di un rettangolo.

Valore restituito

TRUE se questo metodo ha esito positivo; in caso contrario, FALSE.

Osservazioni:

Utilizzare questo metodo solo con i controlli il cui stile del pulsante è BS_SPLITBUTTON o BS_DEFSPLITBUTTON.

Quando il controllo pulsante di divisione viene espanso, può visualizzare un componente a discesa, ad esempio un controllo elenco o un controllo cercapersone. Questo metodo recupera il rettangolo di delimitazione che contiene il componente a discesa.

Questo metodo inizializza il mask membro di una struttura BUTTON_SPLITINFO con il flag BCSIF_SIZE e quindi invia tale struttura nel messaggio BCM_GETSPLITINFO descritto in Windows SDK. Quando la funzione messaggio viene restituita, questo metodo recupera il rettangolo di delimitazione dal size membro della struttura.

CButton::GetSplitStyle

Recupera gli stili del pulsante di divisione che definiscono il controllo pulsante di divisione corrente.

UINT GetSplitStyle() const;

Valore restituito

Combinazione bit per bit di stili pulsante di divisione. Per altre informazioni, vedere il uSplitStyle membro della struttura BUTTON_SPLITINFO .

Osservazioni:

Utilizzare questo metodo solo con i controlli il cui stile del pulsante è BS_SPLITBUTTON o BS_DEFSPLITBUTTON.

Gli stili del pulsante di divisione specificano l'allineamento, le proporzioni e il formato grafico con cui Windows disegna un'icona a forma di pulsante di divisione.

Questo metodo inizializza il mask membro di una struttura BUTTON_SPLITINFO con il flag BCSIF_STYLE e quindi invia tale struttura nel messaggio BCM_GETSPLITINFO descritto in Windows SDK. Quando la funzione messaggio viene restituita, questo metodo recupera gli stili del uSplitStyle pulsante di divisione dal membro della struttura.

CButton::GetState

Recupera lo stato di un controllo pulsante.

UINT GetState() const;

Valore restituito

Campo di bit che contiene la combinazione di valori che indicano lo stato corrente di un controllo pulsante. Nella tabella seguente sono elencati i valori possibili.

Stato pulsante valore Descrizione
BST_UNCHECKED 0x0000 Stato iniziale.
BST_CHECKED 0x0001 Il controllo pulsante è selezionato.
BST_INDETERMINATE 0x0002 Lo stato è indeterminato (possibile solo quando il controllo pulsante ha tre stati).
BST_PUSHED 0x0004 Viene premuto il controllo pulsante.
BST_FOCUS 0x0008 Il controllo pulsante ha lo stato attivo.

Osservazioni:

Un controllo pulsante con lo stile del pulsante BS_3STATE o BS_AUTO3STATE crea una casella di controllo con un terzo stato denominato stato indeterminato. Lo stato indeterminato indica che la casella di controllo non è selezionata né deselezionata.

Esempio

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

Chiamare questo metodo per ottenere il margine di testo dell'oggetto CButton .

BOOL GetTextMargin(RECT* pmargin);

Parametri

pmargin
Puntatore al margine di testo dell'oggetto CButton .

Valore restituito

Restituisce il margine di testo. Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

Questa funzione membro emula la funzionalità del messaggio BCM_GETTEXTMARGIN, come descritto nella sezione Pulsanti di Windows SDK.

CButton::SetBitmap

Chiamare questa funzione membro per associare una nuova bitmap al pulsante.

HBITMAP SetBitmap(HBITMAP hBitmap);

Parametri

hBitmap
Handle di una bitmap.

Valore restituito

Handle di una bitmap precedentemente associata al pulsante.

Osservazioni:

La bitmap verrà posizionata automaticamente sul viso del pulsante, allineata al centro per impostazione predefinita. Se la bitmap è troppo grande per il pulsante, verrà ritagliata su entrambi i lati. È possibile scegliere altre opzioni di allineamento, tra cui:

  • BS_TOP

  • BS_LEFT

  • BS_RIGHT

  • BS_CENTER

  • BS_BOTTOM

  • BS_VCENTER

A differenza di CBitmapButton, che usa quattro bitmap per pulsante, SetBitmap usa una sola bitmap per ogni pulsante. Quando si preme il pulsante, la bitmap viene visualizzata per spostarsi verso il basso e verso destra.

L'utente è responsabile del rilascio della bitmap al termine dell'operazione.

Esempio

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

Modifica lo stile di un pulsante.

void SetButtonStyle(
    UINT nStyle,
    BOOL bRedraw = TRUE);

Parametri

nStyle
Specifica lo stile del pulsante.

bRedraw
Specifica se il pulsante deve essere ridisegnato. Un valore diverso da zero ridisegna il pulsante. Un valore 0 non ridisegna il pulsante. Il pulsante viene ridisegnato per impostazione predefinita.

Osservazioni:

Usare la GetButtonStyle funzione membro per recuperare lo stile del pulsante. La parola in ordine basso dello stile completo del pulsante è lo stile specifico del pulsante.

Esempio

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

Imposta o reimposta lo stato di controllo di un pulsante di opzione o di una casella di controllo.

void SetCheck(int nCheck);

Parametri

nCheck
Specifica lo stato di controllo. Questo parametro può essere uno dei seguenti:

Valore Significato
BST_UNCHECKED Impostare lo stato del pulsante su deselezionato.
BST_CHECKED Impostare lo stato del pulsante su selezionato.
BST_INDETERMINATE Impostare lo stato del pulsante su indeterminato. Questo valore può essere utilizzato solo se il pulsante ha lo stile BS_3STATE o BS_AUTO3STATE.

Osservazioni:

Questa funzione membro non ha alcun effetto su un pulsante di scelta.

Esempio

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

Chiamare questa funzione membro per associare un nuovo cursore al pulsante.

HCURSOR SetCursor(HCURSOR hCursor);

Parametri

hCursor
Handle di un cursore.

Valore restituito

Handle di un cursore associato in precedenza al pulsante.

Osservazioni:

Il cursore verrà posizionato automaticamente sulla faccia del pulsante, centrato per impostazione predefinita. Se il cursore è troppo grande per il pulsante, verrà ritagliato su entrambi i lati. È possibile scegliere altre opzioni di allineamento, tra cui:

  • BS_TOP

  • BS_LEFT

  • BS_RIGHT

  • BS_CENTER

  • BS_BOTTOM

  • BS_VCENTER

A differenza di CBitmapButton, che usa quattro bitmap per pulsante, SetCursor usa un solo cursore per ogni pulsante. Quando si preme il pulsante, il cursore viene visualizzato per spostarsi verso il basso e verso destra.

Esempio

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

Imposta lo stato a discesa del controllo pulsante di divisione corrente.

BOOL SetDropDownState(BOOL fDropDown);

Parametri

fDropDown
[in] TRUE per impostare BST_DROPDOWNPUSHED stato; in caso contrario, FALSE.

Valore restituito

TRUE se questo metodo ha esito positivo; in caso contrario, FALSE.

Osservazioni:

Un controllo pulsante di divisione ha uno stile di BS_SPLITBUTTON o BS_DEFSPLITBUTTON ed è costituito da un pulsante e una freccia a discesa a destra. Per altre informazioni, vedere Stili pulsante. In genere, lo stato dell'elenco a discesa viene impostato quando l'utente fa clic sulla freccia a discesa. Utilizzare questo metodo per impostare lo stato a discesa del controllo a livello di codice. La freccia a discesa viene disegnata ombreggiata per indicare lo stato.

Questo metodo invia il messaggio BCM_SETDROPDOWNSTATE , descritto in Windows SDK.

Esempio

Il primo esempio di codice definisce la variabile , m_splitButton, usata per accedere a livello di codice al controllo pulsante di divisione. Questa variabile viene usata nell'esempio seguente.

public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;

Nell'esempio di codice successivo viene impostato lo stato del controllo pulsante di divisione per indicare che viene premuta la freccia a discesa.

/* 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

Imposta lo stato del controllo pulsante corrente su elevation required, necessario per il controllo per visualizzare un'icona di sicurezza con privilegi elevati.

BOOL SetElevationRequired(BOOL fElevationRequired);

Parametri

fElevationRequired
[in] TRUE per impostare elevation required lo stato; in caso contrario, FALSE.

Valore restituito

TRUE se questo metodo ha esito positivo; in caso contrario, FALSE.

Osservazioni:

Se un pulsante o un controllo collegamento di comando richiede l'autorizzazione di sicurezza con privilegi elevati per eseguire un'azione, impostare il controllo sullo elevation required stato. Successivamente, Windows visualizza l'icona di schermata Controllo account utente (UAC) sul controllo. Per altre informazioni, vedere Controllo dell'account utente.

Questo metodo invia il messaggio di BCM_SETSHIELD , descritto in Windows SDK.

CButton::SetIcon

Chiamare questa funzione membro per associare una nuova icona al pulsante.

HICON SetIcon(HICON hIcon);

Parametri

hIcon
Handle di un'icona.

Valore restituito

Handle di un'icona associata in precedenza al pulsante.

Osservazioni:

L'icona verrà posizionata automaticamente sul viso del pulsante, allineata al centro per impostazione predefinita. Se l'icona è troppo grande per il pulsante, verrà ritagliata su entrambi i lati. È possibile scegliere altre opzioni di allineamento, tra cui:

  • BS_TOP

  • BS_LEFT

  • BS_RIGHT

  • BS_CENTER

  • BS_BOTTOM

  • BS_VCENTER

A differenza di CBitmapButton, che usa quattro bitmap per pulsante, SetIcon usa una sola icona per ogni pulsante. Quando si preme il pulsante, l'icona viene visualizzata per spostarsi verso il basso e verso destra.

Esempio

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

Chiamare questo metodo per impostare l'elenco di immagini dell'oggetto CButton .

BOOL SetImageList(PBUTTON_IMAGELIST pbuttonImagelist);

Parametri

pbuttonImagelist
Puntatore al nuovo elenco di immagini.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

Questa funzione membro emula la funzionalità del messaggio di BCM_SETIMAGELIST, come descritto nella sezione Pulsanti di Windows SDK.

CButton::SetNote

Imposta il testo della nota per il controllo collegamento al comando corrente.

BOOL SetNote(LPCTSTR lpszNote);

Parametri

lpszNote
[in] Puntatore a una stringa Unicode impostata come testo della nota per il controllo collegamento di comando.

Valore restituito

TRUE se questo metodo ha esito positivo; in caso contrario, FALSE.

Osservazioni:

Utilizzare questo metodo solo con i controlli il cui stile del pulsante è BS_COMMANDLINK o BS_DEFCOMMANDLINK.

Questo metodo invia il messaggio BCM_SETNOTE , descritto in Windows SDK.

Esempio

Il primo esempio di codice definisce la variabile , m_cmdLink, usata per accedere a livello di codice al controllo del collegamento al comando. Questa variabile viene usata nell'esempio seguente.

public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;

Nell'esempio di codice seguente viene impostato il testo della nota per il controllo collegamento di comando.

// Set the command link text.
m_cmdLink.SetNote(_T("This is the command link note."));

CButton::SetSplitGlyph

Associa un glifo specificato al controllo pulsante di divisione corrente.

BOOL SetSplitGlyph(TCHAR chGlyph);

Parametri

chGlyph
[in] Carattere che specifica il glifo da usare come freccia a discesa pulsante di divisione.

Valore restituito

TRUE se questo metodo ha esito positivo; in caso contrario, FALSE.

Osservazioni:

Utilizzare questo metodo solo con i controlli con lo stile del pulsante BS_SPLITBUTTON o BS_DEFSPLITBUTTON.

Un glifo è la rappresentazione fisica di un carattere in un tipo di carattere specifico. Il parametro chGlyph non viene usato come glifo, ma viene usato per selezionare un glifo da un set di glifi definiti dal sistema. Il glifo della freccia a discesa predefinito è specificato da un carattere "6" e assomiglia al carattere Unicode BLACK DOWN-POINTING TRIANGLE (U+25BC).

Questo metodo inizializza il mask membro di una struttura BUTTON_SPLITINFO con il flag BCSIF_GLYPH e il membro con il himlGlyph parametro chGlyph e quindi invia tale struttura nel messaggio BCM_GETSPLITINFO descritto in Windows SDK.

CButton::SetSplitImageList

Associa un elenco di immagini al controllo pulsante di divisione corrente.

BOOL SetSplitImageList(CImageList* pSplitImageList);

Parametri

pSplitImageList
[in] Puntatore a un oggetto CImageList da assegnare al controllo pulsante di divisione corrente.

Valore restituito

TRUE se questo metodo ha esito positivo; in caso contrario, FALSE.

Osservazioni:

Utilizzare questo metodo solo con i controlli il cui stile del pulsante è BS_SPLITBUTTON o BS_DEFSPLITBUTTON.

Questo metodo inizializza il mask membro di una struttura BUTTON_SPLITINFO con il flag BCSIF_IMAGE e il himlGlyph membro con il parametro pSplitImageList e quindi invia tale struttura nel messaggio BCM_GETSPLITINFO descritto in Windows SDK.

CButton::SetSplitInfo

Specifica i parametri che determinano il modo in cui Windows disegna il controllo pulsante di divisione corrente.

BOOL SetSplitInfo(PBUTTON_SPLITINFO pInfo);

Parametri

pInfo
[in] Puntatore a una struttura BUTTON_SPLITINFO che definisce il controllo pulsante di divisione corrente.

Valore restituito

TRUE se questo metodo ha esito positivo; in caso contrario, FALSE.

Osservazioni:

Utilizzare questo metodo solo con i controlli il cui stile del pulsante è BS_SPLITBUTTON o BS_DEFSPLITBUTTON.

Questo metodo invia il messaggio di BCM_SETSPLITINFO , descritto in Windows SDK.

Esempio

Il primo esempio di codice definisce la variabile , m_splitButton, usata per accedere a livello di codice al controllo pulsante di divisione.

public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;

Nell'esempio di codice successivo viene modificato il glifo usato per la freccia a discesa del pulsante di divisione. Nell'esempio viene sostituito un glifo di triangolo verso l'alto per il glifo del triangolo verso il basso predefinito. Il glifo visualizzato dipende dal carattere specificato nel himlGlyph membro della BUTTON_SPLITINFO struttura. Il glifo del triangolo verso il basso è specificato da un carattere '6' e il glifo del triangolo verso l'alto è specificato da un carattere '5'. Per un confronto, vedere il metodo di praticità 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

Imposta il rettangolo di delimitazione del componente a discesa del controllo pulsante di divisione corrente.

BOOL SetSplitSize(LPSIZE pSize);

Parametri

pSize
[in] Puntatore a una struttura SIZE che descrive un rettangolo di delimitazione.

Valore restituito

TRUE se questo metodo ha esito positivo; in caso contrario, FALSE.

Osservazioni:

Utilizzare questo metodo solo con i controlli il cui stile del pulsante è BS_SPLITBUTTON o BS_DEFSPLITBUTTON.

Quando il controllo pulsante di divisione viene espanso, può visualizzare un componente a discesa, ad esempio un controllo elenco o un controllo cercapersone. Questo metodo specifica le dimensioni del rettangolo di delimitazione che contiene il componente a discesa.

Questo metodo inizializza il mask membro di una struttura BUTTON_SPLITINFO con il flag BCSIF_SIZE e il size membro con il parametro pSize e quindi invia tale struttura nel messaggio BCM_GETSPLITINFO descritto in Windows SDK.

Esempio

Il primo esempio di codice definisce la variabile , m_splitButton, usata per accedere a livello di codice al controllo pulsante di divisione. Questa variabile viene usata nell'esempio seguente.

public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;

L'esempio di codice successivo raddoppia le dimensioni della freccia a discesa del pulsante di divisione.

// 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

Imposta lo stile del controllo pulsante di divisione corrente.

BOOL SetSplitStyle(UINT uSplitStyle);

Parametri

uSplitStyle
[in] Combinazione bit per bit di stili pulsante di divisione. Per altre informazioni, vedere il uSplitStyle membro della struttura BUTTON_SPLITINFO .

Valore restituito

TRUE se questo metodo ha esito positivo; in caso contrario, FALSE.

Osservazioni:

Utilizzare questo metodo solo con i controlli il cui stile del pulsante è BS_SPLITBUTTON o BS_DEFSPLITBUTTON.

Gli stili del pulsante di divisione specificano l'allineamento, le proporzioni e il formato grafico con cui Windows disegna un'icona a forma di pulsante di divisione. Per altre informazioni, vedere il uSplitStyle membro della struttura BUTTON_SPLITINFO .

Questo metodo inizializza il mask membro di una struttura BUTTON_SPLITINFO con il flag BCSIF_STYLE e il membro con il uSplitStyle parametro uSplitStyle e quindi invia tale struttura nel messaggio BCM_GETSPLITINFO descritto in Windows SDK.

Esempio

Il primo esempio di codice definisce la variabile , m_splitButton, usata per accedere a livello di codice al controllo pulsante di divisione.

public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;

Nell'esempio di codice seguente viene impostato lo stile della freccia a discesa del pulsante di divisione. Lo stile BCSS_ALIGNLEFT visualizza la freccia sul lato sinistro del pulsante e lo stile BCSS_STRETCH mantiene le proporzioni della freccia a discesa quando si ridimensiona il pulsante.

/* 
    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

Imposta un valore che indica se un controllo pulsante è evidenziato o meno.

void SetState(BOOL bHighlight);

Parametri

bHighlight
Specifica se il pulsante deve essere evidenziato. Un valore diverso da zero evidenzia il pulsante; un valore 0 rimuove qualsiasi evidenziazione.

Osservazioni:

L'evidenziazione influisce sull'esterno di un controllo pulsante. Non ha alcun effetto sullo stato di controllo di un pulsante di opzione o di una casella di controllo.

Un controllo pulsante viene evidenziato automaticamente quando l'utente fa clic e tiene premuto il pulsante sinistro del mouse. L'evidenziazione viene rimossa quando l'utente rilascia il pulsante del mouse.

Esempio

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

Chiamare questo metodo per impostare il margine di testo dell'oggetto CButton .

BOOL SetTextMargin(RECT* pmargin);

Parametri

pmargin
Puntatore al nuovo margine di testo.

Valore restituito

Restituisce TRUE in caso di esito positivo, FALSE in caso di errore.

Osservazioni:

Questa funzione membro emula la funzionalità del messaggio di BCM_SETTEXTMARGIN, come descritto nella sezione Pulsanti di Windows SDK.

Vedi anche

Classe CWnd
Grafico della gerarchia
Classe CWnd
Classe CComboBox
Classe CEdit
Classe CListBox
Classe CScrollBar
Classe CStatic
Classe CBitmapButton
Classe CDialog