//這是主視窗生成按鈕
MyButton* btn = new MyButton();
btn->Create(pStr, dwStyle, CRect(left, top, right, bottom), this->GetParent(), IDC_D_BTN + index);
//自繪按鈕
void MyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
int nSaveDC = pDC->SaveDC();//存盤當前設備環境,以便繪圖結束時恢復原來狀態
pDC->SelectObject(&m_normalBrush);//選擇按鈕正常狀態(默認狀態)下的畫刷
VERIFY(pDC);
pDC->SelectObject(&m_Pen);//選擇畫筆
CRect rct = lpDrawItemStruct->rcItem;//獲取按鈕矩形區域
if (lpDrawItemStruct->itemState & ODS_SELECTED)//繪制按鈕按下時的顏色
{
pDC->SelectObject(&m_activeBrush);
}
pDC->Rectangle(&rct);//畫方形按鈕,這一步用了之前選擇的畫筆和畫刷
//重繪字體
pDC->SetBkMode(TRANSPARENT);
CString strText{};
GetWindowText(strText);//獲取按鈕文本
pDC->DrawText(strText, rct, DT_CENTER | DT_VCENTER | DT_SINGLELINE);//重繪按鈕文本
//恢復設備環境
pDC->RestoreDC(nSaveDC);
}
uj5u.com熱心網友回復:
//btn->MoveWindow(CRect(left, top, right, bottom));//位置和按鈕大小
//btn->SetBitmap((HBITMAP)LoadImage(AfxGetInstanceHandle(),"1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION));
網上看到一句這個代碼,說是添加位圖的代碼,我添加進去程式,并沒有用;
而且這句代碼的意思是什么?
哪個是位圖的ID我都沒看出來
uj5u.com熱心網友回復:
自繪或位圖按鈕要有 BS_OWNERDRAW 風格btn->Create(pStr, dwStyle | BS_OWNERDRAW,
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/231194.html
標籤:界面
上一篇:關于std命名空間的問題
