überlappende Childfenster



  • hallo,
    bin neu hier und habe ein Problem, das mich echt ratlos macht:

    Wenn ich ein Fenster erzeuge und zwei darin enthaltene Childfenster (mit dem WS_CHILD Attribut), dann werden die Childfenster in dem Hauptfenster stets so dargestellt, dass sich das aktive fenster HINTER dem inaktiven Fenster befindet. Es reagiert dennoch so, als würde es sich vor diesem befinden. Wenn ich dann ein Childfenster mit SetWindowPos() in der z-Achse ganz nach hinten packe, dann ist es genau umgekehrt: das Fenster wird zwar vorne gezeichnet, verhält sich aber so, als wäre es hinter dem anderen Childfenster.

    Also entweder ich spinne hier, oder die Win32-API tickt nicht mehr ganz richtig. Kann mir da jemand weiterhelfen?



  • Einfach mit ShowWindow auf "HIDE" oder "SHOW" setzen ...

    ShowWindow(hChildWindow, SW_HIDE);
    //hChildWindow ist das Handle zum Childfenster, SW_HIDE -> Fenster verbergen
    ShowWindow(hChildWindowZwei, SW_SHOW);
    //SW_SHOW -> Fenster anzeigen
    

    Den Parameter WS_VISIBLE solltest du in der WM_CREATE herauslöschen, es sei denn du willst, dass eines deiner beiden Childwindows gleich beim erstellen sichtbar gemacht werden soll!

    MFG:
    n()()bi



  • sorry, aber ich glaube, du hast nicht ganz verstanden, wo das Problem liegt:
    Die Child-Fenster werden wirklich falsch dargestellt. Nach dem, was ich bisher herausgekriegt habe, ist es so, dass die Child-Fenster genau in der umgekehrten Reihenfolge ihrer z-Order dargestellt werden. D.h, das Fenster, welches man durch anklicken in der z-Order nach vorne bringt, wird immer hinter allen anderen Child-Fenstern gezeichnet. Trotzdem kann es auch in dem Bereich angesprochen werden, wo es von diesen verdeckt wird (da es ja gerade in der z-Order ganz vorne ist). Ich weiß es klingt unwahrscheinlich, aber du kannst es ja selbst ausprobieren. Dazu musst du in den WndProcs der Child-Fenster InvalidateRect(hParentWnd, NULL, TRUE) aufrufen, damit das Hauptfenster nach dem Verschieben oder anklicken der Child-Fenster aktualisiert wird.
    Also, ich freue mich über jeden Tipp...
    MFG
    Jason


Log in to reply