2012-02-16 2 views
3

Я хочу, чтобы панель инструментов в MFC (CMFCToolBar) выглядела прозрачной, как и по умолчанию, значение CMFCMenuBar.CMFCMenuBar вид прозрачности для CMFCToolBar

Я использую стили управления TBSTYLE_FLAT | TBSTYLE_TRANSPARENT при создании панели инструментов и получаю прозрачный фон. Тем не менее, у меня все еще есть верхняя и нижняя граница, и захват остается таким же.

SetBorders(0,0,0,0) или удаление стилей CBRS_BORDER_TOP | CBRS_BORDER_BOTTOM не будет делать трюк.

И использование CCS_NODIVIDER (для видимого удаления верхней границы 2px) также не имеет эффекта.

Я мог представить себе, что пользовательский класс CMFCVisualManager может быть способом (например, играть с CMFCVisualManager::OnFillBarBackground), но не мог ничего понять по этому поводу.

Чтобы было ясно, что это код, который я в настоящее время:

m_wndToolBar.CreateEx(this /*MainFrame*/, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT, 
         WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP) 
LoadToolBar(IDR_MY_TOOLBAR, 0, 0, TRUE); 
m_wndToolBar.SetPaneStyle(GetPaneStyle() & ~(CBRS_BORDER_TOP | 
              CBRS_BORDER_BOTTOM | 
              CBRS_BORDER_LEFT | 
              CBRS_BORDER_RIGHT)); 
m_wndToolBar.SetBorders(0,0,0,0); 

Вот где я сейчас:

И это моя цель:

enter image description here

Любая помощь очень ppreciated!

+0

Вы пытаетесь удалить 'CBRS_GRIPPER'? Подумайте о публикации в своем вопросе фактического кода, который вы используете для создания/изменения панели инструментов. –

+0

Я не хочу удалять захват, я просто хотел бы, чтобы он выглядел так же, как с CMFCMenuBar, т. Е. Прозрачным. – mrknownothing

ответ

0

Вы пробовали позвонить SetExclusiveRowMode(true)? Строки меню имеют эксклюзивный набор режимов строки, панели инструментов по умолчанию не установлены.

+0

Да, на самом деле у меня есть режим эксклюзивных строк, равный true, который работает отлично, но ничего не меняет прозрачность. – mrknownothing

Смежные вопросы