2010-09-21 10 views
1

Mon application utilise MFC Ribbon (VS2008 + Feature Pack9). Je ne suis pas en mesure de modifier la couleur du texte de la barre de contrôle RibbonStatus.Je remplace l'int virtuel DrawPaneText (CDC * pDC, const CString & strText, CRect rectText, UINT uiDTFlags) mais les choses ne fonctionnent pas.Comment changer la couleur du texte RibbonStatusBarPane?

Dans la barre d'état non Ribbon, il existe une fonction void SetPaneTextColor (int nIndex, COLORREF clrText = (COLORREF) -1, BOOL bUpdate) afin de changer la couleur du texte du volet.

comment faire cela dans MFCRibbonStatusBarPane?

Répondre

0
class MyPane : public CMFCRibbonStatusBarPane 
{ 
public: 
    MyPane(){}; 
    MyPane(
     UINT nCmdID, 
     LPCTSTR lpszText, 
     BOOL bIsStatic = FALSE,  
     HICON hIcon = NULL, 
     LPCTSTR lpszAlmostLargeText = NULL) 
:CMFCRibbonStatusBarPane(nCmdID, 
lpszText,bIsStatic,hIcon,lpszAlmostLargeText){} 
MyPane(
    UINT nCmdID,   
    LPCTSTR lpszText,   
    HBITMAP hBmpAnimationList, list 
    int cxAnimation = 16, 
    COLORREF clrTrnsp= RGB(192,192,192), 
    HICON hIcon = NULL, 
    BOOL bIsStatic = FALSE) 
:CMFCRibbonStatusBarPane(nCmdID,lpszText, 
hBmpAnimationList,cxAnimation,clrTrnsp,hIcon,bIsStatic){} 

MyPane(
    UINT nCmdID, 
    LPCTSTR lpszText, 
    UINT uiAnimationListResID, 
    int cxAnimation = 16, 
    COLORREF clrTrnsp= RGB(192,192,192), 
    HICON hIcon = NULL, 
    BOOL bIsStatic = FALSE) 
:CMFCRibbonStatusBarPane(nCmdID,lpszText, 
uiAnimationListResID,cxAnimation,clrTrnsp, hIcon,bIsStatic){} 



~MyPane(){}; 

virtual COLORREF OnFillBackground(CDC* pDC)override 
{ 
    return RGB(255,0,0); //return whatever new color you want 
} 
}; 

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{ 
[...] 
    m_wndStatusBar.AddElement(new MyPane(ID_STATUSBAR_PANE1, strTitlePane1, TRUE), strTitlePane1); 
    m_wndStatusBar.AddExtendedElement(new MyPane(ID_STATUSBAR_PANE2, strTitlePane2, TRUE), strTitlePane2); 

[...] 
} 
Questions connexes