Nachrichten an untergeordnete Fenster

Zurück Zum Inhaltsverzeichnis Weiter

Möchte ein Hauptfenster an alle seine Child-Windows eine Nachricht versenden, so kann hierfür die CWnd-Methode SendMessageToDescendants(...) verwendet werden. Als Parameter erhält diese Funktion zunächst die zu versendende Nachricht sowie deren beide Zusatzinformationen WPARAM und LPARAM. Zusätzlich können Sie über einen weiteren Parameter noch festlegen, ob die Nachricht nur an die unmittelbar untergeordneten Child-Windows gesendet werden soll oder an alle Child-Window, d.h. Sie können bestimmen, ob auch die Child-Windows der unmittelbaren Child-Window diese Nachricht erhalten sollen.

SendMessageToDescendants(...) sendet die Nachricht nur an Child-Window und nicht an untergeordnete Popup-Window. Wollen Sie an untergeordnete Popup-Window Nachrichten versenden, so können Sie dafür die Methode SendMessage(...) des Popup-Window verwenden

Die Methode kehrt erst dann wieder zurück, wenn alle Child-Window die Nachricht verarbeitet haben.

Das nachfolgende Listing zeigt einen Auszug aus dem Beispiel zu diesem Thema. Dort wird in der Methode OnClose(...) des Hauptfensters beim ersten Versuch das Hauptfenster zu schließen, die Nachricht WM_SETTEXT an die Child-Windows versandt. Diese Nachricht veranlasst alle Child-Window ihren Fenstertitel neu zu setzen.

void CMainFrame::OnClose()
{
    // TODO: Code für die Behandlungsroutine für Nachrichten hier einfügen....
    // Falls 2. Versuch das Fenster zu schliessen,
    // Fenster schliessen
    if (m_bClosing)
        CFrameWnd::OnClose();
    else
    {
        // Beim ersten Versuch das Fenster zu schliessen,
        // nur Nachricht an Child-Windows senden
        SendMessageToDescendants( WM_SETTEXT, 0, (LPARAM)"Next Time closing!");
        m_bClosing = true;
    }
}

Das fertige Beispiel finden Sie unter 03EPMMFC\IterChilds.

Zurück Zum Inhaltsverzeichnis Weiter


Copyright © 2004

Senden Sie Emails mit Fragen oder Kommentaren zu dieser Website an: mailto:info@cpp-tutor.de
 Wolfgang Schröder, Lerchenweg 23, D-72805 Lichtenstein. Tel: +49 7129 6470