龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

WTL自画按钮的实现(5)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
五、例程 启动VC++6.0,创建一个基于WTL对话框的应用程序,工程名为OwnerDrawDemo创建完成后,打开ClassView,选择CmainDlg,单击鼠标右键,选择Add Member Variabl

  五、例程

  启动VC++6.0,创建一个基于WTL对话框的应用程序,工程名为OwnerDrawDemo创建完成后,打开ClassView,选择CmainDlg,单击鼠标右键,选择Add Member Variable 为CmainDlg类添加一个CownerDrawButton成员变量。打开ResourceView ,在对话框资源模板上添加一个按钮,调整到合适尺寸,ID为IDC_BUTTON1,Caption 为Help 。导入一幅位图和一幅相应的Mask图,修改ID分别为:IDB_BUTTON、IDB_MASK。

  打开FileView,打开OwnerDrawDemo.cpp在其顶部依次添加#include <atlctrlx.h>、

  #include <atlgdi.h> 和 #include <atlmisc.h>。打开maindlg.h文件,在OnInitDialog函数中添加如下代码:

DWORD style =  BMPBTN_AUTO3D_SINGLE|BMPBTN_SHAREIMAGELISTS|

 BMPBTN_HOVER;

 IMGINFOS imgis = {0,1,1,-1,30,30,ILC_COLOR24|ILC_MASK,0,2};

 if(m_Button.LoadImageFromID(IDB_BUTTON,IDB_MASK,imgis))

 {

   m_Button.SetBitmapButtonExtendedStyle(style);

   m_Button.SetBitmapPosStyle(IMAGEPOS_TOP);

 }

 m_Button.SubclassWindow(GetDlgItem(IDC_BUTTON1));

 m_Button.SetToolTipText(_T("WTL_OwnerDrawButton!"));
 

  现在就可以按F7构建或者Ctrl + F5执行了。

  程序在Windows2000 + VC++6.0 +WTL 7.0 环境下编译通过,在Windows98、Windows 2000及WindowsXP下运行通过。

精彩图集

赞助商链接