小弟正在学习vc界面编程,请问如何为如何为按钮载入图标或者位图?小弟程序如下:
m_bitmap.LoadBitmap(IDB_BITMAP3);
CButton *m_pButton;
m_pButton=(CButton*)GetDlgItem(IDOK);// IDOK是按钮的ID
m_pButton->SetBitmap(HBITMAP(m_bitmap));
以上程序可以载入位图资源,但是必须将按钮属性设为bitmap,这样的话,按钮上的文字就无法显示了,如何让文字也一起显示呢?
还有就是如何为按钮载入图标资源?哪位大侠知道,请指教。
m_bitmap.LoadBitmap(IDB_BITMAP3);
CButton *m_pButton;
m_pButton=(CButton*)GetDlgItem(IDOK);// IDOK是按钮的ID
m_pButton->SetBitmap(HBITMAP(m_bitmap));
以上程序可以载入位图资源,但是必须将按钮属性设为bitmap,这样的话,按钮上的文字就无法显示了,如何让文字也一起显示呢?
还有就是如何为按钮载入图标资源?哪位大侠知道,请指教。
二 控件的自绘 http://www.vckbase.com/document/viewdoc/?id=551
把文字放在BitMap里,如果有必要,多弄几个BitMap,随使用的时候自动更换。
简单的几行代码,仅作参考:
void CCustomButton::PreSubclassWindow()
{
//modify the button,add the owner draw style
ModifyStyle(NULL,BS_OWNERDRAW);
CButton::PreSubclassWindow();
}void CCustomButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
dc.SetBkMode(TRANSPARENT); CRect rect;
GetClientRect(&rect);
//draw the frame
if ( (lpDrawItemStruct->itemState) & ODS_SELECTED )
{
CPen pen( PS_INSIDEFRAME,2,RGB(128,0,255));
CPen *ppen = NULL;
ppen = dc.SelectObject(&pen);
dc.Rectangle(&rect);
dc.SelectObject(ppen);
}
else if ( (lpDrawItemStruct->itemState) & ODS_FOCUS )
{
CPen pen( PS_INSIDEFRAME,2,RGB(255,0,255));
CPen *ppen = NULL;
ppen = dc.SelectObject(&pen);
dc.Rectangle(&rect);
dc.SelectObject(ppen);
}
else
{
CPen pen( PS_INSIDEFRAME,2,RGB(0,128,255));
CPen *ppen = NULL;
ppen = dc.SelectObject(&pen);
dc.Rectangle(&rect);
dc.SelectObject(ppen);
}
//fill
rect.DeflateRect(2,2,2,2);
if ((lpDrawItemStruct->itemState) & ODS_DISABLED)
{
dc.FillSolidRect(&rect,RGB(0,128,0));
dc.SetTextColor( RGB(187,0,187) );
}
else
{
dc.FillSolidRect(&rect,RGB(0,255,0));
dc.SetTextColor( RGB(255,0,0) );
}
//draw the text
CString title;
GetWindowText(title);
dc.DrawText(title,&(lpDrawItemStruct->rcItem),DT_CENTER
| DT_VCENTER | DT_SINGLELINE);}