CButtonST使用教程

    CButtonST是一个简单易用、功能强大的CButton派生类。
    以下是CButtonST v3.9在codeproject上原文的地址CButtonST v3.9 (MFC Flat buttons).读者可以下载demo project来参考其具体的使用细则。
    也有好心的国内程序员翻译总结了CButtonST的使用方法:
    CButtonST使用技巧: CButtonST简介
    CButtonST使用技巧(一)
    CButtonST使用技巧(二)
    CButtonST使用技巧(三)
    CButtonST类公共接口函数
    使用时,首先在下载的demo源程序中找到BtnST.h、BtnST.cpp、BCMenu.h、BCMenu.cpp,包含在自己的工程里。用VC6.0以上的编译器编译时会报错,将报错处的for(i=0)改为for(int i=0)就可以了。
一、Basic Features 基本特性
附图<一>:
CButtonST使用教程_第1张图片
1.1 带Icon的标准按钮
示例图片:

在MFC标准按钮的基础上增加了ICON
注意:为达到最好效果,请根据Icon的大小调整按钮的大小。
// <1>添加对话框类成员
CButtonST  m_btn;
// <2>导入ICON
// <3>在对话框的OnInitDialog函数中初始化按钮
m_btn.SubclassDlgItem(IDC_BUTTON1,this);
m_btn.SetIcon(IDI_ICON1);
m_btn.SetFlat(FALSE);
m_btn.SetAlign(CButtonST::ST_ALIGN_HORIZ);       --- 图片在左,文字在右(默认)
m_btn.SetAlign(CButtonST::ST_ALIGN_HORIZ_RIGHT); --- 图片在右,文字在左
m_btn.SetAlign(CButtonST::ST_ALIGN_VERT);        --- 图片在上,文字在下
1.2 Flat按钮
何为Flat按钮?就是在常态下没有绘出边框的按钮。如以上附图<一>中除Standard button之外的所有按钮。
设置按钮为Flat按钮只需把m_btn.SetFlat(FALSE);去掉就可以了。
1.3 SetIcon API 函数
可以设置鼠标在按钮上及在按钮外时显示不同的ICON图标,还可以设置ICON的大小
//
//[IN]	nIconIn  --- 鼠标在按钮上时显示的ICON id
//[IN]  nIconOut --- 鼠标在按钮外时显示的ICON id
//                   为BTNST_AUTO_GRAY时,则为nIconIn指定ICON灰掉之后形成的ICON
//                   为BTNST_AUTO_DARKER时,则比nIconIn指定ICON暗25%形成的ICON
//
DWORD SetIcon(int nIconIn, int nIconOut = NULL);
//
//[IN]	hIconIn  --- 鼠标在按钮上时显示的ICON句柄
//[IN]  hIconOut --- 鼠标在按钮外时显示的ICON句柄
//                   为BTNST_AUTO_GRAY时,则为nIconIn指定ICON灰掉之后形成的ICON
//                   为BTNST_AUTO_DARKER时,则比nIconIn指定ICON暗25%形成的ICON  
//
DWORD SetIcon(HICON hIconIn, HICON hIconOut = NULL);
//
//[IN]	nIconIn  --- 鼠标在按钮上时显示的ICON id
//[IN]  nIconOut --- 鼠标在按钮外时显示的ICON id
//                   为BTNST_AUTO_GRAY时,则为nIconIn指定ICON灰掉之后形成的ICON
//                   为BTNST_AUTO_DARKER时,则比nIconIn指定ICON暗25%形成的ICON
//[IN]  nCxDesiredIn,nCyDesiredIn,nCxDesiredOut,nCyDesiredOut --- 指定ICON大小
//
DWORD SetIcon(int nIconIn, int nCxDesiredIn, int nCyDesiredIn, int nIconOut = NULL, int nCxDesiredOut = 0, int nCyDesiredOut = 0);
1.4 设置按钮在不同状态下的底色和文字颜色
有两个API函数SetColor和OffsetColor。
其中SetColor为设置绝对值,
   OffsetColor为设置相对值,相对默认值而言。
DWORD SetColor(BYTE byColorIndex, COLORREF crColor, BOOL bRepaint = TRUE);
DWORD OffsetColor(BYTE byColorIndex, short shOffset, BOOL bRepaint = TRUE);
//
//其中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	按钮获得焦点时的文字颜色
//
示例如下:
m_btn.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
m_btn.SetColor(CButtonST::BTNST_COLOR_BK_IN, RGB(255, 0, 0));
1.5 添加Tooltip
void SetTooltipText(LPCTSTR lpszText, BOOL bActivate = TRUE);
如:
m_btn.SetTooltipText(_T("This is a tooltip"));
还可以设置Balloon形势的Tooltip只需加上如下语句
m_btn.EnableBalloonTooltip();

你可能感兴趣的:(CButtonST使用教程)