共用方式為


CButton 類別

提供 Windows 按鈕控制項的功能。

語法

class CButton : public CWnd

成員

公用建構函式

名稱 描述
CButton::CButton 建構 CButton 物件。

公用方法

名稱 描述
CButton::Create 建立 Windows 按鈕控制件,並將它附加至 CButton 物件。
CButton::D rawItem 覆寫以繪製擁有者繪製 CButton 的物件。
CButton::GetBitmap 擷取先前使用 SetBitmap 設定之點陣圖的句柄。
CButton::GetButtonStyle 擷取按鈕控件樣式的相關信息。
CButton::GetCheck 擷取按鈕控件的檢查狀態。
CButton::GetCursor 擷取先前以 SetCursor 設定的數據指標影像句柄。
CButton::GetIcon 擷取先前使用 SetIcon 設定之圖示的句柄。
CButton::GetIdealSize 擷取按鈕控件的理想大小。
CButton::GetImageList 擷取按鈕控件的影像清單。
CButton::GetNote 擷取目前命令連結控制元件的附註元件。
CButton::GetNoteLength 擷取目前命令連結控制的記事文字長度。
CButton::GetSplitGlyph 擷取與目前分割按鈕控件相關聯的圖像。
CButton::GetSplitImageList 擷取目前分割按鈕控制件的影像清單。
CButton::GetSplitInfo 擷取定義目前分割按鈕控制件的資訊。
CButton::GetSplitSize 擷取目前分割按鈕控制項下拉式元件的周框。
CButton::GetSplitStyle 擷取定義目前分割按鈕控制件的分割按鈕樣式。
CButton::GetState 擷取按鈕控件的檢查狀態、反白顯示狀態和焦點狀態。
CButton::GetTextMargin 擷取按鈕控件的文字邊界。
CButton::SetBitmap 指定要顯示在按鈕上的點陣圖。
CButton::SetButtonStyle 變更按鈕的樣式。
CButton::SetCheck 設定按鈕控制件的檢查狀態。
CButton::SetCursor 指定要顯示在按鈕上的游標影像。
CButton::SetDropDownState 設定目前分割按鈕控制件的下拉式清單狀態。
CButton::SetIcon 指定要顯示在按鈕上的圖示。
CButton::SetImageList 設定按鈕控制件的影像清單。
CButton::SetNote 設定目前命令連結控制件上的附註。
CButton::SetSplitGlyph 將指定的圖像與目前的分割按鈕控制件產生關聯。
CButton::SetSplitImageList 將影像清單與目前的分割按鈕控制件產生關聯。
CButton::SetSplitInfo 指定定義目前分割按鈕控制件的資訊。
CButton::SetSplitSize 設定目前分割按鈕控制件下拉式元件的周框。
CButton::SetSplitStyle 設定目前分割按鈕控制件的樣式。
CButton::SetState 設定按鈕控制件的醒目提示狀態。
CButton::SetTextMargin 設定按鈕控制件的文字邊界。

備註

按鈕控制件是可按兩下和關閉的小型矩形子視窗。 按鈕可以單獨使用或在群組中使用,而且可以標示或顯示沒有文字。 當使用者按鍵時,按鈕通常會變更外觀。

一般按鈕是複選框、單選按鈕和按鈕。 CButton對象可以根據 Create 成員函式在初始化時指定的按鈕樣式成為其中任何一個物件。

此外,衍生自 CButtonCBitmapButton 類別支援建立以點陣圖影像標示的按鈕控件,而不是文字。 CBitmapButton可以針對按鈕的向上、向下、焦點和停用狀態,有個別的位圖。

您可以從對話框範本或直接在程式碼中建立按鈕控制件。 在這兩種情況下,請先呼叫建構函式 CButton 來建構 CButton 物件;然後呼叫 Create 成員函式來建立 Windows 按鈕控件,並將它附加至 CButton 物件。

建構可以是衍生自 CButton的類別中的一個步驟程式。 撰寫衍生類別的建構函式,並從建構函式內呼叫 Create

如果您想要處理按鈕控制項傳送至其父系的 Windows 通知訊息(通常是衍生自 CDialog 的類別),請將訊息對應專案和訊息處理程式成員函式新增至每個訊息的父類別。

