MFC 修改Button的颜色、Button不可用

来源:互联网 发布:淘宝券 编辑:程序博客网 时间:2024/06/08 13:25

感谢分享:

GetDlgItem(IDC_Upgrade_Btn)->EnableWindow(FALSE);

类向导-->WM_DRAWITEM



afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);

//修改Button背景颜色和字体颜色
void CSkinDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
    if(nIDCtl==IDC_BUTTON1) 
//checking for the button
    {   
        
//Button属性为自画    
        CDC dc;
        RECT rect;
        dc.Attach(lpDrawItemStruct ->hDC); 
// Get the Button DC to CDC 
        rect = lpDrawItemStruct->rcItem; 
//Store the Button rect to our local rect. 
        dc.Draw3dRect(&rect,RGB(255,255,255),RGB(0,0,0)); 
        dc.FillSolidRect(&rect,RGB(100,100,255));
//Here you can define the required color to appear on the Button.
        

//这部分去掉的话,就不会产生动态的按钮
        UINT state=lpDrawItemStruct->itemState; 
//This defines the state of the Push button either pressed or not.
        
        if((state & ODS_SELECTED))
        {
            dc.DrawEdge(&rect,EDGE_SUNKEN,BF_RECT); 
        }
        else
        {
            dc.DrawEdge(&rect,EDGE_RAISED,BF_RECT);
        }    
        
        dc.SetBkColor(RGB(100,100,255)); 
//Setting the Text Background color
        dc.SetTextColor(RGB(255,0,0)); 
//Setting the Text Color 
        
        TCHAR buffer[MAX_PATH]; 
//To store the Caption of the button.
        ZeroMemory(buffer,MAX_PATH ); 
//Intializing the buffer to zero
        ::GetWindowText(lpDrawItemStruct->hwndItem,buffer,MAX_PATH); 
//Get the Caption of Button Window 
        dc.DrawText(buffer,&rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE);
//Redraw the Caption of Button Window 
        dc.Detach(); 
// Detach the Button DC
    } 
    
    CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);
}

...

...

原创粉丝点击