Rebar 컨트롤이 대화 상자 표시줄 사용

설명한 것 처럼 Rebar 컨트롤 및 밴드, 각 밴드에는 하나의 자식 창 (또는 컨트롤) 포함 될 수 있습니다.원하는 밴드 자식 창이 두 개 이상 있을 경우이 제한 수 있습니다.편리한 해결 방법을 여러 컨트롤과 대화 상자 막대 리소스를 만들고 다음 (대화 상자 표시줄 포함)는 rebar 밴드를 rebar 컨트롤에 추가 하는 것.

일반적으로 투명 하 게 표시 하려면 대화 상자 표시줄 밴드 원하는 경우에서는 설정 하는 WS_EX_TRANSPARENT 스타일 대화 상자 막대 개체에 대 한 확장입니다.그러나 때문에 WS_EX_TRANSPARENT 몇 가지 문제를 제대로 대화 상자 표시줄의 배경을 그리기, 원하는 효과 얻기 위해 약간의 추가 작업을 수행 해야 합니다.

다음 절차를 사용 하지 않고 투명도 달성 하는 데 필요한 단계에 자세히 설명의 WS_EX_TRANSPARENT 스타일을 확장 합니다.

Rebar 밴드에 투명 대화 상자 막대를 구현.

  1. 사용 하는 클래스 추가 대화 상자, 새 클래스를 추가 합니다. (예를 들어, CMyDlgBar) 대화 상자 표시줄 개체를 구현 하는.

  2. 추가 대 한 처리기를 WM_ERASEBKGND 메시지입니다.

  3. 새 처리기에서 기존 코드를 다음 예제와 일치 하도록 수정 합니다.

    BOOL CMyDlgBar::OnEraseBkgnd(CDC* pDC)
    {
        CWnd* pParent = GetParent();
        ASSERT_VALID(pParent);
        CPoint pt(0, 0);
        MapWindowPoints(pParent, &pt, 1);
        pt = pDC->OffsetWindowOrg(pt.x, pt.y);
        LRESULT lResult = pParent->SendMessage(WM_ERASEBKGND,
            (WPARAM)pDC->m_hDC, 0L);
        pDC->SetWindowOrg(pt.x, pt.y);
        return (BOOL)lResult;
    }
    
  4. 추가 대 한 처리기를 WM_MOVE 메시지입니다.

  5. 새 처리기에서 기존 코드를 다음 예제와 일치 하도록 수정 합니다.

    void CMyDlgBar::OnMove(int x, int y)
    {
       UNREFERENCED_PARAMETER(x);
       UNREFERENCED_PARAMETER(y);
    
       Invalidate();
    }
    

투명도 대화 상자 막대를 전달 하 여 새 처리기를 시뮬레이션의 WM_ERASEBKGND 메시지를 부모 창 및 대화 상자 막대 개체가 이동할 때마다 다시 강제로.

참고 항목

참조

CReBarCtrl 사용

개념

컨트롤 (MFC)