【Get深一度】CButtonST v3.9 (MFC Flat buttons)

时间:2023-01-30 23:23:58

  • 一个功能齐全的所有者绘制按钮类 - 它有地段!

  • Download demo project - 902 Kb 点击打开链接http://www.codeproject.com/KB/buttons/cbuttonst/CButtonST_demo.zip
  • 摘要
    CButtonST是从MFC CButton的类派生的类。
    有了这个类应用程序可以有标准按钮或“平板”式的新的和现代的按钮!
  • 主要的CButtonST特点是:
  • 标准CButton的特性
    在同一按钮上的文字和图标(或位图)
    只有文字或唯一的图标/位图按钮
    支持任何尺寸的图标(最大256色)
    位图支持
    支持透明按钮(位图应用)
    标准或平按钮样式
    从平面更改运行时标准样式
    按钮可以有两个图像。其中,当鼠标移动到按钮和一个当鼠标外(仅适用于“平面”按钮)
    每个颜色可定制
    可以通过DDX_调用中使用
    在DLL文件中使用
    可以dinamically创建
    每个按钮都可以有其自己的鼠标指针
    按钮也高亮当窗口处于非活动状态,像发生在Internet Explorer中
    内置多行工具提示支持
    内置在菜单的基本支持
    内置支持所有者绘制菜单(使用BCMenu类)
    内置的声音的基本支持
    可以得出创建其他的按钮样式默认情况下不提供
    包括完整的源代码!
    UNICODE兼容
    在现有的应用成本更低的实现


  • 如何在应用程序中集成CButtonST??

  • 在您的项目包括下列文件:

  • BtnST.h
    BtnST.cpp
    从3.5版本开始,现在的CButtonST支持使用BCMenu类创建菜单。
    这个第三方类为您展示使用最新的视觉样式菜单的能力所看到
    最新的微软产品上,甚至在Windows XP中。
    最新版本BCMenu可以在这里找到。

  • 要启用BCMenu支持,以下两行BtnST.h必须启用:

  • <span style="font-size:14px;">#define	BTNST_USE_BCMENU
    #include "BCMenu.h"</span>

    此外,以下文件必须包含在您的项目:
    BCMenu.h
    BCMenu.cpp
    注:请注意,当BCMenu支持已启用的的SetMenu方法接受的参数是不同的!
  • 从3.6版本开始,可的CButtonST玩特定的按钮状态的声音。

  • 要启用声音支持BtnST.h,以下行必须启用:

  • <span style="font-size:14px;">#define	BTNST_USE_SOUND</span>
  • 这使进入SetSound方法。

  • 创建一个对象的CButtonST静态
    随着对话框编辑器创建一个标准的按钮调用,例如,IDOK(你不需要使其所有者绘制),并创建了这个按钮一个成员变量:


  • <span style="font-size:14px;">CButtonST m_btnOk;</span>

           现在附加按钮的CButtonST。对于基于对话框的应用程序,在你的OnInitDialog:

<span style="font-size:14px;">	// 调用基类的方法
	CDialog::OnInitDialog();

	// 创建IDOC按钮
	m_btnOk.SubclassDlgItem(IDOK, this);</span>

               或者在你的DoDataExchange:
 

<span style="font-size:14px;">	//调用基方法
	CDialog::DoDataExchange(pDX);

	//创建IDOK按钮
	DDX_Control(pDX, IDOK, m_btnOk);</span>


Create a CButtonST object dynamically
创建一个对象的CButtonST动态
在您的应用程序,创建按钮的一个成员变量。请注意,这个变量是一个指针:

<span style="font-size:14px;">CButtonST* m_pbtnOk;</span>


现在创建按钮。对于基于对话框的应用程序,在你的OnInitDialog:

<span style="font-size:14px;">//调用基类的方法
CDialog::OnInitDialog();

//创建IDOK按钮
m_pbtnOk = new CButtonST;
m_pbtnOk->Create(_T("&Ok"), WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 
                CRect(10, 10, 200, 100), this, IDOK);
