これが私がそれを機能させる方法です:
初め
、他の人が言ったように、メインツールバーの横に非表示のツールバーを作成します(私は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) );
}
}
2番目:画像とツールバーのリソース
IDR_MAINFRAME
IDR_MAINFRAME_256
AppWizardによって生成されました。前者は醜い16色バージョンで、後者は面白いハイカラーバージョンです。
その名前にもかかわらず、私が正しく覚えていれば、AppWizardで生成された画像でさえ24ビットの色深度を持っています。すばらしい点:32ビット画像に置き換えるだけでうまくいきます。
目に見えないツールバーがありますIDR_OTHERTOOLBAR
:私はリソースエディタでツールバーを作成しました。いくつかのダミーアイコンとコマンドID。次に、VSはビットマップを生成し、それをハイカラーバージョンに置き換えました。終わり!
ノート
リソースエディタでツールバーを開かないでください。何かを実行する前に、ツールバーを4ビットに変換する必要がある場合があります。そして、それを許可しても(Visual Studioの背後で、結果を再びハイカラー画像に置き換えるためです)、ツールバーを編集できないことがわかりました(場合によっては?)。非常に奇妙な。
その場合は、.rcファイルを直接編集することをお勧めします。