每個訊息對應項目採用下列格式:

ON_Notification idmemberFxn

其中 id 會指定傳送通知之控件的子視窗識別碼,而 memberFxn 是您用來處理通知的父成員函式名稱。

父系的函式原型如下所示:

afx_msg void memberFxn();

潛在的訊息對應專案如下所示:

對應項目 傳送至父系時...
ON_BN_CLICKED 用戶按下按鈕。
ON_BN_DOUBLECLICKED 用戶按兩下按鈕。

如果您從對話資源建立 CButton 物件,當使用者關閉對話框時, CButton 就會自動終結物件。

如果您在視窗中建立 CButton 物件,您可能需要終結它。 如果您使用函式在堆積new上建立 CButton 物件,則必須在使用者關閉 Windows 按鈕控制件時呼叫 delete 物件來終結它。 如果您在堆疊上建立 CButton 物件,或它內嵌在父對話物件中,它會自動終結。

繼承階層架構

CObject

CCmdTarget

CWnd

CButton

需求

標題: afxwin.h

CButton::CButton

建構 CButton 物件。

CButton();

範例

// Declare a button object.
CButton myButton;

CButton::Create

建立 Windows 按鈕控制件,並將它附加至 CButton 物件。

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

參數

lpszCaption
指定按鈕控制件的文字。

dwStyle
指定按鈕控制件的樣式。 將按鈕樣式的任何組合套用至按鈕。

rect
指定按鈕控制件的大小和位置。 它可以是 CRect 對象或 RECT 結構。

pParentWnd
指定按鈕控制件的父視窗,通常是 CDialog。 它不得為 NULL。

nID
指定按鈕控制件的識別碼。

傳回值

如果成功則為非零;否則為 0。

備註

您會在兩個步驟中建構 CButton 物件。 首先,呼叫 建構函式,然後呼叫 Create,這會建立 Windows 按鈕控件並將它附加至 CButton 物件。

如果指定WS_VISIBLE樣式,Windows 會傳送按鈕控件,以啟動並顯示按鈕所需的所有訊息。

將下列 視窗樣式 套用至按鈕控制項:

  • WS_CHILD Always

  • 通常WS_VISIBLE

  • 很少WS_DISABLED

  • WS_GROUP群組控件

  • WS_TABSTOP 在索引標籤順序中包含按鈕

範例

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

當擁有者繪製按鈕的視覺層面已變更時,由架構呼叫。

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

參數

lpDrawItemStruct
DRAWITEMSTRUCT 結構的長指標。 結構包含要繪製之專案的相關信息,以及所需的繪圖類型。

備註

擁有者繪製的按鈕具有BS_OWNERDRAW樣式集。 覆寫這個成員函式,以實作擁有者繪製對象的繪圖 CButton 。 應用程式應該在成員函式終止之前,還原針對 lpDrawItemStruct提供的顯示內容選取的所有圖形裝置介面 (GDI) 物件。

另請參閱 BS_ 樣式值。

範例

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

呼叫這個成員函式,以取得先前使用 SetBitmap 設定的點陣圖句柄,該點陣圖與按鈕相關聯。

HBITMAP GetBitmap() const;

傳回值

點陣圖的句柄。 如果先前未指定位圖,則為 NULL。

範例

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

擷取按鈕控件樣式的相關信息。

UINT GetButtonStyle() const;

傳回值

傳回這個 CButton 物件的按鈕樣式。 此函式只會 傳回BS_ 樣式值,而不是任何其他窗口樣式。

範例

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

擷取單選按鈕或複選框的核取狀態。

int GetCheck() const;

傳回值

使用BS_AUTOCHECKBOX、BS_AUTORADIOBUTTON、BS_AUTO3STATE、BS_CHECKBOX、BS_RADIOBUTTON或BS_3STATE樣式建立之按鈕控件的傳回值是下列其中一個值:

意義
BST_UNCHECKED 未核取按鈕狀態。
BST_CHECKED 已核取按鈕狀態。
BST_INDETERMINATE 按鈕狀態不確定(只有在按鈕具有BS_3STATE或BS_AUTO3STATE樣式時才適用)。

如果按鈕具有任何其他樣式,則傳回值會BST_UNCHECKED。

