Nachrichten an untergeordnete
Fenster
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.
|