Nachricht an CSplitterWnd senden?
-
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