时间的痕迹
posts - 16, comments - 128, trackbacks - 0, articles - 261
C++博客
首页
新随笔
联系
管理
聚合
很好的button类 头文件
//
//
Class: CButtonST
//
//
Compiler: Visual C++
//
Tested on: Visual C++ 5.0
//
Visual C++ 6.0
//
//
Version: See GetVersionC() or GetVersionI()
//
//
Created: xx/xxxx/1998
//
Updated: 03/March/2003
//
//
Author: Davide Calabro' davide_calabro@yahoo.com
//
http://www.softechsoftware.it
//
//
Note: Code for the PreSubclassWindow and OnSetStyle functions
//
has been taken from the COddButton class
//
published by Paolo Messina and Jerzy Kaczorowski
//
//
Disclaimer
//
----------
//
THIS SOFTWARE AND THE ACCOMPANYING FILES ARE DISTRIBUTED "AS IS" AND WITHOUT
//
ANY WARRANTIES WHETHER EXPRESSED OR IMPLIED. NO REPONSIBILITIES FOR POSSIBLE
//
DAMAGES OR EVEN FUNCTIONALITY CAN BE TAKEN. THE USER MUST ASSUME THE ENTIRE
//
RISK OF USING THIS SOFTWARE.
//
//
Terms of use
//
------------
//
THIS SOFTWARE IS FREE FOR PERSONAL USE OR FREEWARE APPLICATIONS.
//
IF YOU USE THIS SOFTWARE IN COMMERCIAL OR SHAREWARE APPLICATIONS YOU
//
ARE GENTLY ASKED TO DONATE 5$ (FIVE U.S. DOLLARS) TO THE AUTHOR:
//
//
Davide Calabro'
//
P.O. Box 65
//
21019 Somma Lombardo (VA)
//
Italy
//
#ifndef _BTNST_H
#define
_BTNST_H
//
Uncomment the following 2 lines to enable support for BCMenu class
#define
BTNST_USE_BCMENU
#include
"
BCMenu.h
"
//
Uncomment the following line to enable support for sound effects
#define
BTNST_USE_SOUND
#if
_MSC_VER >= 1000
#pragma once
#endif
//
_MSC_VER >= 1000
//
Return values
#ifndef BTNST_OK
#define
BTNST_OK 0
#endif
#ifndef BTNST_INVALIDRESOURCE
#define
BTNST_INVALIDRESOURCE 1
#endif
#ifndef BTNST_FAILEDMASK
#define
BTNST_FAILEDMASK 2
#endif
#ifndef BTNST_INVALIDINDEX
#define
BTNST_INVALIDINDEX 3
#endif
#ifndef BTNST_INVALIDALIGN
#define
BTNST_INVALIDALIGN 4
#endif
#ifndef BTNST_BADPARAM
#define
BTNST_BADPARAM 5
#endif
#ifndef BTNST_INVALIDPRESSEDSTYLE
#define
BTNST_INVALIDPRESSEDSTYLE 6
#endif
//
Dummy identifier for grayscale icon
#ifndef BTNST_AUTO_GRAY
#define
BTNST_AUTO_GRAY (HICON)(0xffffffff - 1L)
#endif
//
Dummy identifier for 15% darker icon
#ifndef BTNST_AUTO_DARKER
#define
BTNST_AUTO_DARKER (HICON)(0xffffffff - 2L)
#endif
class
CButtonST :
public
CButton
{
public
:
CButtonST();
~
CButtonST();
enum
{ ST_ALIGN_HORIZ
=
0
,
//
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
}
;
enum
{ BTNST_COLOR_BK_IN
=
0
,
//
Background color when mouse is INside
BTNST_COLOR_FG_IN,
//
Text color when mouse is INside
BTNST_COLOR_BK_OUT,
//
Background color when mouse is OUTside
BTNST_COLOR_FG_OUT,
//
Text color when mouse is OUTside
BTNST_COLOR_BK_FOCUS,
//
Background color when the button is focused
BTNST_COLOR_FG_FOCUS,
//
Text color when the button is focused
BTNST_MAX_COLORS
}
;
enum
{ BTNST_PRESSED_LEFTRIGHT
=
0
,
//
Pressed style from left to right (as usual)
BTNST_PRESSED_TOPBOTTOM
//
Pressed style from top to bottom
}
;
//
ClassWizard generated virtual function overrides
//
{{AFX_VIRTUAL(CButtonST)
public
:
virtual
void
DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
virtual
BOOL PreTranslateMessage(MSG
*
pMsg);
protected
:
virtual
void
PreSubclassWindow();
//
}}AFX_VIRTUAL
public
:
DWORD SetDefaultColors(BOOL bRepaint
=
TRUE);
DWORD SetColor(BYTE byColorIndex, COLORREF crColor, BOOL bRepaint
=
TRUE);
DWORD GetColor(BYTE byColorIndex, COLORREF
*
crpColor);
DWORD OffsetColor(BYTE byColorIndex,
short
shOffset, BOOL bRepaint
=
TRUE);
DWORD SetCheck(
int
nCheck, BOOL bRepaint
=
TRUE);
int
GetCheck();
DWORD SetURL(LPCTSTR lpszURL
=
NULL);
void
DrawTransparent(BOOL bRepaint
=
FALSE);
DWORD SetBk(CDC
*
pDC);
BOOL GetDefault();
DWORD SetAlwaysTrack(BOOL bAlwaysTrack
=
TRUE);
void
SetTooltipText(
int
nText, BOOL bActivate
=
TRUE);
void
SetTooltipText(LPCTSTR lpszText, BOOL bActivate
=
TRUE);
void
ActivateTooltip(BOOL bEnable
=
TRUE);
DWORD EnableBalloonTooltip();
DWORD SetBtnCursor(
int
nCursorId
=
NULL, BOOL bRepaint
=
TRUE);
DWORD SetFlat(BOOL bFlat
=
TRUE, BOOL bRepaint
=
TRUE);
DWORD SetAlign(BYTE byAlign, BOOL bRepaint
=
TRUE);
DWORD SetPressedStyle(BYTE byStyle, BOOL bRepaint
=
TRUE);
DWORD DrawBorder(BOOL bDrawBorder
=
TRUE, BOOL bRepaint
=
TRUE);
DWORD DrawFlatFocus(BOOL bDrawFlatFocus, BOOL bRepaint
=
TRUE);
DWORD SetIcon(
int
nIconIn,
int
nCxDesiredIn,
int
nCyDesiredIn,
int
nIconOut
=
NULL,
int
nCxDesiredOut
=
0
,
int
nCyDesiredOut
=
0
);
DWORD SetIcon(
int
nIconIn,
int
nIconOut
=
NULL);
DWORD SetIcon(HICON hIconIn, HICON hIconOut
=
NULL);
DWORD SetBitmaps(
int
nBitmapIn, COLORREF crTransColorIn,
int
nBitmapOut
=
NULL, COLORREF crTransColorOut
=
0
);
DWORD SetBitmaps(HBITMAP hBitmapIn, COLORREF crTransColorIn, HBITMAP hBitmapOut
=
NULL, COLORREF crTransColorOut
=
0
);
void
SizeToContent();
#ifdef BTNST_USE_BCMENU
DWORD SetMenu(UINT nMenu, HWND hParentWnd, BOOL bWinXPStyle
=
TRUE, UINT nToolbarID
=
NULL, CSize sizeToolbarIcon
=
CSize(
16
,
16
), COLORREF crToolbarBk
=
RGB(
255
,
0
,
255
), BOOL bRepaint
=
TRUE);
#else
DWORD SetMenu(UINT nMenu, HWND hParentWnd, BOOL bRepaint
=
TRUE);
#endif
DWORD SetMenuCallback(HWND hWnd, UINT nMessage, LPARAM lParam
=
0
);
#ifdef BTNST_USE_SOUND
DWORD SetSound(LPCTSTR lpszSound, HMODULE hMod
=
NULL, BOOL bPlayOnClick
=
FALSE, BOOL bPlayAsync
=
TRUE);
#endif
static
short
GetVersionI()
{
return
39
;}
static
LPCTSTR GetVersionC()
{
return
(LPCTSTR)_T(
"
3.9
"
);}
BOOL m_bShowDisabledBitmap;
POINT m_ptImageOrg;
POINT m_ptPressedOffset;
protected
:
//
{{AFX_MSG(CButtonST)
afx_msg BOOL OnSetCursor(CWnd
*
pWnd, UINT nHitTest, UINT message);
afx_msg
void
OnKillFocus(CWnd
*
pNewWnd);
afx_msg
void
OnMouseMove(UINT nFlags, CPoint point);
afx_msg
void
OnSysColorChange();
afx_msg BOOL OnClicked();
afx_msg
void
OnActivate(UINT nState, CWnd
*
pWndOther, BOOL bMinimized);
afx_msg
void
OnEnable(BOOL bEnable);
afx_msg
void
OnCancelMode();
afx_msg UINT OnGetDlgCode();
//
}}AFX_MSG
#ifdef BTNST_USE_BCMENU
afx_msg LRESULT OnMenuChar(UINT nChar, UINT nFlags, CMenu
*
pMenu);
afx_msg
void
OnMeasureItem(
int
nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct);
#endif
afx_msg HBRUSH CtlColor(CDC
*
pDC, UINT nCtlColor);
HICON CreateGrayscaleIcon(HICON hIcon);
HICON CreateDarkerIcon(HICON hIcon);
HBITMAP CreateGrayscaleBitmap(HBITMAP hBitmap, DWORD dwWidth, DWORD dwHeight, COLORREF crTrans);
HBITMAP CreateDarkerBitmap(HBITMAP hBitmap, DWORD dwWidth, DWORD dwHeight, COLORREF crTrans);
COLORREF DarkenColor(COLORREF crColor,
double
dFactor);
virtual
DWORD OnDrawBackground(CDC
*
pDC, CRect
*
pRect);
virtual
DWORD OnDrawBorder(CDC
*
pDC, CRect
*
pRect);
BOOL m_bIsFlat;
//
Is a flat button?
BOOL m_bMouseOnButton;
//
Is mouse over the button?
BOOL m_bDrawTransparent;
//
Draw transparent?
BOOL m_bIsPressed;
//
Is button pressed?
BOOL m_bIsFocused;
//
Is button focused?
BOOL m_bIsDisabled;
//
Is button disabled?
BOOL m_bIsDefault;
//
Is default button?
BOOL m_bIsCheckBox;
//
Is the button a checkbox?
BYTE m_byAlign;
//
Align mode
BOOL m_bDrawBorder;
//
Draw border?
BOOL m_bDrawFlatFocus;
//
Draw focus rectangle for flat button?
COLORREF m_crColors[BTNST_MAX_COLORS];
//
Colors to be used
HWND m_hParentWndMenu;
//
Handle to window for menu selection
BOOL m_bMenuDisplayed;
//
Is menu displayed ?
#ifdef BTNST_USE_BCMENU
BCMenu m_menuPopup;
//
BCMenu class instance
#else
HMENU m_hMenu;
//
Handle to associated menu
#endif
private
:
LRESULT OnSetCheck(WPARAM wParam, LPARAM lParam);
LRESULT OnGetCheck(WPARAM wParam, LPARAM lParam);
LRESULT OnSetStyle(WPARAM wParam, LPARAM lParam);
LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);
void
CancelHover();
void
FreeResources(BOOL bCheckForNULL
=
TRUE);
void
PrepareImageRect(BOOL bHasTitle, RECT
*
rpItem, CRect
*
rpTitle, BOOL bIsPressed, DWORD dwWidth, DWORD dwHeight, CRect
*
rpImage);
HBITMAP CreateBitmapMask(HBITMAP hSourceBitmap, DWORD dwWidth, DWORD dwHeight, COLORREF crTransColor);
virtual
void
DrawTheIcon(CDC
*
pDC, BOOL bHasTitle, RECT
*
rpItem, CRect
*
rpCaption, BOOL bIsPressed, BOOL bIsDisabled);
virtual
void
DrawTheBitmap(CDC
*
pDC, BOOL bHasTitle, RECT
*
rpItem, CRect
*
rpCaption, BOOL bIsPressed, BOOL bIsDisabled);
virtual
void
DrawTheText(CDC
*
pDC, LPCTSTR lpszText, RECT
*
rpItem, CRect
*
rpCaption, BOOL bIsPressed, BOOL bIsDisabled);
void
PaintBk(CDC
*
pDC);
void
InitToolTip();
HCURSOR m_hCursor;
//
Handle to cursor
CToolTipCtrl m_ToolTip;
//
Tooltip
CDC m_dcBk;
CBitmap m_bmpBk;
CBitmap
*
m_pbmpOldBk;
BOOL m_bAlwaysTrack;
//
Always hilight button?
int
m_nCheck;
//
Current value for checkbox
UINT m_nTypeStyle;
//
Button style
DWORD m_dwToolTipStyle;
//
Style of tooltip control
TCHAR m_szURL[_MAX_PATH];
//
URL to open when clicked
#pragma pack(
1
)
typedef
struct
_STRUCT_ICONS
{
HICON hIcon;
//
Handle to icon
DWORD dwWidth;
//
Width of icon
DWORD dwHeight;
//
Height of icon
}
STRUCT_ICONS;
#pragma pack()
#pragma pack(
1
)
typedef
struct
_STRUCT_BITMAPS
{
HBITMAP hBitmap;
//
Handle to bitmap
DWORD dwWidth;
//
Width of bitmap
DWORD dwHeight;
//
Height of bitmap
HBITMAP hMask;
//
Handle to mask bitmap
COLORREF crTransparent;
//
Transparent color
}
STRUCT_BITMAPS;
#pragma pack()
#pragma pack(
1
)
typedef
struct
_STRUCT_CALLBACK
{
HWND hWnd;
//
Handle to window
UINT nMessage;
//
Message identifier
WPARAM wParam;
LPARAM lParam;
}
STRUCT_CALLBACK;
#pragma pack()
STRUCT_ICONS m_csIcons[
2
];
STRUCT_BITMAPS m_csBitmaps[
2
];
STRUCT_CALLBACK m_csCallbacks;
#ifdef BTNST_USE_SOUND
#pragma pack(
1
)
typedef
struct
_STRUCT_SOUND
{
TCHAR szSound[_MAX_PATH];
LPCTSTR lpszSound;
HMODULE hMod;
DWORD dwFlags;
}
STRUCT_SOUND;
#pragma pack()
STRUCT_SOUND m_csSounds[
2
];
//
Index 0 = Over 1 = Clicked
#endif
DECLARE_MESSAGE_MAP()
}
;
//
{{AFX_INSERT_LOCATION}}
//
Microsoft Developer Studio will insert additional declarations immediately before the previous line.
#endif
Posted on 2007-04-12 11:37
艾凡赫
阅读(2334)
评论(0)
编辑
收藏
引用
所属分类:
MFC技术
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
利用VC从DLL传递消息到EXE
CEdit 颜色设置
文本框字体色,对话框和静态文件背景色设置方法(OnCtlColor消息)
很好的button类 实现文件 4
很好的button类 实现文件 3
很好的button类 实现文件 2
很好的button类 实现文件 1
很好的button类 头文件
CBitmapDialog 的使用
CFormView 设置背景色
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
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
1
2
3
4
5
6
7
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(19)
给我留言
查看公开留言
查看私人留言
随笔分类
(12)
ADO(2)
Arithmetic
C/C++(1)
COM
DLL
MFC(4)
NET WORK(1)
ORACLE
OTL
OTL
SQL Server
STL
Thread
traits技术
设计模式
兴致所至(4)
随笔档案
(16)
2008年9月 (1)
2007年1月 (8)
2006年12月 (1)
2006年10月 (1)
2006年3月 (1)
2005年9月 (4)
文章分类
(295)
ADO.NET(1)
ADO编程技术(19)
C++(71)
COM(11)
C语言(5)
DLL 技术(13)
Linux(2)
MFC技术(41)
ORACLE(17)
P2P(7)
SqlServer(9)
win32 sdk 编程(7)
Windows Mobile开发(8)
多线程(8)
共享内存
好 玩(1)
基础知识(16)
加密解密(1)
其 他(2)
设计模式
手机编程
数据库(14)
数据类型(7)
算 法(12)
网络编程(23)
文章档案
(261)
2007年12月 (1)
2007年11月 (3)
2007年9月 (1)
2007年4月 (40)
2007年3月 (4)
2007年1月 (1)
2006年12月 (4)
2006年11月 (15)
2006年10月 (4)
2006年9月 (50)
2006年7月 (1)
2006年4月 (5)
2006年1月 (20)
2005年12月 (47)
2005年11月 (56)
2005年10月 (9)
收藏夹
美文
C#
COM
MFC
【 Visual C++ 教 程 】
MFC 教程
VC编程技巧
VC编程网
VC学习
Web
基础知识
PE文件格式详解
汇编语言
数据结构
网络教学
开发学习
天新网
移动开发网
网络
注册过的论坛网站
最新随笔
1. 麦兜故事
2. 转载--地主与长工
3. 呵呵,还不怎么会用,差点出事
4. 第一次
5. 呵呵!开业大吉!!!
搜索
积分与排名
积分 - 482669
排名 - 42
最新评论
1. re: 哈夫曼编码的源代码[未登录]
有没有联系方式,大神求带,本人qq1984425565,大神求带
--无
2. re: 消除回溯算法的程序实现
设计内容及要求:构造一程序,实现:消除文法每一条产生式候选式的公共左因子。对于用户任意输入的文法G,输出一个无回溯的等价文法,可显示输出,或输出到指定文件中。
--王康
3. re: MFC规则DLL 简单的例子
这个文章是从课本上复制的不?
--张亚成
4. re: _variant_t 到 CString 转换
帮了我一把!拜谢
--苦想者
5. re: ADO连接字符串
评论内容较长,点击标题查看
--BestEssays rewiew
阅读排行榜
1. 使用wxWidgets开发跨平台的GUI程序(转)(4458)
2. CRichEditCtrl (3462)
3. 转载--地主与长工 (2635)
4. VC中自动改变控件位置和大小的对话框类(转)(2195)
5. VC6.0中使用Stream Object读取数据中流文件并显示Bmp,JPG等图片 (转)(1750)
评论排行榜
1. 呵呵!开业大吉!!!(5)
2. 转载--地主与长工 (4)
3. 麦兜故事(1)
4. 第一次(1)
5. 呵呵,还不怎么会用,差点出事(1)