CMFCToolBar и кнопки с подписями и стрелками
От: Kernel0  
Дата: 10.02.14 06:30
Оценка:
Нужно сделать сабж (как, например в Outlook 2007). Работаю в VS2010 под Win XP. Беру стандартный визардовый MDI проект. Тулбар создается стандартно:

if ( !m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER |
    CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
    !m_wndToolBar.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME))
{
    TRACE0("Не удалось создать панель инструментов\n");
    return -1;      // не удалось создать
}


Дальше мои попытки добавить стрелку для выпадающего меню и/или подпись к кнопке. Как я только не извращался...

(1)
// расширенный стиль почему-то не устанавливается
m_wndToolBar.ModifyStyleEx( 0, TBSTYLE_EX_MIXEDBUTTONS | TBSTYLE_EX_DRAWDDARROWS );
int i = m_wndToolBar.CommandToIndex( ID_TEST );
m_wndToolBar.SetButtonStyle( i, BTNS_BUTTON | BTNS_AUTOSIZE | BTNS_SHOWTEXT | BTNS_DROPDOWN );
// текст даже в качестве тултипа не устанавливается, не говоря уже о подписи
m_wndToolBar.SetButtonText( i, _T( "Test" ) );
// кнопка без изменений


В VS2005 для CToolBar этот способ работал, но там расширенный стиль ставился так:
m_wndToolBar.GetToolBarCtrl().SetExtendedStyle( TBSTYLE_EX_MIXEDBUTTONS );

Теперь же контрола тулбара вроде как нет.

(2)
// сделать хотя бы подпись...
int i = m_wndToolBar.CommandToIndex( ID_TEST );
CMFCToolBarButton* b = m_wndToolBar.GetButton(i);
b->m_strText = _T( "TEST" );
b->m_bText = true;
b->m_bImage = false;
// кнопка без изменений


(3)
// сделать хотя бы подпись...
int i = m_wndToolBar.CommandToIndex( ID_TEST );
CMFCToolBarButton* b = new CMFCToolBarButton( ID_TEST, ID_TEST - 1 , _T( "test" ), 1 );
b->m_strText = _T( "TEST" );
b->m_bText = true;
b->m_bImage = false;
b->Show(true);
m_wndToolBar.ReplaceButton( ID_TEST, *b );
// кнопка без изменений


(4)
// сделать хотя бы стрелку...
CMFCToolBarMenuButton* b = new CMFCToolBarMenuButton( ID_TEST, 0, ID_TEST, _T( "test" ) );
m_wndToolBar.ReplaceButton( ID_TEST, *b );
// кнопка без изменений


P.S. Подскажите, есть ли нормальная русская книжка по MFC в VS2010?
mfc cmfctoolbar cmfctoolbarbutton
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.