Вот как я заставил его работать:
Первый
, как сказали другие, создайте невидимую панель инструментов рядом с основной панелью инструментов (я использую обычные имена, основанные на именах AppWizard):
MainFrm.h:
class CMainFrame
{
//...
CMFCToolBar m_wndToolBar;
CMFCToolBar m_wndInvisibleToolBar;
//...
};
MainFrm.cpp:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
//...
// Normal, visible toolbar
if(m_wndToolBar.Create(this,
TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC))
{
VERIFY( m_wndToolBar.LoadToolBar(
theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME) );
// Only the docking makes the toolbar visible
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndToolBar);
}
// Invisible toolbar; simply calling Create(this) seems to be enough
if(m_wndInvisibleToolBar.Create(this))
{
// Just load, no docking and stuff
VERIFY( m_wndInvisibleToolBar.LoadToolBar(IDR_OTHERTOOLBAR) );
}
}
Второе: изображения и ресурсы панели инструментов
IDR_MAINFRAME
и IDR_MAINFRAME_256
были созданы AppWizard. Первая - уродливая 16-цветная версия, а вторая - интересная цветная версия.
Несмотря на название, если я правильно помню, даже изображение, созданное AppWizard, имеет глубину цвета 24 бита. Классная вещь: просто замените его на 32-битное изображение, и это тоже будет работать.
Есть невидимая панель инструментов IDR_OTHERTOOLBAR
: я создал панель инструментов с редактором ресурсов. Просто несколько фиктивных значков и идентификаторов команд. Затем VS сгенерировал растровое изображение, которое я заменил своей цветной версией. Готово!
Примечание
Не открывайте панели инструментов с помощью редактора ресурсов: возможно, придется преобразовать его в 4-битный, прежде чем он сможет что-либо с ним сделать. И даже , если вы позволите ему это сделать (потому что за спиной Visual Studio вы снова замените результат на цветное изображение, ха!), Я обнаружил, что это (иногда?) Просто не может редактировать панель инструментов. Очень странно.
В этом случае я советую напрямую отредактировать файл .rc.