D
Hi, ich bins (mal wieder). Also ich hab jetzt rausbekommen das ich eine Nachricht per PostMessage an das Parent-Fenster schicken muss (hier ein Splitter-Fenster) und das erst das die Nachricht zu einem anderen Child-Fenster weiterleiten kann.
Ich habs aml mit folgenden Code probiert.
Die Splitter-Klasse ist von CSplitterWnd abgeleitet.
class CMainSplitter :
public CSplitterWnd
{
public:
CMainSplitter(void);
~CMainSplitter(void);
protected:
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
};
Hier werden die Frames erzeugt.
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
// Unterteiltes Fenster erstellen
if (!m_wndSplitter.CreateStatic(this, 2, 1)) //m_wndSplitter ist als CMainSplitter deklariert
return FALSE;
if (
!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CNavigation), CSize(100, 40), pContext) ||
!m_wndSplitter.CreateView(1, 0, RUNTIME_CLASS(CChildFrame), CSize(100, 100), pContext))
{
m_wndSplitter.DestroyWindow();
return FALSE;
}
return TRUE;
}
Die Message-Funktion des Splitter-Fensters.
LRESULT CMainSplitter::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if(message == WM_MESSAGE_TEST)
{
MessageBox("Hallo!", "Meldung!", MB_ICONERROR);
}
return CSplitterWnd::WindowProc(message, wParam, lParam);
}
Eine Nachricht zum Testen schicken...
void CNavigation::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
((CNavigation*)GetParent())->PostMessage(WM_MESSAGE_TEST, 0, 0); // Einfach mal ne Nachricht senden...
}
Das Dumme ist, es funktioniert nicht, also es kommt keine Nachricht an.
BTW. Bekomm ich eigentlich den Splitter-Pointer über die GetParent()-Funktion?
Und noch eine Frage zum Schluss, was muss ich machen, damit die "Abgrenzungen" zwischen den einzelnen Splitter-Chils verschwinden, oder dünner werden?
Danke,
DarkLord