본문 바로가기

먹고 사는 일/VC++

여러 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++)통

'먹고 사는 일 > VC++' 카테고리의 다른 글

Control 배경 삭제  (0) 2010.06.25
프로그램에서 Process 실행하기(exe)  (0) 2010.06.25
창 움직이기  (0) 2010.06.25
PtInRect  (0) 2010.06.25
메뉴 띄우기  (0) 2010.06.25