範例

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

呼叫這個成員函式,以取得先前以 SetCursor 設定的游標句柄,該句柄與按鈕相關聯。

HCURSOR GetCursor();

傳回值

游標影像的句柄。 如果先前未指定任何數據指標,則為 NULL。

範例

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

呼叫這個成員函式以取得先前以 SetIcon 設定的圖示句柄,該圖示與按鈕相關聯。

HICON GetIcon() const;

傳回值

圖示的句柄。 如果未指定任何圖示,則為 NULL。

範例

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

擷取按鈕控件的理想大小。

BOOL GetIdealSize(SIZE* psize);

參數

psize
按鈕目前大小的指標。

傳回值

如果成功則為非零;否則為 0。

備註

此成員函式會模擬BCM_GETIDEALSIZE訊息的功能,如 Windows SDK 的 Buttons 區段所述

CButton::GetImageList

呼叫此方法以從按鈕控制項取得影像清單。

BOOL GetImageList(PBUTTON_IMAGELIST pbuttonImagelist);

參數

pbuttonImagelist
物件的影像清單 CButton 指標。

傳回值

如果成功則為非零;否則為 0。

備註

此成員函式會模擬BCM_GETIMAGELIST訊息的功能,如 Windows SDK 的 Buttons 區段所述

CButton::GetNote

擷取與目前命令連結控件相關聯的記事文字。

CString GetNote() const;

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

參數

lpszNote
[out]緩衝區的指標,呼叫端負責配置和解除分配。 如果傳回值為TRUE,緩衝區會包含與目前命令連結控件相關聯的記事文字;否則,緩衝區不會變更。

cchNote
[in, out]不帶正負號整數變數的指標。 呼叫此方法時,變數會包含 lpszNote 參數所指定的緩衝區大小。 當這個方法傳回時,如果傳回值為TRUE,變數會包含與目前命令連結控件相關聯的附註大小。 如果傳回值為 FALSE,變數會包含包含附注所需的緩衝區大小。

傳回值

在第一個 多載中,CString 物件,其中包含與目前命令連結控件相關聯的記事文字。

-或-

在第二個多載中,如果此方法成功,則為TRUE;否則為 FALSE。

備註

只搭配按鈕樣式為BS_COMMANDLINK或BS_DEFCOMMANDLINK的控件使用此方法。

這個方法會 傳送 windows SDK 中所述的BCM_GETNOTE 訊息。

CButton::GetNoteLength

擷取目前命令連結控制的記事文字長度。

UINT GetNoteLength() const;

傳回值

目前命令連結控制件的附註文字長度,以16位Unicode字元為單位。

備註

只搭配按鈕樣式為BS_COMMANDLINK或BS_DEFCOMMANDLINK的控件使用此方法。

此方法會 傳送 windows SDK 中所述的 BCM_GETNOTELENGTH訊息。

CButton::GetSplitGlyph

擷取與目前分割按鈕控件相關聯的圖像。

TCHAR GetSplitGlyph() const;

傳回值

與目前分割按鈕控件相關聯的字元字元。

備註

字元是特定字型中字元的實體表示法。 例如,分割按鈕控件可能會以 Unicode 複選標記字元 (U+2713) 的字元裝飾。

只搭配按鈕樣式為BS_SPLITBUTTON或BS_DEFSPLITBUTTON的控件使用此方法。

這個方法會使用 BCSIF_GLYPH 旗標初始化maskBUTTON_SPLITINFO結構的成員,然後在 Windows SDK 中所述的BCM_GETSPLITINFO訊息中傳送該結構。 當訊息函式傳回時,這個方法會從 himlGlyph 結構的成員擷取圖像。

CButton::GetSplitImageList

擷取目前分割按鈕控制件的影像清單

CImageList* GetSplitImageList() const;

傳回值

CImageList 物件的指標

備註

只搭配按鈕樣式為BS_SPLITBUTTON或BS_DEFSPLITBUTTON的控件使用此方法。

這個方法會使用 BCSIF_IMAGE 旗標初始化 mask BUTTON_SPLITINFO 結構的成員,然後在 Windows SDK 中所述的BCM_GETSPLITINFO訊息中傳送該結構。 當訊息函式傳回時,這個方法會從 himlGlyph 結構的成員擷取影像清單。

