【vc++精品源码栏目提醒】:网学会员--在 vc++精品源码编辑为广大网友搜集整理了:【免费】vc++编程技术600个大型项目源码(四) - 教育绩等信息,祝愿广大网友取得需要的信息,参考学习。
自绘按钮一、位图按钮的实现方法:首先,我们创建一个基于对话框的应用程序 CmyDialog ;Ι.MFC 的 CBitmapButton 类,这也是最简单的功能最强的位图按钮。
我们可以采取如下的步骤:1. 为按钮指定唯一的按钮标题(此例子为 OK 按钮,这里设置按钮标题为 OK)并选中 Ownerdraw 属性,然后在项目中加一些位图资源,并用名字标示这些资源而不要用数字 ID,其 ID 分别为”OKU”、”OKD”、”OKF”、”OKX”(一定要加双引号),分别对应于按钮的“松开Up”、“按下Down”、“获得输入焦点focused”和“禁止Disable”状态。
2. 我们还要在对话框类中加入 CBitmapButton m_aBmpBtn数据成员。
3. 在初始化中为这个成员调用:…m_aBmpBtn. AutoLoadIDOKthis…点击编译按钮, 成功后运行程序,哈哈,看看效果, 我们的位图按钮已经建立了。
/如果以上方法不行请检查你的 BITMAP 资源, APPSTUDIO 中,quotOKUquot和 quotOKDquot 等的资源名称都是需要用引号引起来的, AutoLoad 不成功,很可能就是由此产生的。
/改变 CANCLE 按钮的标题,可以设置其标题为 ICON 或者 BITMAP :(这里我们演示了 bitmap 的用法,Icon 按钮读者可以按照下面的代码处理)Ⅱ.使用图标制作按钮1. 打开 ICON 按钮的属性页,在 Style 中选中 Icon 。
2. 在对话框类的头文件中定义成员变量 (使用 ClassWizard 加入这个成员变量)CButton m_ IconBtn;//对应于图标按钮3. 创建相应的图标或者位图资源:图标资源:IDI_ICONBUTTON4.在初始化中加入如下代码:…//对应于图标按钮HICON hIconAfxGetApp-gtLoadIconIDI_ ICONBUTTONm_IconBtn.SetIconhIcon…重新编译运行我们的程序,奇妙的图像按钮呈现在我们的眼前了。
Ⅲ.使用位图制作按钮1. 打开 BITMAP 按钮的属性页,在 Style 中选中 Bitmap。
2. 对话框类的头文件中定义成员变量(使用 ClassWizard 加入这个成员变量)CButton m_IconBtn;3.创建位图资源:位图资源:IDB_BITMAPBUTTON4.在初始化中加入如下代码://对应于位图按钮…HBITMAP hBmp::LoadBitmapAfxGetInstanceHandleMAKEINTRESOURCEIDB_ BITMAPBUTTONm_BmpBtn.SetBitmaphBmp二、一,只加载一张位图的方法:1, id装入 bmp 资源, 为 IDB_BMP按钮的 bitmap 属性设为 true,icon 属性为 false。
2,CButton pBtn CButton GetDlgItemIDB_BMPCBitmap bitMapHBITMAP hBit ifbitMap.LoadBitmapWIDB_NORMAL_BTN hBit HBITMAPbitMap.Detach pBtn-gtSetBitmaphBit缺点:图片不会自动拉伸。
二,为按钮的不同状态加载不同的位图:(使用 CBitmapButton 类)这种方法还可以。
1按钮属性 Owner Draw 选上,按钮 ID: IDC_BUTTON1为IDC_BUTTON1 添加CButton变量m_button2,然后手动将CButton m_button改为CBitmapButton m_button3,在初始化里边m_button.LoadBitmapsIDB_BITMAP1 IDB_BITMAP2//IDB_BITMAP1:平时;IDB_BITMAP2:按下m_button.SubclassDlgItemIDC_BUTTON1 thism_button.SizeToContent或者用另一种方式,不必为IDC_BUTTON1 添加关联的变量。
直接声明CBitmapButton m_button,在初始化里边调用m_BitmapBtn.AutoLoadIDC_BUTTON1_AREAthis//把按钮和变量联系起来m_BitmapBtn.LoadBitmapsIDB_BITMAP1 IDB_BITMAP2m_button.SizeToContent缺点:1,无法显示文字,需重载DrawItem函数。
2,无法去掉图片的背景色,即只能显示矩形按钮。
// NOTE: CMyButton is a class derived from CButton. The CMyButton// object was created as follows://// CMyButton myButton// myButton.Create_TquotMy buttonquot// WS_CHILDWS_VISIBLEBS_PUSHBUTTONBS_OWNERDRAW// CRect101010030 pParentWnd 1//// This example implements the DrawItem method for a CButton-derived// class that draws the buttons text using the color red.void CMyButton::DrawItemLPDRAWITEMSTRUCT