位图按钮显示按钮标题
大家好!
问题是这样的:
我想写一个按钮,其表面是用位图,文字是用户在定义按钮时写的。
我override了OnPaint()代码如下:
void CHlButton::OnPaint()
{
CPaintDC dc(this);
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap *pOldBmp;
pOldBmp=memDC.SelectObject(&m_bmBtn[m_uStateFlag]);//用m_bmBtn管理三种按钮状态各显示出来的位图,//m_StateFlag为UINT型变量
dc.StretchBlt(0,0,m_rtBtn.Width(),m_rtBtn.Height()-1,&memDC,0,0,m_bmBtnInfor[m_uStateFlag].bmWidth,m_bmBtnInfor[m_uStateFlag].bmHeight,SRCCOPY);
//Draw Text
HFONT hOldFont=(HFONT)dc.SelectObject((HFONT)::GetStockObject(DEFAULT_GUI_FONT));
dc.SetBkMode(TRANSPARENT);
dc.DrawText(m_strText,m_rtBtn,DT_CENTER|DT_SINGLELINE|DT_VCENTER);
memDC.SelectObject(pOldBmp);
dc.SelectObject(hOldFont);
ReleaseDC(&dc);
m_uStateFlag=HL_NORMAL;
}
同时,MessageMap OnLButtonDown():
void CHlButton::OnLButtonDown(UINT nFlags, CPoint point)
{
m_uStateFlag=HL_DOWN;
OnPaint();
}
其他状态时代马和OnLButtonDown()相似。
……
可是,执行结果,只显示正常状态时的按钮,对于按下,MouseOver状态则不显示。
恳请大家指导,谢谢了先!或者,能不能给出另外的方案也可以
Your Friend: Herry Lou
Email: Herry_lou&163,com