//设置应用程序相同的字体
m_pbtnOk->SetFont(GetFont());</span>


Remember to destroy the button or you will get a memory leak. This can be done, for example, in your class destructor:

记住摧毁按钮或你会得到一个内存泄漏。这是可以做到,例如,在你的类的析构:

<span style="font-size:14px;">if (m_pbtnOk) delete m_pbtnOk;</span>


Class methods:

操作SetIcon(使用多尺寸的资源)
指定图标的按钮。
以往任何图标或位图将被删除。
<span style="font-size:14px;">//参数:
// [IN] nIconIn
//显示图标资源的ID号,当鼠标移动到
//按钮。传递null从按钮删除任何图标。
// [IN] nCxDesiredIn
//指定的宽度,以像素为单位加载图标。
// [IN] nCyDesiredIn
//指定的高度,以像素为单位加载图标。
// [IN] nIconOut
//显示图标资源的ID号当鼠标外
// 按钮。可以为NULL。
//如果该参数是特殊值​​BTNST_AUTO_GRAY(强制转换为int)
//第二个图标将被自动创建从nIconIn开始
//并转换为灰度。
//如果该参数是特殊值​​BTNST_AUTO_DARKER(投
//为int)第二个图标将自动创建25%
//从nIconIn较暗的起点。
// [IN] nCxDesiredOut
//指定的宽度,以像素为单位加载图标。
// [IN] nCyDesiredOut
//指定的高度,以像素为单位加载图标。
//
//返回值:
// BTNST_OK
//函数成功执行。
// BTNST_INVALIDRESOURCE
//无法加载指定的资源。
//</span>
<pre class="notranslate" id="pre777491" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;" processed="true"><p><span style="font-size:14px;">DWORD SetIcon(<span class="code-keyword" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 255);">int</span> nIconIn, <span class="code-keyword" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 255);">int</span> nCxDesiredIn, <span class="code-keyword" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 255);">int</span> nCyDesiredIn, 
              <span class="code-keyword" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 255);">int</span> nIconOut = NULL, <span class="code-keyword" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 255);">int</span> nCxDesiredOut = <span class="code-digit" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 128);">0</span>, <span class="code-keyword" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 255);">int</span> nCyDesiredOut = <span class="code-digit" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 128);">0</span>)</span></p>
 

操作SetIcon(使用资源)指定图标的按钮。和以前的图标或位图将被删除。

<span style="font-size:14px;">操作SetIcon(使用资源)
//参数:
//[IN] nIconIn
//显示图标资源的ID号,当鼠标移动到
//按钮。
//传递null删除按钮的任何图标。
//[IN] nIconOut
//显示图标资源的ID号当鼠标
//按钮之外。可以为NULL。
//如果该参数是特殊值BTNST_AUTO_GRAY(强制转换为int)
//第二个图标将自动创建启动
// nIconIn并转换为灰度。如果这个参数是
//特殊值BTNST_AUTO_DARKER(强制转换为int)第二
//图标将被自动创建的25%来自较深开始nIconIn。
//
//返回值:
// BTNST_OK
//函数成功执行。
// BTNST_INVALIDRESOURCE
//无法加载指定的资源。
//</span>

<pre class="notranslate" id="pre996857" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;">DWORD SetIcon(<span class="code-keyword" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 255);">int</span> nIconIn, <span class="code-keyword" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 255);">int</span> nIconOut = NULL)</span>
 

操作SetIcon(使用句柄)指定图标的按钮。和以前的图标或位图将被删除。

<span style="font-size:14px;">// Parameters:
//     [IN]   nIconIn
//            ID number of the icon resource to show when the mouse is over the 
//            button.
//            Pass NULL to remove any icon from the button.
//     [IN]   nIconOut
//            ID number of the icon resource to show when the mouse is 
//            outside the button. Can be NULL.
//            If this parameter is the special value BTNST_AUTO_GRAY (cast to int) 
//            the second icon will be automatically created starting from 
//            nIconIn and converted to grayscale. If this parameter is the 
//            special value BTNST_AUTO_DARKER (cast to int) the second
//            icon will be automatically created 25% darker starting from nIconIn.
//
// Return value:
//      BTNST_OK
//          Function executed successfully.
//      BTNST_INVALIDRESOURCE
//          Failed loading the specified resource.
//</span>

