Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Die Microsoft Foundation Classes (MFC)-Bibliothek wird weiterhin unterstützt. Wir fügen jedoch keine Features mehr hinzu oder aktualisieren die Dokumentation.
Wie in Rebar-Steuerelementen und -Bändern erwähnt, kann jedes Band nur ein untergeordnetes Fenster (oder ein Steuerelement) enthalten. Dies kann eine Einschränkung darstellen, wenn Sie mehr als ein untergeordnetes Fenster pro Band haben möchten. Eine bequeme Lösung besteht darin, eine Dialog-Steuerelement-Ressource mit mehreren Steuerelementen zu erstellen und dann ein Rebar-Band (das die Dialog-Steuerelemente enthält) zu dem Rebar-Steuerelement hinzuzufügen.
Wenn das Dialogfeldleistenband normalerweise transparent angezeigt werden soll, würden Sie die WS_EX_TRANSPARENT erweiterte Formatvorlage für das Dialogfeldleistenobjekt festlegen. Da WS_EX_TRANSPARENT jedoch einige Probleme mit dem ordnungsgemäßen Zeichnen des Hintergrunds einer Dialogfeldleiste hat, müssen Sie ein wenig zusätzliche Arbeit ausführen, um den gewünschten Effekt zu erzielen.
Im folgenden Verfahren werden die Schritte beschrieben, die erforderlich sind, um Transparenz zu erreichen, ohne den erweiterten Stil WS_EX_TRANSPARENT zu verwenden.
So implementieren Sie eine transparente Dialogleiste in einem Rebar Band
Fügen Sie mithilfe des Dialogfelds "Klasse hinzufügen" eine neue Klasse (z. B. ) hinzu,
CMyDlgBardie das Dialogfeldleistenobjekt implementiert.Fügen Sie einen Handler für die WM_ERASEBKGND Nachricht hinzu.
Ändern Sie im neuen Handler den vorhandenen Code so, dass er dem folgenden Beispiel entspricht:
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; }Fügen Sie einen Handler für die WM_MOVE Nachricht hinzu.
Ändern Sie im neuen Handler den vorhandenen Code so, dass er dem folgenden Beispiel entspricht:
void CMyDlgBar::OnMove(int x, int y) { UNREFERENCED_PARAMETER(x); UNREFERENCED_PARAMETER(y); Invalidate(); }
Die neuen Handler simulieren die Transparenz der Dialogleiste, indem sie die Nachricht WM_ERASEBKGND an das übergeordnete Fenster weiterleiten und ein Neuzeichnen erzwingen, sobald das Dialogleistenobjekt bewegt wird.