툴바에 컨트롤을 추가하는 예제

Posted by 빵빵빵
2009/03/05 16:05 전산(컴퓨터)/PC-Windows



 
 

개발 환경

 

  1. OS 환경  : WindowXP

  2. 사용 언어 : VC++ 6.0

  3. 개발에 필요한 환경 1) Resource View탭을 선택합니다.

                              2) TestStatusBar resources를 선택하고 오른쪽버튼을 클릭합니다.

                              3) Insert를 선택하고 resources type에서 Toolbar를 선택하여 Toolbar

                                  resources를 추가합니다.

 

 

◈ 프로그램 설명

 

 1. 툴바에 추가될 콤보박스를 생성합니다.

 2. 생성된 툴바는 DockControlBar()함수의 내부적인 수행으로 인해 툴바내의 영역 이외의

     공간에 다른 컨트롤을 생성하게 되면 보이지 않는 문제가 있습니다.

     그래서, 툴바위의 다른 버튼들에 영향을 주지 않게 하기 위해서는, 툴바 위에 아무 역할을

     수행하지 않는 버튼들을 더 추가하여 툴바의 길이를 늘리고, 그 위에 컨트롤을 배치합니다.

 3. 콤보박스에 문자열을 추가하여, 선택된 문자열은 메시지를 통해서 출력됩니다.

 

 

◈ 중요 소스 설명

 

CFrameWnd에서 계승받은 MainFrame클래스에 OnCreate ()함수를 이용해서 툴바위에 콤보박스를

생성하고 문자열을 추가하는 코드입니다.

 
    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
        if(CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1;
        
        if(!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP |
           CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
           !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)){
            TRACE0("Failed to create toolbar\n");
            return -1;
        }
     
        if(!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators,
              sizeof(indicators)/sizeof(UINT))){
            TRACE0("Failed to create status bar\n");
            return -1;
        }
       
        // 상태바에 추가될 콤보박스 를 생성한다.
        m_combo.Create(WS_CHILD | WS_VISIBLE | CBS_HASSTRINGS | CBS_DROPDOWNLIST,
                           CRect(200, 0, 295, 100), &m_wndToolBar, 16000);
        m_combo.AddString("TIPSSOFT");
        m_combo.AddString("TIPSWARE");
        m_combo.AddString("팁소프트");
       
        m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
        EnableDocking(CBRS_ALIGN_ANY);
        DockControlBar(&m_wndToolBar);
        
        return 0;
    }
 

 

Continue...(추가적으로 코드가 필요하신 경우에는 소스를 다운받아 참조하세요.)

2009/03/05 16:05 2009/03/05 16:05

이 글에는 트랙백을 보낼 수 없습니다