想修改button控件文字顏色,自繪了MyButton類 基類CButton,可是按鍵沒顯示


想修改button控件文字顏色,自繪了MyButton類 基類CButton,可是按鍵沒有顯示,創建按鍵,添加變量類型為Mybutton,我點擊按鍵創建的位置有響應就是看不到按鍵,這是為什么?哪位幫幫忙謝謝
void MyButton::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
// TODO: Add your message handler code here and/or call default
CDC *pDC=CDC::FromHandle(lpDrawItemStruct->hDC);
m_ButRect=lpDrawItemStruct->rcItem;
if (m_strText.IsEmpty())GetWindowText(m_strText);
int nSavedDC=pDC->SaveDC();
VERIFY(pDC);
COLORREF bColor,fColor;
switch (m_Style)     
{
case 0:bColor=RGB(192,192,192);fColor=m_ForeColor;  //正常
break;
case 1:bColor=RGB(255,255,255);fColor=m_ForeColor;  //鼠標進入時
break;
case 2:bColor=RGB(192,192,192);fColor=m_ForeColor;   //按下時
break;
case 3:bColor=m_BackColor;fColor=m_LockForeColor;    //鎖定時
break;
}
CBrush Brush;
Brush.CreateSolidBrush(m_BackColor);
pDC->SelectObject(&Brush);
CPen Pen;
Pen.CreatePen(PS_SOLID,1,bColor);
pDC->SelectObject(&Pen);
pDC->RoundRect(&m_ButRect,CPoint(5,5));
if (m_Style!=2)
{
CRect Rect;
Rect.SetRect(m_ButRect.left+2,m_ButRect.top+1,m_ButRect.right,m_ButRect.bottom);
pDC->DrawEdge(&Rect,BDR_RAISEDINNER,BF_RECT);
}
pDC->SetTextColor(fColor);
pDC->SetBkMode(TRANSPARENT);
pDC->DrawText(m_strText,&m_ButRect,DT_SINGLELINE|DT_CENTER|DT_VCENTER|DT_END_ELLIPSIS);
if (GetFocus()==this)
{
CRect Rect;
Rect.SetRect(m_ButRect.left+3,m_ButRect.top+2,m_ButRect.right-3,m_ButRect.bottom-2);
pDC->DrawFocusRect(&Rect);
}
}

4 个解决方案

#1


你弄錯了,不是OnDrawItem,是DrawItem,沒有 On

#2


m_Style怎么確定的?根據lpDrawItemStruct->itemState就可以判斷狀態了

lpDrawItemStruct->itemState&ODS_SELECTED //按下時

#3


我把button控件的styles->Owner draw 屬性去掉能顯示,可是這樣自繪就沒效果了

#4


暈 我函數弄錯了  我在對話框里用ondrawitem ,自繪要用drawitem 新手

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com