按鈕樣式

指定按鈕樣式的組合。 如果您使用 BUTTON 類別搭配 CreateWindowCreateWindowEx 函式來建立按鈕,您可以指定下列任何按鈕樣式。

範例

HRESULT Button::CreateText(HWND hParent, const TCHAR *szCaption, int nID, 
                               const Rect& rcBound)
{
    CREATESTRUCT create;
	ZeroMemory(&create, sizeof(CREATESTRUCT));

    create.x = rcBound.left;
    create.y = rcBound.top;
    create.cx = rcBound.right - create.x;
    create.cy = rcBound.bottom - create.y;

    create.hwndParent = hParent;
    create.lpszName = szCaption;
    create.hMenu = (HMENU)(INT_PTR)nID;
    create.lpszClass = TEXT("BUTTON");
    create.style = BS_PUSHBUTTON | BS_FLAT;
    return Control::Create(create);
}

GitHub 上的 Windows 傳統範例

常數

常數 描述
BS_3STATE
建立與核取方塊相同的按鈕,但方塊可以呈現灰色,並核取或清除。 使用灰色狀態來顯示覆選框的狀態未決定。
BS_AUTO3STATE
建立與三狀態核取方塊相同的按鈕,不同之處在于當使用者選取該按鈕時,方塊會變更其狀態。 狀態會迴圈查看已檢查、不確定和清除。
BS_AUTOCHECKBOX
建立與核取方塊相同的按鈕,不同之處在于每次使用者選取核取方塊時,核取方塊狀態會自動在核取和清除之間切換。
BS_AUTORADIOBUTTON
建立與選項按鈕相同的按鈕,不同之處在于當使用者選取按鈕時,系統會自動將按鈕的核取狀態設定為已核取,並自動設定相同群組中所有其他按鈕的檢查狀態以清除。
BS_BITMAP
指定按鈕顯示點陣圖。 如需與BS_ICON的互動,請參閱一節。
BS_BOTTOM
將文字放在按鈕矩形的底部。
BS_CENTER
在按鈕矩形中水準置中文字。
BS_CHECKBOX
建立含有文字的小型空白核取方塊。 根據預設,文字會顯示在核取方塊右邊。 若要顯示覆選框左邊的文字,請將此旗標與BS_LEFTTEXT樣式 (或對等的BS_RIGHTBUTTON樣式) 結合。
BS_COMMANDLINK
建立類似BS_PUSHBUTTON樣式按鈕的命令連結按鈕,但命令連結按鈕在左側有綠色箭號指向按鈕文字。 按鈕文字的標題可以藉由將BCM_SETNOTE訊息傳送至按鈕來設定。
BS_DEFCOMMANDLINK
建立類似BS_PUSHBUTTON樣式按鈕的命令連結按鈕。 如果按鈕位於對話方塊中,使用者只要按下 ENTER 鍵即可選取命令連結按鈕,即使命令連結按鈕沒有輸入焦點也一樣。 此樣式適用于讓使用者快速選取最可能 (預設) 選項。
BS_DEFPUSHBUTTON
建立像BS_PUSHBUTTON樣式按鈕一樣的行為按鈕,但外觀不同。 如果按鈕位於對話方塊中,即使按鈕沒有輸入焦點,使用者仍可按 ENTER 鍵來選取按鈕。 此樣式適用于讓使用者快速選取最可能 (預設) 選項。
BS_DEFSPLITBUTTON
建立類似BS_PUSHBUTTON樣式按鈕的分割按鈕,但也具有獨特的外觀。 如果分割按鈕位於對話方塊中,使用者只要按下 ENTER 鍵即可選取分割按鈕,即使分割按鈕沒有輸入焦點也一樣。 此樣式適用于讓使用者快速選取最可能 (預設) 選項。
BS_GROUPBOX
建立可分組其他控制項的矩形。 與這個樣式相關聯的任何文字都會顯示在矩形的左上角。
BS_ICON
指定按鈕顯示圖示。 如需與BS_BITMAP的互動,請參閱一節。
BS_FLAT
指定按鈕為二維;它不會使用預設網底來建立 3D 影像。
BS_LEFT
靠左對齊按鈕矩形中的文字。 不過,如果按鈕是沒有BS_RIGHTBUTTON樣式的核取方塊或選項按鈕,則文字會靠左對齊核取方塊或選項按鈕的右邊。
BS_LEFTTEXT
與選項按鈕或核取方塊樣式結合時,將文字放在選項按鈕或核取方塊的左側。 與BS_RIGHTBUTTON樣式相同。
BS_MULTILINE
如果文字字串太長而無法放入按鈕矩形中的單行,則會將按鈕文字換行成多行。
BS_NOTIFY
可讓按鈕將 BN_KILLFOCUSBN_SETFOCUS 通知碼傳送至其父視窗。
請注意,不論按鈕是否具有此樣式,按鈕都會傳送 BN_CLICKED 通知程式碼。 若要取得 BN_DBLCLK 通知代碼,按鈕必須具有BS_RADIOBUTTON或BS_OWNERDRAW樣式。
BS_OWNERDRAW
建立擁有者繪製的按鈕。 當按鈕的視覺層面變更時,擁有者視窗會收到 WM_DRAWITEM 訊息。 請勿將BS_OWNERDRAW樣式與其他任何按鈕樣式結合。
BS_PUSHBUTTON
建立一個按鈕,當使用者選取按鈕時,會將 WM_COMMAND 訊息張貼至擁有者視窗。
BS_PUSHLIKE
讓按鈕 (例如核取方塊、三狀態核取方塊或選項按鈕,) 看起來就像一個按鈕。 按鈕會在未推送或核取時引發,並在按下或核取按鈕時關閉。
BS_RADIOBUTTON
建立含有文字的小型圓形。 根據預設,文字會顯示在圓形右邊。 若要顯示圓形左邊的文字,請將此旗標與BS_LEFTTEXT樣式 (或對等的BS_RIGHTBUTTON樣式) 結合。 針對相關群組使用選項按鈕,但互斥的選項。
BS_RIGHT
靠右對齊按鈕矩形中的文字。 不過,如果按鈕是沒有BS_RIGHTBUTTON樣式的核取方塊或選項按鈕,則文字會靠右對齊核取方塊或選項按鈕的右側。
BS_RIGHTBUTTON
將選項按鈕的圓形或核取方塊的正方形放置在按鈕矩形的右側。 與BS_LEFTTEXT樣式相同。
BS_SPLITBUTTON
建立分割按鈕。 分割按鈕有下拉式箭號。
BS_TEXT
指定按鈕顯示文字。
BS_TOP
將文字放在按鈕矩形的頂端。
BS_TYPEMASK
請勿使用此樣式。 複合樣式位,其結果為在 BS_* 樣式位上使用 OR 運算子。 它可用來遮罩來自指定位元遮罩的有效BS_* 位。 請注意,這已過期,且未正確包含所有有效的樣式。 因此,您不應該使用此樣式。
BS_USERBUTTON
已過時,但提供與 16 位版本的 Windows 相容。 應用程式應該改用BS_OWNERDRAW。
BS_VCENTER
將文字放在按鈕矩形的中間 (垂直) 。

備註

如需主體按鈕樣式的圖例,例如BS_CHECKBOX和BS_GROUPBOX,請參閱 按鈕類型

文字或圖示或按鈕控制項上的外觀取決於BS_ICON和BS_BITMAP樣式,以及是否傳送 BM_SETIMAGE 訊息。 可能的結果如下所示。

BS_ICON或BS_BITMAP集? BM_SETIMAGE呼叫? 結果
僅顯示圖示。
顯示圖示和文字。
僅顯示文字。
僅顯示文字

規格需求

需求
標頭
Winuser.h