随笔 - 46  文章 - 39  trackbacks - 0
<2012年3月>
26272829123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用链接

留言簿(2)

随笔分类

随笔档案

友情链接

搜索

  •  

最新评论

阅读排行榜

评论排行榜

CBitmapButton 类


创建位图图像替代文本标记的按钮控件。


Class CBitmapButton : public CButton


备注


CBitmapButton 对象包含多达四个位图,为按钮的不同状态包含图像:up(or normal),down(or selected),focused,和disabled
。只有第一个位图是必须的;其他都是可以选择的。

位图按钮(Bitmap-button)图像包括图像的边框以及图像本身。边框通常扮演部分显示按钮的状态。例如,focused状态下的位图通

常和up状态下的一样,但是它的边框是矩形虚线或者粗实线。disabled状态下的位图通常类似于up状态但是对比度较低(如暗灰色

或者灰色菜单选择)。

这些位图可以是任意大小,但是对于up状态它们都被视为同样大小。

各种应用要求位图图像的不同组合:

Up Down Focused Disabled 应用
*                                     位图
*   *                                没有WS_TABSTOP样式的按钮
*   *        *           *          带有所有状态的对话框按钮
*   *        *                      带有WS_TABSTOP样式的对话框按钮

当创建一个位图按钮控件,设置BS_OWNERDRAW样式指定按钮为自己绘制的。这使Windows为按钮发送WM_MEASUREITEMWMDRAWITEM

消息。框架为你处理这些消息和管理按钮的外观。

 

在windows客户区域创建位图按钮控件
   1、为按钮创建一到四个位图。
   2、构建CBitmapButton对象。
   3、调用Create函数创建按钮控件,然后附加到CBitmapButton对象上。
   4、当位图按钮构造好后,调用LoadBitmaps成员函数来加载位图资源。

一个对话框中包括一个位图按钮
   1、为按钮创建一到四个位图。
   2、创建一个带有自绘(owner-draw)按钮的对话框模板,按钮放置在你想要的位图按钮的地方。
   3、设置按钮的caption为"MYIMAGE",按钮定义符号为IDC_MYIMAGE
   4、在你应用程序的资源脚本中,在步骤3中为每个为按钮创建的图形设置标题为ID加一个字母,"U","D","F",或者"X"(对应于up,down,focused,和disabled)的字符串。例如,像标题为"MYIMAGE"的按钮,它们的ID为"MYIMAGEU","MYIMAGED","MYIMAGEF",和"MYIMAGEX."你必须指定位图的ID要有双引号。否则资源编译器将制定一个整数的资源,那么MFC在加载图片时就会失败。
   5、在你的应用程序的对话框类(继承自CDialog)中,增加一个CBitmapButton成员对象。
   6、在CDialog对象的OnInitDialog例程中,调用CBitmapButton对象的AutoLoad函数,按钮控件的ID和CDialog对象的指针作为参数。

如果你想处理窗口信息,像BN_CLICKED,位图按钮控件发送给它的父(通常是一个从CDialog派生的类),为CDialog派生对象增加一个消息映射入口,和每个消息处理成员函数。CBitmapButton对象发送的通知跟CButton是一样的。

类CToolBar对位图按钮采用不同的方法。

更多关于CBitmapButton的信息,参考Controls。

要求

头文件:afxext.h

参考

CTLRLTEST sample:Implements Custom Controls
CBitmapButton Members
CButton Class
Hierarchy Chart


原文:

http://msdn.microsoft.com/zh-cn/library/a3y45xs0(v=vs.90).aspx
 

posted on 2012-03-22 10:36 canaan 阅读(1801) 评论(0)  编辑 收藏 引用 所属分类: MSDN

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理