CButton::GetSplitInfo

擷取參數,判斷 Windows 如何繪製目前的分割按鈕控件。

BOOL GetSplitInfo(PBUTTON_SPLITINFO pInfo) const;

參數

pInfo
[out] BUTTON_SPLITINFO 結構的指標,這個結構會接收目前分割按鈕控件的相關信息。 呼叫端負責配置 結構。

傳回值

如果此方法成功,則為TRUE;否則為 FALSE。

備註

只搭配按鈕樣式為BS_SPLITBUTTON或BS_DEFSPLITBUTTON的控件使用此方法。

此方法會 傳送 windows SDK 中所述的 BCM_GETSPLITINFO訊息。

CButton::GetSplitSize

擷取目前分割按鈕控制項下拉式元件的周框。

BOOL GetSplitSize(LPSIZE pSize) const;

參數

pSize
[out] 接收矩形描述之 SIZE 結構的指標。

傳回值

如果此方法成功,則為TRUE;否則為 FALSE。

備註

只搭配按鈕樣式為BS_SPLITBUTTON或BS_DEFSPLITBUTTON的控件使用此方法。

展開分割按鈕控制項時,它可以顯示下拉式元件,例如清單控制件或呼叫器控制件。 這個方法會擷取包含下拉式元件的周框。

這個方法會使用 BCSIF_SIZE 旗標初始化 mask BUTTON_SPLITINFO 結構的成員,然後在 Windows SDK 中所述的BCM_GETSPLITINFO訊息中傳送該結構。 當訊息函式傳回時,這個方法會從 size 結構的成員擷取周框。

CButton::GetSplitStyle

擷取定義目前分割按鈕控制件的分割按鈕樣式。

UINT GetSplitStyle() const;

傳回值

分割按鈕樣式的位元組合。 如需詳細資訊,請參閱 uSplitStyle BUTTON_SPLITINFO 結構的成員

備註

只搭配按鈕樣式為BS_SPLITBUTTON或BS_DEFSPLITBUTTON的控件使用此方法。

分割按鈕樣式會指定 Windows 繪製分割按鈕圖示的對齊、外觀比例和圖形化格式。

這個方法會使用 BCSIF_STYLE 旗標初始化maskBUTTON_SPLITINFO結構的成員,然後在 Windows SDK 中所述的BCM_GETSPLITINFO訊息中傳送該結構。 當訊息函式傳回時,這個方法會從 uSplitStyle 結構的成員擷取分割按鈕樣式。

CButton::GetState

擷取按鈕控件的狀態。

UINT GetState() const;

傳回值

位欄位欄位,包含值的組合,表示按鈕控制件的目前狀態。 下表列出可能的值。

按鈕狀態 Description
BST_UNCHECKED 0x0000 初始狀態。
BST_CHECKED 0x0001 已檢查按鈕控制件。
BST_INDETERMINATE 0x0002 狀態不確定(只有在按鈕控件有三種狀態時才可能)。
BST_PUSHED 0x0004 按下按鈕控制件。
BST_FOCUS 0x0008 按鈕控制件具有焦點。

備註

具有BS_3STATE或BS_AUTO3STATE按鈕樣式的按鈕控件會建立具有第三個狀態為不確定狀態的複選框。 不確定狀態表示複選框不會核取或未核取。

範例

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

呼叫這個方法以取得 物件的文字邊界 CButton

BOOL GetTextMargin(RECT* pmargin);

參數

pmargin
物件的文字邊界 CButton 指標。

傳回值

傳回文字邊界。 如果成功則為非零;否則為 0。

備註

此成員函式會模擬BCM_GETTEXTMARGIN訊息的功能,如 Windows SDK 的 Buttons 區段所述

CButton::SetBitmap

呼叫這個成員函式,以將新的點陣圖與按鈕產生關聯。

HBITMAP SetBitmap(HBITMAP hBitmap);

參數

hBitmap
點陣圖的句柄。

傳回值

先前與按鈕相關聯的點陣圖句柄。

備註

