ツールバーを使用して MDI アプリケーションを作成しましたが、子ウィンドウがフレーム ウィンドウのツールバーをオーバードローします。これが効果です。ツールバーのアイコンを表示するには、左隅をクリックする必要があります。
次のコードでツールバーを作成します。
CToolBar::CToolBar(HINSTANCE hInst, HWND hParent, LPCTSTR lpszWindowName) :
CWindow(hInst, hParent, lpszWindowName)
{
INITCOMMONCONTROLSEX icex;
// Ensure that the common control DLL is loaded.
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_BAR_CLASSES;
InitCommonControlsEx(&icex);
lstrcpy(m_szClassName, TOOLBARCLASSNAME);
}
BOOL CToolBar::Create()
{
//create the toolbar
m_hWnd = CreateWindowEx(0, TOOLBARCLASSNAME, (LPCTSTR) NULL,
WS_CHILD, 0, 0, 0, 0, m_hParent,
(HMENU) ID_TOOLBAR, m_hInst, NULL);
//for backword compatibility
SendMessage(m_hWnd, TB_BUTTONSTRUCTSIZE, (WPARAM) sizeof(TBBUTTON), 0);
if (m_hWnd == NULL)
return FALSE;
return TRUE;
}
BOOL CToolBar::Init()
{
TBBUTTON tbb[3];
TBADDBITMAP tbab;
if (! Create() )
return FALSE;
//Add standard toolbar bitmaps
tbab.hInst = HINST_COMMCTRL;
tbab.nID = IDB_STD_SMALL_COLOR;
SendMessage(m_hWnd, TB_ADDBITMAP, 0, (LPARAM)&tbab);
//Add buttons
ZeroMemory(tbb, sizeof(tbb));
tbb[0].iBitmap = STD_CUT;
tbb[0].idCommand = IDS_CUT;
tbb[0].fsState = TBSTATE_ENABLED;
tbb[0].fsStyle = TBSTYLE_BUTTON;
tbb[1].iBitmap = STD_COPY;
tbb[1].idCommand = IDS_COPY;
tbb[1].fsState = TBSTATE_ENABLED;
tbb[1].fsStyle = TBSTYLE_BUTTON;
tbb[2].iBitmap = STD_PASTE;
tbb[2].idCommand = IDS_PASTE;
tbb[2].fsState = TBSTATE_ENABLED;
tbb[2].fsStyle = TBSTYLE_BUTTON;
SendMessage(m_hWnd, TB_ADDBUTTONS, (WPARAM) 3, (LPARAM) (LPTBBUTTON) &tbb);
ShowWindow(m_hWnd, SW_NORMAL);
return TRUE;
}
SDI ウィンドウでテストしたところ、うまく機能しましたが、MDICLIENT (クライアント) ウィンドウを作成した後はうまくいきませんでした。
この独特の問題を回避するのを手伝ってください。https://code.google.com/p/jcyangs-code/source/browse/trunk/com/lib/ですべてのソース コードを取得できます。
ありがとう。