<pre class="notranslate" id="pre996857" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;">DWORD SetIcon(<span class="code-keyword" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 255);">int</span> nIconIn, <span class="code-keyword" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 255);">int</span> nIconOut = NULL)</span>


操作SetIcon(使用句柄)指定图标的按钮。和以前的图标或位图将被删除。

<span style="font-size:14px;">//参数:
//[IN] hIconIn
//处理FO的图标来显示当鼠标移动到按钮上。
//传递null删除按钮的任何图标。
//[IN] hIconOut
//处理的图标来显示当鼠标按钮之外。
//可以为null。
//如果该参数是特殊值BTNST_AUTO_GRAY第二
//图标将被自动创建从hIconIn和启动
//转换成灰度。
//如果该参数是特殊值BTNST_AUTO_DARKER第二
//图标将被自动创建的25%来自较深开始hIconIn。
//
//返回值:
// BTNST_OK
//函数成功执行。
// BTNST_INVALIDRESOURCE
//无法加载指定的资源。</span>

<pre class="notranslate" id="pre988793" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;">DWORD SetIcon(HICON hIconIn, HICON hIconOut = NULL)</span>
 

设置位图(使用资源)分配位图的按钮。和以前的图标或位图将被删除。

<span style="font-size:14px;">//参数:
//[IN] nBitmapIn
//显示位图资源的ID号当鼠标
//按钮上。
//传递null删除按钮的位图。
//[IN] crTransColorIn
//颜色(内侧nBitmapIn)被用作透明的颜色。
//[IN] nBitmapOut
//位图资源的ID号来显示当鼠标
//该按钮外部。
//可以为null。
//[IN] crTransColorOut
//颜色(内侧nBitmapOut)被用作透明的颜色。
//
//返回值:
// BTNST_OK
//函数成功执行。
// BTNST_INVALIDRESOURCE
//无法加载指定的资源。
// BTNST_FAILEDMASK
//创建失败掩码位图。
//</span>
<span style="font-size:14px;">DWORD SetBitmaps(int nBitmapIn, COLORREF crTransColorIn, 
                 int nBitmapOut = NULL, COLORREF crTransColorOut = 0)</span>

设置位图(使用句柄)
分配位图的按钮。
和以前的图标或位图将被删除。

<span style="font-size:14px;">//参数:
//[IN] hBitmapIn
//处理FO位图显示当鼠标移动到按钮上。
//传递null删除按钮的位图。
//[IN] crTransColorIn
//颜色(内侧hBitmapIn)被用作透明的颜色。
//[IN] hBitmapOut
//处理位图显示当鼠标按钮之外。
//可以为null。
//[IN] crTransColorOut
//颜色(内侧hBitmapOut)被用作透明的颜色。
//
//返回值:
// BTNST_OK
//函数成功执行。
// BTNST_INVALIDRESOURCE
//无法加载指定的资源。
// BTNST_FAILEDMASK
//创建失败掩码位图。</span>

<pre class="notranslate" id="pre404726" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;"><span class="code-comment" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 128, 0); font-style: italic;">//</span><span class="code-comment" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 128, 0); font-style: italic;">
</span>DWORD SetBitmaps(HBITMAP hBitmapIn, COLORREF crTransColorIn, 
                 HBITMAP hBitmapOut = NULL, COLORREF crTransColorOut = <span class="code-digit" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 128);">0</span>)</span>


设置平面设置按钮,有一个标准或扁平风格。

<span style="font-size:14px;">//参数:
//[IN] bFlat
//如果真该按钮将有一个平坦的风格,否则
//将有标准样式。
//默认情况下,的CButtonST按钮是平的。
//[IN] bRepaint
//如果真控制将被粉刷一新。
//
//返回值:
// BTNST_OK
//函数成功执行。
//</span>

