Rebar 컨트롤이 대화 상자 표시줄 사용
설명한 것 처럼 Rebar 컨트롤 및 밴드, 각 밴드에는 하나의 자식 창 (또는 컨트롤) 포함 될 수 있습니다.원하는 밴드 자식 창이 두 개 이상 있을 경우이 제한 수 있습니다.편리한 해결 방법을 여러 컨트롤과 대화 상자 막대 리소스를 만들고 다음 (대화 상자 표시줄 포함)는 rebar 밴드를 rebar 컨트롤에 추가 하는 것.
일반적으로 투명 하 게 표시 하려면 대화 상자 표시줄 밴드 원하는 경우에서는 설정 하는 WS_EX_TRANSPARENT 스타일 대화 상자 막대 개체에 대 한 확장입니다.그러나 때문에 WS_EX_TRANSPARENT 몇 가지 문제를 제대로 대화 상자 표시줄의 배경을 그리기, 원하는 효과 얻기 위해 약간의 추가 작업을 수행 해야 합니다.
다음 절차를 사용 하지 않고 투명도 달성 하는 데 필요한 단계에 자세히 설명의 WS_EX_TRANSPARENT 스타일을 확장 합니다.
Rebar 밴드에 투명 대화 상자 막대를 구현.
사용 하는 클래스 추가 대화 상자, 새 클래스를 추가 합니다. (예를 들어, CMyDlgBar) 대화 상자 표시줄 개체를 구현 하는.
추가 대 한 처리기를 WM_ERASEBKGND 메시지입니다.
새 처리기에서 기존 코드를 다음 예제와 일치 하도록 수정 합니다.
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; }
추가 대 한 처리기를 WM_MOVE 메시지입니다.
새 처리기에서 기존 코드를 다음 예제와 일치 하도록 수정 합니다.
void CMyDlgBar::OnMove(int x, int y) { UNREFERENCED_PARAMETER(x); UNREFERENCED_PARAMETER(y); Invalidate(); }
투명도 대화 상자 막대를 전달 하 여 새 처리기를 시뮬레이션의 WM_ERASEBKGND 메시지를 부모 창 및 대화 상자 막대 개체가 이동할 때마다 다시 강제로.