根據預設,位圖會自動放在按鈕的臉上。 如果點圖對按鈕太大,則會在任一端裁剪。 您可以選擇其他對齊選項,包括下列專案:

  • BS_TOP

  • BS_LEFT

  • BS_RIGHT

  • BS_CENTER

  • BS_BOTTOM

  • BS_VCENTER

不同於 每個按鈕使用四個點陣圖的 CBitmapButtonSetBitmap 每個按鈕只會使用一個點陣圖。 按下按鈕時,點陣陣圖會顯示向下和向右移位。

當您完成點陣圖時,您必須負責釋放位圖。

範例

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

變更按鈕的樣式。

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

參數

nStyle
指定 按鈕樣式

bRedraw
指定是否要重新繪製按鈕。 非零值會重新繪製按鈕。 0 值不會重新繪製按鈕。 按鈕預設會重新繪製。

備註

GetButtonStyle使用成員函式來擷取按鈕樣式。 完整按鈕樣式的低序單字是按鈕特定樣式。

範例

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

設定或重設單選按鈕或複選框的核取狀態。

void SetCheck(int nCheck);

參數

nCheck
指定檢查狀態。 此參數可以是下列其中一項:

意義
BST_UNCHECKED 將按鈕狀態設定為未核取。
BST_CHECKED 將按鈕狀態設定為已核取。
BST_INDETERMINATE 將按鈕狀態設定為不確定。 只有當按鈕具有BS_3STATE或BS_AUTO3STATE樣式時,才能使用此值。

備註

此成員函式對按鈕沒有任何作用。

範例

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

呼叫這個成員函式,以將新的游標與按鈕產生關聯。

HCURSOR SetCursor(HCURSOR hCursor);

參數

hCursor
數據指標的句柄。

傳回值

先前與按鈕相關聯的游標句柄。

備註

根據預設,游標會自動放在按鈕的臉部上。 如果游標對按鈕太大,則會在任一端剪下。 您可以選擇其他對齊選項,包括下列專案:

  • BS_TOP

  • BS_LEFT

  • BS_RIGHT

  • BS_CENTER

  • BS_BOTTOM

  • BS_VCENTER

不同於 每個按鈕使用四個點陣圖的 CBitmapButtonSetCursor 每個按鈕只會使用一個游標。 按下按鈕時,游標會顯示為向下和向右移位。

範例

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

設定目前分割按鈕控制件的下拉式清單狀態。

BOOL SetDropDownState(BOOL fDropDown);

參數

fDropDown
[in]TRUE 可設定BST_DROPDOWNPUSHED狀態;否則為 FALSE。

傳回值

如果此方法成功,則為TRUE;否則為 FALSE。

備註

分割按鈕控制項具有BS_SPLITBUTTON或BS_DEFSPLITBUTTON樣式,由按鈕和向右下拉箭號組成。 如需詳細資訊,請參閱 按鈕樣式。 當使用者按兩下拉式箭號時,通常會設定下拉式清單狀態。 使用此方法以程式設計方式設定控制件的下拉式清單狀態。 下拉箭號會繪製陰影來表示狀態。

這個方法會 傳送 windows SDK 中所述的BCM_SETDROPDOWNSTATE 訊息。

範例

第一個程式代碼範例會定義變數 ,該變數 m_splitButton用來以程式設計方式存取分割按鈕控制件。 下列範例會使用此變數。

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

下一個程式代碼範例會設定分割按鈕控制項的狀態,以指出下拉箭號已推送。

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

將目前按鈕控制件的狀態設定為 elevation required,這是控件顯示提高安全性圖示的必要狀態。

BOOL SetElevationRequired(BOOL fElevationRequired);

參數

fElevationRequired
[in]TRUE 表示設定 elevation required 狀態,否則為 FALSE。

傳回值

如果此方法成功,則為TRUE;否則為 FALSE。

備註

如果按鈕或命令連結控制項需要提高的安全性許可權來執行動作,請將控件設定為 elevation required 狀態。 接著,Windows 會在控件上顯示用戶帳戶控制 (UAC) 盾牌圖示。 如需詳細資訊,請參閱使用者帳戶控制

這個方法會 傳送 windows SDK 中所述的BCM_SETSHIELD 訊息。

CButton::SetIcon

呼叫此成員函式,以將新圖示與按鈕產生關聯。

