按钮不同状态显示不同图片
来源:互联网 发布:全国幼儿园名录数据库 编辑:程序博客网 时间:2024/06/05 20:00
1:新建一个类。
2:Base class 选择CButton(继承CButton类)
3:插入图片用于热点和非热点图片资源。
4:在CBmpButton的头文件中声明保存按钮在热点和非热点时显示的图片资源、自定义声明SetHBitmap()函数用来设置按钮显示的图片资源。
5:在CBmpButton的头文件中声明WM_MOUSEMOVE事件处理函数OnMouseMove捕捉鼠标的位置—当鼠标在按钮上时显示热点图片,否则显示非热点图片。
6: CBmpButton的头文件为
#if !defined(AFX_BMPBUTTON_H__F5347CC7_F08E_47AB_A1D2_AEAFF74DA65C__INCLUDED_)
#define AFX_BMPBUTTON_H__F5347CC7_F08E_47AB_A1D2_AEAFF74DA65C__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// BmpButton.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CBmpButton window
class CBmpButton : public CButton
{
// Construction
public:
CBmpButton();
HBITMAP m_Hbitmap1; //m_Hbitmap1保存按钮在热点时显示的图片资源
HBITMAP m_Hbitmap2; //m_Hbitmap2保存按钮在非热点时显示的图片资源
// Attributes
public:
// Operations
public:
void SetHBitmap(HBITMAP m_Hbitmap1,HBITMAP m_Hbitmap2) ; //用来保存按钮显示的图片资源
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CBmpButton)
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CBmpButton();
// Generated message map functions
protected:
//{{AFX_MSG(CBmpButton)
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_BMPBUTTON_H__F5347CC7_F08E_47AB_A1D2_AEAFF74DA65C__INCLUDED_)
7:写SetHBitmap()函数中的代码
void CBmpButton::SetHBitmap(HBITMAP m_hbmap1,HBITMAP m_hbmap2)
{
m_Hbitmap1=m_hbmap1; //将图片资源保存到变量中
m_Hbitmap2=m_hbmap2; //将图片资源保存到变量中
}
8:写OnMouseMove()函数代码
void CBmpButton::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CButton::OnMouseMove(nFlags, point); //获取鼠标移动的坐标位置
CRect rect;
GetClientRect(&rect); //获取按钮的矩形区域
if(rect.PtInRect(point)) //判断鼠标移动的坐标位置是否在按钮的矩形区域当中
{
SetCapture();
SetBitmap(m_Hbitmap1);
}
else
{
ReleaseCapture();
SetBitmap(m_Hbitmap2);
}
}
9:设置按钮属性
为按钮关联变量
10:在包含按钮的窗口类的初始化窗口函数(OnInitDialog())
BOOL CLogin::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
//当初始化窗口时,先载入的图片
m_test.SetBitmap(LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_HOU)));
//当鼠标移动到按钮范围内时变IDB_QIAN,移出按钮范围后还原IDB_HOU
m_test.SetHBitmap(LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_QIAN)),
LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_HOU)));
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
11:鼠标无法抓屏鼠标直接画出
- 按钮不同状态显示不同图片
- 使按钮在不同状态时显示不同图片
- 加载按钮不同状态图片
- MFC 位图按钮CBitmapButton 实现不同状态显示不同位图
- 按钮的背景图片根据状态的不同而显示不同的图片,网上有介绍相关的方法。
- android 根据button不同状态显示不同(背景)图片(background!!!!!)
- iOS 两个按钮切换显示不同状态和页面
- Gtk+实现非规则按钮的不同状态图片切换
- Gtk+实现非规则按钮的不同状态图片切换
- 按钮点击与弹出时显示不同的图片
- Android中同一个ImageView中根据状态显示不同图片
- Android ImageButton 选中与不选中 不同状态之间显示不同图片的方式
- xml不同状态的显示
- 点击UIButton按钮,按钮切换不同图片
- esayui-ajax(不同的状态展示不同的按钮)
- 代码设置按钮不同状态的颜色
- 鼠标经过显示不同图片
- 按钮的不同动作显示不同的图标
- sfilter.inf 修改
- Activex系列之一---利用VC6.0的向导创建一个ocx控件的示例
- 数据结构复习题(二)
- Android对于APN
- 彩信系统结构介绍
- 按钮不同状态显示不同图片
- oracle 中escape 关键字用法
- Android套接字编程
- oradebug 简介!
- 天津搜索引擎营销SEM(二)
- S3C2440-启动分析
- 数据结构复习题(三)
- 原生代码卷土重来 C++欲东山再起
- SDRAM参数