Попытка создать свою собственную панель инструментов внутри класса Mainframe VS 6.0

У меня проблемы с созданием собственной панели инструментов внутри мейнфрейма. У меня есть растровые изображения кнопок, которые я хочу использовать для своей собственной панели инструментов, но проблема в том, что панель инструментов отображается внутри представления моего приложения SDI. Вот изображение неправильно отображаемой панели инструментов.

http://www.flickr.com/photos/14402427@N02/3409050475/< /а>

Вот код внутри функции OnCreate класса Mainframe: у меня также есть

// CToolBarCtrl m_wndToolBar; declared inside the MainFrame.h class.


      if(m_wndToolBar.Create(WS_CHILD |  TBSTYLE_FLAT | WS_VISIBLE | CBRS_TOP
        | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC
            ,CRect(0,0,250,50),this,0))
    {
        TRACE0("Failed to create toolbar\n");
        return -1;      // fail to create
    }

        TBBUTTON       tbbutton[3] = {0};
      CSize        button_size(90,90);      
      CSize        bitmap_size(80,80);     

      //m_wndToolBar.AddStrings("String 1\0String 2\0String 3\0");

      tbbutton[0].iBitmap                  = 0;      
      tbbutton[0].idCommand            = ID_CONNECT;
    tbbutton[0].fsState                  = TBSTATE_ENABLED;      
      tbbutton[0].fsStyle                  = TBSTYLE_BUTTON;
      tbbutton[0].dwData                  = 0;     
      tbbutton[0].iString                  = 0;

      tbbutton[1].iBitmap                  = 1;      
      tbbutton[1].idCommand            = ID_DISCONNECT;
    tbbutton[1].fsState                  = TBSTATE_ENABLED;       
      tbbutton[1].fsStyle                  = TBSTYLE_BUTTON;
    tbbutton[1].dwData                  = 0;     
      tbbutton[1].iString                  = 1;

      tbbutton[2].iBitmap                  = 2;      
      tbbutton[2].idCommand              = ID_STOP;
    tbbutton[2].fsState                  = TBSTATE_ENABLED;      
      tbbutton[2].fsStyle                  = TBSTYLE_BUTTON   ;
    tbbutton[2].dwData                  = 0;     
      tbbutton[2].iString                  = 2;

m_wndToolBar.SetButtonSize(button_size);
m_wndToolBar.SetBitmapSize( bitmap_size);

m_wndToolBar.AddButtons(3,tbbutton);
m_wndToolBar.AddBitmap(1,IDB_BITMAP1);
m_wndToolBar.AddBitmap(1,IDB_BITMAP2);
m_wndToolBar.AddBitmap(1,IDB_BITMAP3);

return TRUE;

person Community    schedule 03.04.2009    source источник


Ответы (2)


Добавьте вызов DockControlBar(&m_wndToolBar) непосредственно перед return.

person Anthony Williams    schedule 23.09.2010

По твоему изображению кажется, что оно не нарисовано или не правильно нарисовано, ты пробовал сначала добавлять битмапы, а потом добавлять кнопки? или вы можете вызвать AutoSize на m_wndToolbarBar.?

person Ismael    schedule 03.04.2009
comment
Спасибо за совет. Я попробовал то, что вы предложили при первом вызове метода AddBitmap, а затем вызове AddButtons, но происходит то, что я получаю полуработающую панель инструментов, но внутри области просмотра или клиентской области, а не часть фрейма вверху чуть ниже меню. - person ; 04.04.2009
comment
К сожалению, у меня нет VC 6 под рукой. Что бы я сделал, так это создал новый проект MFC SDI с панелью инструментов, а затем скопировал флаги и код инициализации, используемые мастером MFC. - person Ismael; 04.04.2009