HICON SetIcon(HICON hIcon);

參數

hIcon
圖示的句柄。

傳回值

先前與按鈕相關聯的圖示句柄。

備註

根據預設,圖示會自動放在按鈕的臉上。 如果圖示對按鈕太大,則會在任一端裁剪。 您可以選擇其他對齊選項,包括下列專案:

  • BS_TOP

  • BS_LEFT

  • BS_RIGHT

  • BS_CENTER

  • BS_BOTTOM

  • BS_VCENTER

不同於 每個按鈕使用四個點陣圖的 CBitmapButtonSetIcon 每個按鈕只會使用一個圖示。 按下按鈕時,圖示會顯示向下和向右移位。

範例

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

呼叫此方法以設定 物件的影像清單 CButton

BOOL SetImageList(PBUTTON_IMAGELIST pbuttonImagelist);

參數

pbuttonImagelist
新影像清單的指標。

傳回值

在成功時傳回 TRUE,失敗時傳回 FALSE。

備註

此成員函式會模擬BCM_SETIMAGELIST訊息的功能,如 Windows SDK 的 Buttons 區段所述

CButton::SetNote

設定目前命令連結控制件的記事文字。

BOOL SetNote(LPCTSTR lpszNote);

參數

lpszNote
[in]Unicode 字串的指標,該字串設定為命令連結控制的記事文字。

傳回值

如果此方法成功,則為TRUE;否則為 FALSE。

備註

只搭配按鈕樣式為BS_COMMANDLINK或BS_DEFCOMMANDLINK的控件使用此方法。

這個方法會傳送 windows SDK 中所述的BCM_SETNOTE 訊息。

範例

第一個程式代碼範例會定義 用來以程式設計方式存取命令連結控件的變數 m_cmdLink。 下列範例會使用此變數。

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

下一個程式代碼範例會設定命令連結控制件的記事文字。

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

CButton::SetSplitGlyph

將指定的圖像與目前的分割按鈕控制件產生關聯。

BOOL SetSplitGlyph(TCHAR chGlyph);

參數

chGlyph
[in]字元,指定要作為分割按鈕下拉式箭號使用的字元。

傳回值

如果此方法成功,則為TRUE;否則為 FALSE。

備註

只搭配按鈕樣式BS_SPLITBUTTON或BS_DEFSPLITBUTTON的控件使用此方法。

字元是特定字型中字元的實體表示法。 chGlyph 參數不會當做圖像使用,而是用來從一組系統定義的字元中選取圖像。 默認下拉式箭號圖像是由字元 『6』 指定,類似於 Unicode 字元黑色向下指向三角形 (U+25BC)。

這個方法會mask使用 BCSIF_GLYPH 旗標和 himlGlyph chGlyph 參數,初始化 BUTTON_SPLITINFO 結構的成員,然後在 Windows SDK 中所述的BCM_GETSPLITINFO訊息中傳送該結構。

CButton::SetSplitImageList

影像清單 與目前的分割按鈕控制件產生關聯。

BOOL SetSplitImageList(CImageList* pSplitImageList);

參數

pSplitImageList
[in] 要指派給目前分割按鈕控件之 CImageList 物件的指標。

傳回值

如果此方法成功,則為TRUE;否則為 FALSE。

備註

只搭配按鈕樣式為BS_SPLITBUTTON或BS_DEFSPLITBUTTON的控件使用此方法。

這個方法會使用 BCSIF_IMAGE 旗標和具有 pSplitImageList 參數的成員,初始化 mask BUTTON_SPLITINFO 結構的成員,然後在 Windows SDK 中所述的BCM_GETSPLITINFO訊息中傳送該結構。himlGlyph

CButton::SetSplitInfo

指定參數,決定 Windows 繪製目前分割按鈕控件的方式。

BOOL SetSplitInfo(PBUTTON_SPLITINFO pInfo);

參數

pInfo
[in] 定義目前分割按鈕控件之BUTTON_SPLITINFO 結構的指標。

傳回值

如果此方法成功,則為TRUE;否則為 FALSE。

備註

只搭配按鈕樣式為BS_SPLITBUTTON或BS_DEFSPLITBUTTON的控件使用此方法。

