2012-06-19 3 views
0

툴바를 사용하여 MDI 애플리케이션을 작성했지만 하위 창은 프레임 창의 툴바를 오버 드로합니다. 효과는 다음과 같습니다. 도구 모음 아이콘을 보려면 왼쪽 모서리를 클릭해야합니다.MDI 자식 Windows 프레임 도구 모음을 초과 사용 하시겠습니까?

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 (클라이언트) 창을 만든 후, 그것은 짜증 :

enter image description here

나는 다음 코드를 사용하여 도구 모음을 만들 수 있습니다.

이 독특한 문제를 해결하는 데 도움을주십시오. 모든 소스 코드를 얻을 수 있습니다 https://code.google.com/p/jcyangs-code/source/browse/trunk/com/lib/

감사합니다.

답변

0

프레임 윈도우의 WM_SIZE 메시지를 처리합니다.