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)

时间: 2024-08-04 01:26:12

MFC CButtonST 在你的程序中如何使用CButtonST类的相关文章

NEO的程序中过分亲密的类关系

NEO是开发的网上蜂蜜商城中常常会让几个类有说不清道不明的关系,NEO即使付出再大的代价调试,他也不去拆分明确这些类的关系.系统终于在NEO的巨大付出下上线了.小朱是一个网购达人,她想去买一瓶优质的蜂蜜,浏览了jd和taobao这些网上商城都没有找到自己心仪的,突然在一个不经意的地方发现了NEO的商城链接,小朱进去之后购买了一瓶蜂蜜之后留下了建议,希望网站能做到最新蜂蜜信息能够通过邮箱.手机.微信等方式及时推送到我的手上. NEO下班回来看到了这个消息觉得小朱的建议很有价值,这样可以更多的留住回

vc控制台程序中如何使用cstring类的函数,头文件怎么包含?

1.project->setting->general 里的Microsoft Foundmation class选择“Use MFC in a Shared DLL”,再包含<afx.h>就行了.2.直接include <afx.h>3.#include <atlstr.h>

在.NET Core控制台应用程序中使用强类型配置

想象一下,你写一个控制台应用程序,你想要从配置文件中以强类型方式读取配置. .NET Core 可以帮助我们解决. 通常我会在ASP.NET Core MVC中演示,但简单起见,只在控制台应用程序中演示. 让我们创建两个配置类,用于保存应用程序和模块名称. public class MySettings { public string ApplicationName { get; set; } } public class MyModuleSettings { public string Mod

VS2010的MFC对话框程序中添加菜单栏的过程

VS2010的MFC对话框程序中添加菜单栏的过程 最近在看一个用MFC写的界面的项目的代码,在代码和界面中一直没有看到关于菜单控件是如何添加进对话框的,于是就百度了下.结果,与其它控件(Button等)添加的方式不一样: VS2010的MFC对话框程序中添加菜单栏的过程大致分了这五步. 一.将Menu加入Resource视图中 在WorkSpace中的Resource视图下,在左边目录的任意位置上,先右键-->选择Insert Resource(插入资源)选项,在弹出的对话框中选择Menu以后,

VC++MFC对话框程序中给对话添加背景图片

VC对话框怎么显示背景图片呢.在MFC中实现背景图片,不像C#应用程序那么简单.今天就和朋友们说说如何在VC界面中设置背景图片 ^_^ 工具/原料 Visual C++ 2010 方法一:用Picture控件 1 新建MFC应用程序 2 在应用程序中,选择基于对话框,其他保持默认即可 3 右击项目,选择添加-资源 4 在添加资源对话框中,点击导入,选择要作为背景的图片 jpg格式的图片可以用画图打开另存为bmp格式 (网上说可以直接jpg格式,自行实验未成功) 下方对话框中资源类型选为bitma

控制台应用程序中添加对MFC的支持

在windows控制台应用程序中,肯能会想使用一些MFC中的类,如CStringArray等,通过下面两步简单的设置可以添加对MFC的支持: 1.右击工程名 -> References 选择 All Configuration ->Configuration Properties ->General->Use of MFC ->Use MFC in a Shared DLL 2.在stdafx.h头文件中添加一下内容: #define _ATL_CSTRING_EXPLICI

在MFC对话框程序中使用加速键

新建一个基于对话框的工程,添加一个按钮,修改按钮ID,这里为ID_BTN_OPENFILE,为按钮添加消息响应事件,这里我打开文件保存对话框: void CAccelDlg::OnBtnOpenfile() { // TODO: Add your control notification handler code here CFileDialog dlg (TRUE); dlg.DoModal (); } 为工程添加一个加速键资源,添加一条,注意ID要和按钮的ID相同,只有这样才能产生关联 为主

MFC Wizard创建的空应用程序中各个文件内容的解析

创建的MFC应用程序名为:wd,那么: 一.wd.h解析 // wd.h : main header file for the WD application // #if !defined(AFX_WD_H__89BE48D2_F377_4DF1_8C44_4D7372A61CE0__INCLUDED_) #define AFX_WD_H__89BE48D2_F377_4DF1_8C44_4D7372A61CE0__INCLUDED_ //////////////////////////////

如何在VS2010的VC++ 基于对话框的MFC程序中添加菜单

方法1:亲测 成功  转载自https://social.msdn.microsoft.com/Forums/vstudio/zh-CN/48338f6b-e5d9-4c0c-8b17-05ca3ef1f761/vs2010dialog 你可以创建菜单作为一种资源,然后将它附加到对话框.打开dialog“属性”对话框,你可以看到一个Menu属性,最终我们将在这里指定一个我们自己创建的菜单ID. 具体步骤如下: •在资源视图中右键单击工程名,插入一个新的菜单.这个菜单会有一个ID(例如:IDR_M