我们有时希望对应按钮的不同状态,按钮可以有不同的显示形式。比如通常情况下按钮的四种状态
正常显示 (Up) 鼠标按下(Down) 获得焦点(Focus) 不可用(Disable)
因此可以用四张位图来对应这四种状态,我们不需要为每一种状态单独加载位图,只需要利用
CBitmapButton类即可
总共有两种方法实现:
下面先说第一种:
假如有四张位图:IDB_BMP_UP IDB_BMP_DOWN IDB_BMP_FOCUS IDB_BMP_DISABLE
给对话框添加一个CBitmapButton类的对象 m_bmpBtn;
在对话框上方一个按钮 ID : IDC_BTN_IMG 设置Owner draw属性
然后在OnInitDialog中:
m_bmpBtn.LoadBitmaps( IDB_BMP_UP,IDB_BMP_DOWN,IDB_BMP_FOCUS,IDB_BMP_DISABLE);
m_bmpBtn.SubclassDlgItem( IDC_BTN_IMG , this );即可
其中SubclassDlgItem(UINT nID, CWnd* pParent)用来将m_bmpBtn和IDC_BTN_IMG关联起来
第二种方法:
用AutoLoad(UINT nID, CWnd* pParent),顾名思义,就是自动为按钮加载位图
可是光看这个函数似乎跟位图 并没有扯上关系啊???
这就需要从位图的命名上下功夫了,直接使用上面的位图是不可以的,需要重新命名一下
假如按钮的caption为:image(一定要有) 则四张位图分别为:
"imageU" "imageD" "imageF" "imageX"
注意四张位图的的ID 是有双引号的