2010년 6월 25일 금요일

여러 ToolBar 를 하나의 ControlBar에 붙이기

Frame 에서 DockControlBar(CControlBar* pBar, CControlBar* pBarBase /* = NULL */) 를 상속받아 사용

 

void CControllerFrame::DockControlBar(CControlBar* pBar, CControlBar* pBarBase /* = NULL */)
{
 if (pBarBase != NULL)
 {
  CRect rcBase;
  DWORD dwStyleBase;
  UINT nDockBarID;

  RecalcLayout();

  pBarBase->GetWindowRect(rcBase);
  rcBase.OffsetRect(1,1);

  dwStyleBase = pBarBase->GetBarStyle();
  if  (dwStyleBase & CBRS_ALIGN_TOP)  nDockBarID = AFX_IDW_DOCKBAR_TOP;
  else if (dwStyleBase & CBRS_ALIGN_BOTTOM) nDockBarID = AFX_IDW_DOCKBAR_BOTTOM;
  else if (dwStyleBase & CBRS_ALIGN_LEFT)  nDockBarID = AFX_IDW_DOCKBAR_LEFT;
  else if (dwStyleBase & CBRS_ALIGN_RIGHT) nDockBarID = AFX_IDW_DOCKBAR_RIGHT;
  else          nDockBarID = 0;

  /// MDI 일때

  CMDIChildWnd::DockControlBar(pBar, nDockBarID, &rcBase);

  /// SDI일때

 /// CFrameWnd::DockControlBar(pBar, nDockBarID, &rcBase);
 }
 else

 {

 /// MID 일때
  CMDIChildWnd::DockControlBar(pBar);

 /// SDI 일때

  CFrameWnd::DockControlBar(pBar);

 }

}

 

Frame 에서 Toolbar를 생성하는 부분에 초기 생성되는 Bar를 넣고 그 위에 추가로 생성되는 Bar를 입력

 

OnCreate(LPCREATESTRUCT lpCreateStruct)

{

  .....

 /// pBarBase 가 NULL 이기 때문에 상위 Class 인 DockControlBar 호출
 DockControlBar(&m_wndToolBar);

 /// 재정의한 함수 적용후 호출

 DockControlBar( &m_wndEventToolBar, &m_wndToolBar);

.....

}


출처 : Tong - 공원님의 ┣ ★ 먹고사는일(VC++)통

댓글 없음:

댓글 쓰기