读书人

郁闷CBitmapButton加背景图出错搞

发布时间: 2012-03-09 21:42:54 作者: rapoo

郁闷,CBitmapButton加背景图出错,搞了半天,大侠进来
我的是切分窗口,在一个基于CFormView里直接加按钮
小弟照着MSDN,又找了些资料,搞了半天没搞定,方法如下

1 在CFormView中加入 CBitmapButton Button1
2 对话框模版按钮ID IDC_MYIMAGE1 标题MYIMAGE1
风格选中位图和所有者给制

3 引入资源位图 "MYIMAGE1U "

4 在CFormView里响应OnCreate(),加代码
Button1.AutoLoad(IDC_MYIMAGE1,this);

运行后出现按钮,但是即没有标题又没有背景图

风格中只选位图去掉所有者绘制还是不行

大侠指教


[解决办法]
图按钮。

将确定的按钮的自画风格钩上,将确定按钮的标题改为OK,加四幅位图, “OKU”,”OKD”,”OKF”,”OKX”,分别对就按钮弹起来,被按下去,获得焦点,禁用情况,注意位图名有引号。

定义一个成员变量CBitmapButton bb,在OnInitDialog()加

bb.AutoLoad(IDOK,this);

有一个问题要注意,当点上自画时,默认按钮会被取消,所以你必须重新设定一个默认按钮。

将上面的一句改成:

bb.LoadBitmaps( "OKU ");//最多可以加载4幅,至少加载一幅。

bb.SubclassDlgItem(IDOK,this);//与控件建立关联。

bb.SizeToContent();//改变控件的大小来适应位图



自画按钮:

将取消按钮的自画钩上,Ctrl+w打开类向导,双击加CControlDlg的消息WM_DRAWITEM的响应函数。

void CControlsDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)

{

if(IDCANCEL ==nIDCtl)

{

CDC *pDC = new CDC();

pDC-> Attach(lpDrawItemStruct-> hDC);

pDC-> TextOut(10,10, "haha ");

}



CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);

}

备用函数

CRect r;

GetClientRect(&r);

r存储了取消按钮的边界值。

读书人网 >VC/MFC

热点推荐