zoukankan      html  css  js  c++  java
  • MFC CButtonST 在你的程序中如何使用CButtonST类

    http://www.vckbase.com/module/articleContent.php?id=1135

    首先在你的工程中加入如下文件:

    1
    2
    BtnST.h
    BtnST.cpp

    从v3.5版本开始,CButtonST支持使用BCMenu类创建菜单。为了能够使用BCMenu,你必须在 BtnST.h中加入下面二行:

    1
    2
    #define BTNST_USE_BCMENU
    #include "BCMenu.h"

    当然,你也必须在你的工程文件中加入下面的头文件:

    1
    2
    BCMenu.h
    BCMenu.cpp

    注意:当 BCMenu 使参数可用时,与用SetNenu的方法是不同的! 从v3.6版本开始, CbuttonST可以在特殊的按钮播放声音。为了能够让它播放声音要在 BtnST.h 中加入:

    1
    #define BTNST_USE_SOUND

    这样是为了使用SetSound 方法。用静态方法创建一个 CButtonST 用对话框编辑器中建一个标准的button,例如IDOK(你不需在自己动手创建),你可以用一个变量来创建这个button:

    1
    CButtonST m_btnOk;

    现在你可以把这个 button 和 CbuttonST 连接在一起。在你的基于对话框的程序,在OnInitDialog:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Call the base-class method
    CDialog::OnInitDialog();
     
    // Create the IDOK button
    m_btnOk.SubclassDlgItem(IDOK, this);
    Or in your DoDataExchange:
    // Call the base method
    CDialog::DoDataExchange(pDX);
     
    // Create the IDOK button
    DDX_Control(pDX, IDOK, m_btnOk);

    用动态方法创建一个CButtonST 在人的程序中,为button创建一个变量。注意,这个变量的类型是指针:

    1
    CButtonST* m_pbtnOk;

    现在创建button。在你的基于对话框的程序,在OnInitDialog:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Call the base-class method
    CDialog::OnInitDialog();
     
    // Create the IDOK button
    m_pbtnOk = new CButtonST;
    m_pbtnOk->Create(_T("&Ok"),
                        WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP,
                        CRect(10, 10, 200, 100), this, IDOK);
    // Set the same font of the application
    m_pbtnOk->SetFont(GetFont());

    记住销毁这个指针,否则将会导致内存泄漏.这个也可以容易的实现,例如,在你的类中销毁它:

    1
    if (m_pbtnOk) delete m_pbtnOk;

    类的方法:

    1
    SetIcon(using multi-size resources)

    给你的button指定图标。任何本来就有的图标或位图将会被删除。

    参数:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    // Parameters:
    //     [IN]   nIconIn
    //            图标资源的ID,当你的鼠标放在按钮上显示该图标.如果为空,则将删除任何图标。
    //     [IN]   nCxDesiredIn
    //           指定加载图标的宽度,像素
    //     [IN]   nCyDesiredIn
    //           指定加载图标的高度,像素
    //     [IN]   nIconOut
    //            图标资源的ID,当你的鼠标在不在按钮内时,显示图标.可以为空.
    //            如果指定这个参数的值为 BTNST_AUTO_GRAY (cast to int)第二个图标将从 nIconIn 自动地创建,
    //            同时改变灰度级.
    //            如果指定这个参数的值为 BTNST_AUTO_DARKER (cast to int)第二个图标将从 nIconIn 自动地创建,
    //            灰度级为它的25%的.
    //     [IN]   nCxDesiredOut
    //           指定加载图标的宽度,像素
    //     [IN]   nCyDesiredOut
    //           指定加载图标的高度,像素
    //
    // 返回值:
    //      BTNST_OK
    //       函数成功执行
    //      BTNST_INVALIDRESOURCE
    //          加载指定资源失败
    //
    DWORD SetIcon(int nIconIn, int nCxDesiredIn, int nCyDesiredIn,
                  int nIconOut = NULL, int nCxDesiredOut = 0, int nCyDesiredOut = 0)
     
     
    SetIcon (using resources)

    给你的button指定图标. 任何本来就有的图标或位图将会被删除.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    // Parameters:
    //     [IN]   nIconIn
    //            图标资源的ID,当你的鼠标放在按钮上显示该图标.如果为空,则将删除任何图标。
    //     [IN]   nIconOut
    //            图标资源的ID,当你的鼠标在不在按钮内时,显示图标.可以为空.
    //            如果指定这个参数的值为 BTNST_AUTO_GRAY (cast to int)第二个图标将从 nIconIn 自动地创建,
    //            同时改变灰度级。如果指定这个参数的值为 BTNST_AUTO_DARKER (cast to int)第二个图标将从
    //            nIconIn 自动地创建,灰度级为它的25%的.
    //返回值:
    //      BTNST_OK
    //        函数成功执行
    //      BTNST_INVALIDRESOURCE
    //          加载指定资源失败
    //
    DWORD SetIcon(int nIconIn, int nIconOut = NULL)
     
     
    SetIcon (using handles)

    给你的button指定图标. 任何本来就有的图标或位图将会被删除.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    // Parameters:
    //     [IN]   hIconIn
    //            图标的句柄,鼠标放在按钮上显示该图标.如果为空,则将删除任何图标。.
    //     [IN]   hIconOut
    //            图标的句柄,当你的鼠标在不在按钮内时,显示图标.可以为空.
    //            如果指定这个参数的值为 BTNST_AUTO_GRAY (cast to int)第二个图标将从 nIconIn 自动地创建,
    //            同时改变灰度级。如果指定这个参数的值为 BTNST_AUTO_DARKER (cast to int)第二个图标将从
                  nIconIn 自动地创建,灰度级为它的25%的.
    //返回值:
    //      BTNST_OK
    //     函数成功执行
    //      BTNST_INVALIDRESOURCE
    //          加载指定资源失败
    //
    DWORD SetIcon(HICON hIconIn, HICON hIconOut = NULL)
     
     
    SetBitmaps (using resources)

    给你的button指定位图. 任何本来就有的图标或位图将会被删除.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    // Parameters:
    //     [IN]   nBitmapIn
    //          位图资源的ID,当你的鼠标放在按钮上显示该位图.如果为空,则将删除任何位图.
    //     [IN]   crTransColorIn
    //            颜色(inside nBitmapIn)将被用于透明色.
    //     [IN]   nBitmapOut
    //           位图资源的ID,当你的鼠标在不在按钮内时,显示位图.可以为空
    //     [IN]   crTransColorOut
    //           颜色(inside nBitmapOut)将被用于透明色.
     
    // 返回值:
    //     BTNST_OK
    //        函数成功执行
    //     BTNST_INVALIDRESOURCE
    //      加载指定资源失败
    //     BTNST_FAILEDMASK
    //        创建mask bitmap失败
    //
    DWORD SetBitmaps(int nBitmapIn,
                     COLORREF crTransColorIn,
                     int nBitmapOut = NULL,
                     COLORREF crTransColorOut = 0)
     
    SetBitmaps (using handles)

    给你的button指定位图. 任何本来就有的图标或位图将会被删除.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    // Parameters:
    //     [IN]   hBitmapIn
    //          位图资源的句柄,当你的鼠标放在按钮上显示该位图.如果为空,则将删除任何位图.
    //     [IN]   crTransColorIn
    //            颜色(inside nBitmapIn)将被用于透明色.
    //     [IN]   hBitmapOut
    //            位图资源的句柄,当你的鼠标在不在按钮内时,显示位图.可以为空
    //     [IN]   crTransColorOut
    //            颜色(inside nBitmapOut)将被用于透明色.
    //
    // 返回值:
    //     BTNST_OK
    //       函数成功执行
    //     BTNST_INVALIDRESOURCE
    //      加载指定资源失败
    //     BTNST_FAILEDMASK
    //        创建mask bitmap失败
    //
    DWORD SetBitmaps(HBITMAP hBitmapIn,
            COLORREF crTransColorIn,
            HBITMAP hBitmapOut = NULL,
            COLORREF crTransColorOut = 0)
     
     
    SetFlat
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    设置button为一个标准平滑的样式 // Parameters:
    //     [IN]   bFlat
    //            如果为TRUE按钮是平滑的样式否则为标准的样式.缺省为TRUE。
    //     [IN]   bRepaint
    //            如果为TRUE 将被重置
    //返回值:
    //     BTNST_OK
    //         函数成功执行
    //
    DWORD SetFlat(BOOL bFlat = TRUE, BOOL bRepaint = TRUE)
     
     
    SetAlign
    设置icon/bitmap各text 之间的绑定方式.
    // Parameters:
    //     [IN]   byAlign
    //            绑定方式.可以是下面的值:
    //            ST_ALIGN_HORIZ          Icon/bitmap 在左, text 在右
    //            ST_ALIGN_VERT           Icon/bitmap 在上, text  在下
    //            ST_ALIGN_HORIZ_RIGHT    Icon/bitmap 在右, text 在左
    //            ST_ALIGN_OVERLAP        Icon/bitmap 和 text 同一位置
    //            缺省为 ST_ALIGN_HORIZ.
    //     [IN]   bRepaint
    //           如果为TRUE 将被重置
    //
    // 返回值:
    //     BTNST_OK
    //        函数成功执行
    //     BTNST_INVALIDALIGN
    //        绑定失败.
    //
    DWORD SetAlign(BYTE byAlign, BOOL bRepaint = TRUE)
     
     
    SetTextAlign

    在text内设置不同的方式

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    // Parameters:
    //     [IN]   byTextAlign
    //            绑定方式.可以是下面的值:
    //            ST_TEXTALIGN_CENTER_VCENTER       水平,垂直,中心
    //            ST_TEXTALIGN_LEFT_VCENTER         靠左,垂直,中心
     
    //            缺省为ST_TEXTALIGN_CENTER_VCENTER
    //            ST_TEXTALIGN_RIGHT_VCENTER        靠右,垂直,中心
    //            但在checkboxes 或 radiobuttons 中缺省为ST_TEXTALIGN_LEFT_VCENTER.
    //     [IN]   bRepaint
    //            如果为TRUE 将被重置
    //
    // 返回值:
    //     BTNST_OK
    //        函数成功执行
    //     BTNST_INVALIDALIGN
    //        绑定失败.
    //
    DWORD SetTextAlign(BYTE byTextAlign, BOOL bRepaint = TRUE)
     
     
    SetPressedStyle

    设置下压方式.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    // Parameters:
    //     [IN]   byStyle
    //           下压方式,可以是下面的值:
    //            BTNST_PRESSED_LEFTRIGHT    从左到右         BTNST_PRESSED_TOPBOTTOM    从上到下
    //            缺省为 BTNST_PRESSED_LEFTRIGHT.
    //     [IN]   bRepaint
    //            如果为TRUE 将被重置
    //
    //返回值:
    //     BTNST_OK
    //       函数成功执行
    //     BTNST_INVALIDPRESSEDSTYLE
    //        下压方式不支持.
    //
    DWORD SetPressedStyle(BYTE byStyle, BOOL bRepaint = TRUE)
     
     
    SetCheck

    设置checkbox状态.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    button 必须是一个 checkbox.
    // Parameters:
    //     [IN]   nCheck
    //            1 表示选中.
    //            0 表示没有选中
    //     [IN]   bRepaint
    //        如果为TRUE 将被重置
    //
    // 返回值:
    //     BTNST_OK
    //       函数成功执行.
    //
    DWORD SetCheck(int nCheck, BOOL bRepaint = TRUE)
     
     
    GetCheck

    返回当前checkbox状态. button 必须是一个 checkbox.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    //返回值:
    //     当前checkbox状态.
    //        1 被选中
    //        0 没有被选中或button不是一个checkbox.
    //
    int GetCheck()
     
     
    SetDefaultColors

    设置缺省颜色值

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Parameters:
    //     [IN]   bRepaint
    //            如果为TRUE 将被重置
    //
    //返回值:
    //     BTNST_OK
    //        函数成功执行
    //
    DWORD SetDefaultColors(BOOL bRepaint = TRUE)
     
     
    SetColor

    设置特殊状态下的颜色值

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    // Parameters:
    //     [IN]   byColorIndex
    //            要设置的颜色值的索引,可以是下面的值:
    //            BTNST_COLOR_BK_IN       鼠标滑过时背景色
    //            BTNST_COLOR_FG_IN       鼠标滑过时文本色      
    //            BTNST_COLOR_BK_OUT      鼠标不在按钮内的背景色
    //            BTNST_COLOR_FG_OUT      鼠标不在按钮内的背景色
    //            BTNST_COLOR_BK_FOCUS    焦点在按钮上,背景色
    //            BTNST_COLOR_FG_FOCUS    焦点在按钮上,文本色
    //     [IN]   crColor
    //            新颜色
    //     [IN]   bRepaint
    //            如果为TRUE 将被重置
    //
    //返回值:
    //     BTNST_OK
    //        函数成功执行.
    //     BTNST_INVALIDINDEX
    //        错误的植.
    //
    DWORD SetColor(BYTE byColorIndex, COLORREF crColor, BOOL bRepaint = TRUE)
     
     
    GetColor

    返回特殊状态下的颜色值.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    // Parameters:
    //     [IN]   byColorIndex
    //            颜色值索引
    //     [OUT]  crpColor
    //            指向想要查询的COLORREF.
    //
    //返回值:
    //     BTNST_OK
    //        函数成功执行.
    //     BTNST_INVALIDINDEX
    //        错误的植.
    //
    DWORD GetColor(BYTE byColorIndex, COLORREF* crpColor)
     
     
    OffsetColor

    该函数用于设置RGB值。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    // Parameters:
    //     [IN]   byColorIndex
    //            设置的颜色值的索引.
    //            看SetColor函数中颜色列表.
    //     [IN]   shOffsetColor
    //             -255到255之间
    //     [IN]   bRepaint
    //            如果为TRUE 将被重置
    //
    // 返回值:
    //     BTNST_OK
    //        函数成功执行.
    //     BTNST_INVALIDINDEX
    //        错误的植.
    //     BTNST_BADPARAM
    //       超出范围
    //
    DWORD OffsetColor(BYTE byColorIndex, short shOffset, BOOL bRepaint = TRUE)
  • 相关阅读:
    愿你出走半生,归来多赚点钱
    喝下这碗毒鸡汤:作为一个『乖』学生,请一定要以学业为主!
    劝你理财,是我最大的温柔-lip师兄
    大半夜客户问我为什么这么拼,我给她算了笔账,她嚎啕大哭......
    女人为什么要经济独立
    定投6年以亏损收场,他到底做错了什么
    你的死工资,正在拖垮你&一辈子需要花多少钱
    字符串的长度
    泥塑课
    最大的数
  • 原文地址:https://www.cnblogs.com/vipwtl/p/5900287.html
Copyright © 2011-2022 走看看