共用方式為


搭配使用對話方塊列與 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)