Aracılığıyla paylaş


Rebar Denetimiyle Birlikte Bir İletişim Çubuğu Kullanma

Rebar Denetimleri ve Bantlar'da belirtildiği gibi, her bant yalnızca bir alt pencere (veya denetim) içerebilir. Bant başına birden fazla alt pencere olmasını istiyorsanız bu bir sınırlama olabilir. Kullanışlı bir geçici çözüm, birden çok denetime sahip bir iletişim çubuğu kaynağı oluşturmak ve ardından rebar denetimine bir rebar bandı (iletişim çubuğunu içeren) eklemektir.

Normalde, iletişim çubuğu bandının saydam görünmesini istiyorsanız, iletişim çubuğu nesnesi için WS_EX_TRANSPARENT genişletilmiş stilini ayarlarsınız. Ancak, WS_EX_TRANSPARENT bir iletişim kutusunun arka planını düzgün boyamayla ilgili bazı sorunları olduğundan, istenen etkiyi elde etmek için biraz ek çalışma yapmanız gerekir.

Aşağıdaki yordam, WS_EX_TRANSPARENT genişletilmiş stili kullanmadan saydamlık elde etmek için gereken adımları ayrıntılarıyla açıklar.

Bir rebar bandında saydam iletişim kutusu çubuğu uygulamak için

  1. Sınıf Ekle iletişim kutusunu kullanarak, iletişim kutusu çubuğu nesnenizi uygulayan yeni bir sınıf (örneğin, CMyDlgBar) ekleyin.

  2. WM_ERASEBKGND iletisi için bir işleyici ekleyin.

  3. Yeni işleyicide, mevcut kodu aşağıdaki örnekle eşleşecek şekilde değiştirin:

    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 iletisi için bir işleyici ekleyin.

  5. Yeni işleyicide, mevcut kodu aşağıdaki örnekle eşleşecek şekilde değiştirin:

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

Yeni işleyiciler, WM_ERASEBKGND iletisini üst pencereye ileterek ve iletişim çubuğu nesnesi her taşındığında yeniden boyanmaya zorlayarak iletişim çubuğunun saydamlığını simüle eder.

Ayrıca bkz.

CReBarCtrl Kullanma
Denetimler