我从CStatusBar派生了一个类CMyStatusBar,在OnCreate里创建Button,但是为何显示不出来呢?????而m_button.Create()函数返回的是1,证明成功了啊,为何看不到呢?int CMyStatusBar::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
if (CStatusBar::OnCreate(lpCreateStruct) == -1)
return -1;
CRect rect;
GetItemRect(CommandToIndex(ID_MYBAR),&rect);//ID_MYBAR是我的状态格
m_button.Create("test",WS_VISIBLE|WS_CHILD|WS_BORDER,rect,this,ID_MYBAR); return 0;
}

解决方案 »

  1.   

    要m_button.ShowWindow(SW_SHOW);
      

  2.   

    错了,应该处理CStatusBar的WM_SIZE
    void CMyStatus::OnSize(UINT nType, int cx, int cy) 
    {
         CStatusBar::OnSize(nType, cx, cy);

         CRect rc;
         GetItemRect(0, &rc);
         m_button.MoveWindow(&rc,FALSE);}
      

  3.   

    see example of MPCStatusBar - An Enhanced CStatusBar:
    http://www.codeproject.com/statusbar/mpcstatusbar.asp
      

  4.   

    创建按钮后,为什么运行程序,BUTTON不显示呢? 但是单击BUtton后他才显示。?
      

  5.   

    int CMystateBar::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    {
    if (CStatusBar::OnCreate(lpCreateStruct) == -1)
    return -1;
    CRect rect(0,0,0,0);

    m_button.Create("dfd",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,rect,this,ID_BUTTON);
         
    return 0;
    }
    然后:
    void CMystateBar::OnSize(UINT nType, int cx, int cy) 
    {
    CStatusBar::OnSize(nType, cx, cy);
    UINT index;
        CRect rect;

        index=CommandToIndex(ID_BUTTON);
     
    GetItemRect(index,&rect);
    m_button.MoveWindow(rect);


    }