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