<pre class="notranslate" id="pre138347" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;">DWORD SetFlat(BOOL bFlat = TRUE, BOOL bRepaint = TRUE)</span>
 

SetAlign设置对齐设置图标/位图和文本之间的对齐类型。

<span style="font-size:14px;">// Parameters:
//     [IN]   byAlign
//            Alignment type. Can be one of the following values:
//            ST_ALIGN_HORIZ          Icon/bitmap on the left, text on the right
//            ST_ALIGN_VERT           Icon/bitmap on the top, text on the bottom
//            ST_ALIGN_HORIZ_RIGHT    Icon/bitmap on the right, text on the left
//            ST_ALIGN_OVERLAP        Icon/bitmap on the same space as text
//            By default, CButtonST buttons have ST_ALIGN_HORIZ alignment.
//     [IN]   bRepaint
//            If TRUE the control will be repainted.
//
// Return value:
//     BTNST_OK
//        Function executed successfully.
//     BTNST_INVALIDALIGN
//        Alignment type not supported.
//</span>

<pre class="notranslate" id="pre471134" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;">DWORD SetAlign(BYTE byAlign, BOOL bRepaint = TRUE)</span>
 

设置Pressed风格设置按下风格。

<span style="font-size:14px;">//参数:
//[IN] byStyle
//按下风格。可以是以下值之一:
// BTNST_PRESSED_LEFTRIGHT按下式从左至右(照常)
// BTNST_PRESSED_TOPBOTTOM冲压式从上到下
//默认情况下,的CButtonST按钮具有BTNST_PRESSED_LEFTRIGHT风格。
//[IN] bRepaint
//如果真控制将被粉刷一新。
//
//返回值:
// BTNST_OK
//函数成功执行。
// BTNST_INVALIDPRESSEDSTYLE
//不支持追问风格。
//</span>

<pre class="notranslate" id="pre827194" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;">DWORD SetPressedStyle(BYTE byStyle, BOOL bRepaint = TRUE)</span>
 

SetCheck设置复选框的状态。如果按钮不是一个复选框,这个功能已经没有意义。

<span style="font-size:14px;">//参数:
//[IN] n检查
//1检查复选框。
//0为取消选中该复选框。
//[IN] bRepaint
//如果真控制将被粉刷一新。
//
//返回值:
// BTNST_OK
//函数成功执行。
//</span>

<pre class="notranslate" id="pre580832" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;">DWORD SetCheck(<span class="code-keyword" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 255);">int</span> nCheck, BOOL bRepaint = TRUE)</span>
 

GetCheck返回复选框的当前状态。如果按钮不是一个复选框,这个功能已经没有意义。

<span style="font-size:14px;">//返回值:
//复选框的当前状态。
//1,如果检查。
//0如果不检查或按钮不是一个复选框。
//</span>

<pre class="notranslate" id="pre188719" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;"><span class="code-keyword" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 255);">int</span> GetCheck()</span>
 

设为默认颜色将所有颜色为默认值。

<span style="font-size:14px;">//参数:
//[IN] bRepaint
//如果真控制将被粉刷一新。
//
//返回值:
// BTNST_OK
//函数成功执行。
//</span>

<pre class="notranslate" id="pre235466" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;">DWORD SetDefaultColors(BOOL bRepaint = TRUE)</span>
 

setColor设置用于特定状态的颜色。

<span style="font-size:14px;">//参数:
//[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
//如果真控制将被粉刷一新。
//
//返回值:
// BTNST_OK
//函数成功执行。
// BTNST_INVALIDINDEX
//无效的颜色索引。
//</span>

<pre class="notranslate" id="pre895325" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;">DWORD SetColor(BYTE byColorIndex, COLORREF crColor, BOOL bRepaint = TRUE)</span>
 

GetColorReturns the color used for a particular state.

