求教各位高手:  
 在VC中如何改变状态拦中某个分格的颜色?
  高手们多多帮忙,小弟万分感谢~~

解决方案 »

  1.   

    1、从CStatusBar派生自己的子类,CMyStatusBar
    2、用CMyStatusBar替换CMainFrame中m_wndStatusBar的类型。
    3、在为你需要改变颜色的pane设置SBT_OWNERDRAW风格。
    4、重载DrawItem函数,类似于:void CMyStatusBar::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
    {
    switch(lpDrawItemStruct->itemID)
    {
    case SOME_ID:
    { // 需要修改背景的pane的id;
    dc.Attach(lpDrawItemStruct->hDC);
    // 绘制背景和文字
    dc.Detach();
    break;
    }
    default: // 其他的pane
    CStatusBar::DrawItem(lpDrawItemStruct);
    }
      

  2.   

    有些问题:
    首先,在MFC中无法从CStatusBar派生,只能从CStatusBarCtrl派生,难道是因为我的VC是盗版的原因?
    其次,用CStatusBarCtrl派生出的类很多函数都和CStatusBar的用法不同,改了半天只是把以前的状态栏改没了,但没达到目的.大侠们用此功能时都能从CStatusBar直接派生吗?还是另需设置?
    希望大侠们再帮我费费心,谢谢~~
      

  3.   

    只要是个类,一般都是可以派生的,所以可以将CStatusBarCtrl改为CStatusBar即可。