此方法會 傳送 windows SDK 中所述的 BCM_SETSPLITINFO訊息。

範例

第一個程式代碼範例會定義變數 ,該變數 m_splitButton用來以程式設計方式存取分割按鈕控制件。

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

下一個程式代碼範例會變更用於分割按鈕下拉式箭號的字元。 此範例會取代預設下指三角形圖像的上指三角形圖像。 顯示的字元取決於您在 結構成員BUTTON_SPLITINFO中指定的himlGlyph字元。 下指三角形圖像是由字元 『6』 指定,而上指的三角形圖像是由字元 『5』 指定。 如需比較,請參閱便利方法 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

設定目前分割按鈕控制件下拉式元件的周框。

BOOL SetSplitSize(LPSIZE pSize);

參數

pSize
[in] 描述周框之 SIZE 結構的指標。

傳回值

如果此方法成功,則為TRUE;否則為 FALSE。

備註

只搭配按鈕樣式為BS_SPLITBUTTON或BS_DEFSPLITBUTTON的控件使用此方法。

展開分割按鈕控制項時,它可以顯示下拉式元件,例如清單控制件或呼叫器控制件。 這個方法會指定包含下拉式元件的周框大小。

這個方法會使用 BCSIF_SIZE 旗標和size具有 pSize 參數的成員,初始化 mask BUTTON_SPLITINFO 結構的成員,然後在 Windows SDK 中所述的BCM_GETSPLITINFO訊息中傳送該結構。

範例

第一個程式代碼範例會定義變數 ,該變數 m_splitButton用來以程式設計方式存取分割按鈕控制件。 下列範例會使用此變數。

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

下一個程式代碼範例會將分割按鈕下拉式箭號的大小加倍。

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

設定目前分割按鈕控制件的樣式。

BOOL SetSplitStyle(UINT uSplitStyle);

參數

uSplitStyle
[in]分割按鈕樣式的位元組合。 如需詳細資訊,請參閱 uSplitStyle BUTTON_SPLITINFO 結構的成員

傳回值

如果此方法成功,則為TRUE;否則為 FALSE。

備註

只搭配按鈕樣式為BS_SPLITBUTTON或BS_DEFSPLITBUTTON的控件使用此方法。

分割按鈕樣式會指定 Windows 繪製分割按鈕圖示的對齊、外觀比例和圖形化格式。 如需詳細資訊,請參閱 uSplitStyle BUTTON_SPLITINFO 結構的成員

這個方法會使用 BCSIF_STYLE 旗標和具有 uSplitStyle 參數的成員,初始化maskBUTTON_SPLITINFO結構的成員,然後在 Windows SDK 中所述的BCM_GETSPLITINFO訊息中傳送該結構。uSplitStyle

範例

第一個程式代碼範例會定義變數 ,該變數 m_splitButton用來以程式設計方式存取分割按鈕控制件。

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

下一個程式代碼範例會設定分割按鈕下拉式箭號的樣式。 BCSS_ALIGNLEFT樣式會顯示按鈕左側的箭號,而當您調整按鈕大小時,BCSS_STRETCH樣式會保留下拉箭號的比例。

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

設定是否反白顯示按鈕控制件。

void SetState(BOOL bHighlight);

參數

bHighlight
指定是否要反白顯示按鈕。 非零值會反白顯示按鈕;0 值會移除任何反白顯示。

備註

醒目提示會影響按鈕控件的外部。 它不會影響單選按鈕或複選框的核取狀態。

當使用者按住滑鼠左鍵時,會自動反白顯示按鈕控制件。 當使用者放開滑鼠按鈕時,會移除醒目提示。

範例

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

呼叫這個方法以設定 物件的文字邊界 CButton

BOOL SetTextMargin(RECT* pmargin);

參數

pmargin
新文字邊界的指標。

傳回值

在成功時傳回 TRUE,失敗時傳回 FALSE。

備註

此成員函式會模擬BCM_SETTEXTMARGIN訊息的功能,如 Windows SDK 的 Buttons 區段所述

另請參閱

CWnd 類別
階層架構圖表
CWnd 類別
CComboBox 類別
CEdit 類別
CListBox 類別
CScrollBar 類別
CStatic 類別
CBitmapButton 類別
CDialog 類別