<span style="font-size:14px;">//参数:
//[IN] byColorIndex
颜色//指数来获得。
//为可用的颜色列表可以参考setColor。
//[OUT] crpColor
//一个指针,将接收到的颜色的COLORREF。
//
//返回值:
// BTNST_OK
//函数成功执行。
// BTNST_INVALIDINDEX
//无效的颜色索引。
//</span>

<pre class="notranslate" id="pre943724" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;">DWORD GetColor(BYTE byColorIndex, COLORREF* crpColor)</span>
 

OffsetColor这个功能适用的偏移到指定的颜色的RGB分量。此功能可以被看作是一种简单的方法,使一个颜色比它的默认值较暗或较亮。

<span style="font-size:14px;">//参数:
//[IN] byColorIndex
//指数颜色来设置的。
//为可用的颜色列表可以参考setColor。
//[IN] shOffsetColor
//短值,指示偏移应用于颜色。
//这个值必须是-255到255之间。
//[IN] bRepaint
//如果真控制将被粉刷一新。
//
//返回值:
// BTNST_OK
//函数成功执行。
// BTNST_INVALIDINDEX
//无效的颜色索引。
// BTNST_BADPARAM
//指定的偏移超出范围。
//</span>

<pre class="notranslate" id="pre880664" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;">DWORD OffsetColor(BYTE byColorIndex, <span class="code-keyword" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 255);">short</span> shOffset, BOOL bRepaint = TRUE)</span>
 

SetAlwaysTrack设置按钮的亮点逻辑。仅适用于平面按钮。

<span style="font-size:14px;">//参数:
//[IN] bAlwaysTrack
//如果TRUE的按钮将被高亮即使拥有它的窗口,是
//不是活动窗口。
//如果假的按钮将被高亮只有拥有它的窗口,
//为活动窗口。
//
//返回值:
// BTNST_OK
//函数成功执行。
//</span>

<pre class="notranslate" id="pre359271" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;">DWORD SetAlwaysTrack(BOOL bAlwaysTrack = TRUE)</span>
 

设置光标设置当鼠标移动到按钮使用的光标。

<span style="font-size:14px;">//参数:
//[IN] nCursorId
//光标资源的ID号。
//传递null删除以前加载光标。
//[IN] bRepaint
//如果真控制将被粉刷一新。
//
//返回值:
// BTNST_OK
//函数成功执行。
// BTNST_INVALIDRESOURCE
//无法加载指定的资源。
//</span>

<pre class="notranslate" id="pre569099" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;">DWORD SetBtnCursor(<span class="code-keyword" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 255);">int</span> nCursorId = NULL, BOOL bRepaint = TRUE)</span>
 

DrawBorder如果设置按钮边框必须制定。仅适用于平面按钮。

<span style="font-size:14px;">// Parameters:
//     [IN]   bDrawBorder
//            If TRUE the border will be drawn.
//     [IN]   bRepaint
//            If TRUE the control will be repainted.
//
// Return value:
//     BTNST_OK
//        Function executed successfully.
//</span>

<pre class="notranslate" id="pre89652" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;">DWORD DrawBorder(BOOL bDrawBorder = TRUE, BOOL bRepaint = TRUE)</span>
 

DrawFlatFocus如果设置焦点矩形必须绘制平面按钮。

<span style="font-size:14px;">//参数:
//[IN] bDrawFlatFocus
//如果真焦点矩形还将绘制平面按钮。
//[IN] bRepaint
//如果真控制将被粉刷一新。
//
//返回值:
// BTNST_OK
//函数成功执行。
//</span>

<pre class="notranslate" id="pre317662" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;">DWORD DrawFlatFocus(BOOL bDrawFlatFocus, BOOL bRepaint = TRUE)</span>
 

setToolTipText(使用资源)设置在按钮工具提示中显示文本。

<span style="font-size:14px;">// Parameters:
//     [IN]   nText
//            ID number of the string resource containing the text to show.
//     [IN]   bActivate
//            If TRUE the tooltip will be created active.
//
void SetTooltipText(int nText, BOOL bActivate = TRUE)</span>


