CSplitterWindow funktioniert nicht mit x,y



  • hi

    ich verwende WTL in einem C++ Projekt, und da es nur eine WinAPI-Kapselung ist, schreibe ich es ins Winapi-Forum.

    Ich versuche schon die ganze Zeit, ein CSplitterWindow mit absoluten Koordinaten zu verwenden. D.h. ich möchte den Container mitten in mein Dialogfenster plaziert haben und nicht links oben (0,0).
    Doch wenn ich das mache, dann werden die beiden Listviews innerhalb des Containers, einfach trotzdem links oben bei (0,0) angezeigt.
    Wenn ich dann explizit mit SetSplitterRect die Position setze, dann stimmt zwar die Position der ListViews, jedoch funktioniert dann die Mausbehandlung nicht mehr.

    void OnInitdialog(..)
    ...
    RECT rc;
    ::GetWindowRect(GetDlgItem(IDC_CUSTOM_HORZ_SPLITTER), &rc); //Das ist die Position eines Platzhalterkontrollelementes im Dialog
    ScreenToClient(&rc);
    
    //hier mein CSplitterWindow vertikal
    m_VertFileListSplitter.SetSplitterPanes(m_LocalListView,m_RemoteListView);
    
    m_VertFileListSplitter.SetSplitterRect(rc, false); //mit oder ohne!
    

    Vielleicht weiß jemand weiter? Oder gibts Ersatz?

    thx


  • Mod

    Sind denn die einzelnen Child Windows auch Teil des Splitters! Die Koordianten des Child Windows sind imer realtiv zum Parent. Es genügt also immer das Parent zu verschieben.

    Bist Du sicher das die Child Windows auch den Stil WS_CHILD habne?


Anmelden zum Antworten