setToolTipText
设置在按钮工具提示中显示文本。

<span style="font-size:14px;">//参数:
//[IN] lpszText
//指向包含显示文本的空值终止字符串。
//[IN] bActivate
//如果为TRUE工具提示将创建活动的。
//</span>

<pre class="notranslate" id="pre817223" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;"><span class="code-keyword" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 255);">void</span> SetTooltipText(LPCTSTR lpszText, BOOL bActivate = TRUE)</span>
 

EnableBalloonTooltip允许使用气球样式显示的工具提示。做成的setToolTipText任何调用之前,此函数必须被调用。

 

// Return value: // BTNST_OK // Function executed successfully. ////返回值: // BTNST_OK //函数成功执行。

DWORD EnableBalloonTooltip()

ActivateTooltip

启用或禁用按钮提示。

<span style="font-size:14px;">//参数:
//[IN] bActivate
//如果为TRUE工具提示将被激活。
//</span>

<pre class="notranslate" id="pre717163" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;"><span class="code-keyword" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 255);">void</span> ActivateTooltip(BOOL bEnable = TRUE)</span>
 

GetDefault如果按钮是默认按钮返回。

<span style="font-size:14px;">// Return value:
//     TRUE
//        The button is the default button.
//     FALSE
//        The button is not the default button.
//
BOOL GetDefault()</span>

DrawTransparent
启用透明模式。
注:此操作是不可逆的。
DrawTransparent应该创建按钮后立即调用。
不要使用trasparent按钮,直到你真的需要它(你有一个位图
背景),因为每个透明的按键使得它的背景内存副本。
这可能会带来不必要的内存使用和执行超载。

<span style="font-size:14px;">//参数:
//[IN] bRepaint
//如果真控制将被粉刷一新。
//</span>

<pre class="notranslate" id="pre240137" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;"><span class="code-keyword" style="margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; color: rgb(0, 0, 255);">void</span> DrawTransparent(BOOL bRepaint = FALSE)</span>
 

设置网址SetURL设置按钮被点击时要打开的URL。

//参数:
//[IN] lpszURL
//指向包含URL中的空终止字符串。
//去掉,以传递NULL任何先前指定的URL。
//
//返回值:
// BTNST_OK
//函数成功执行。
//

<pre class="notranslate" id="pre130993" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;">DWORD SetURL(LPCTSTR lpszURL = NULL)</span>
 

关联到按钮的菜单。菜单会显示单击按钮。此方法仅如果没有定义BTNST_USE_BCMENU。

<span style="font-size:14px;">//参数:
//[IN] nMenu
//菜单资源的ID号。
//传递null删除按钮任何菜单。
//[IN] hParentWnd
//处理到拥有菜单的窗口。
//这个窗口从菜单中收到的所有邮件。
//[IN] bRepaint
//如果真控制将被粉刷一新。
//
//返回值:
// BTNST_OK
//函数成功执行。
// BTNST_INVALIDRESOURCE
//无法加载指定的资源。
//</span>

<pre class="notranslate" id="pre432193" style="padding: 6px; border: 1px solid rgb(251, 237, 187); border-image: none; color: rgb(0, 0, 0); text-transform: none; line-height: normal; text-indent: 0px; letter-spacing: normal; overflow: auto; font-family: Consolas, 'Courier New', Courier, mono; font-style: normal; font-variant: normal; font-weight: normal; margin-top: 0px; word-spacing: 0px; white-space: pre-wrap; -ms-word-wrap: break-word; widows: 1; font-stretch: normal; background-color: rgb(251, 237, 187); -webkit-text-stroke-width: 0px; tab-size: 4;"><span style="font-size:14px;">DWORD SetMenu(UINT nMenu, HWND hParentWnd, BOOL bRepaint = TRUE)</span>
 



点击打开链接【Get深一度】CButtonST v3.9 (MFC Flat buttons)