anpassen eines ChildWindows ans Parent? (WM_SIZE)



  • stimmt es, dass man ein ChildWindow im WM_SIZE-handler des parentwindows an dieses anpasst?

    ich frage, weil ich eine GroupBox laufend an die fenstergrösse anpassen möchte. dazu setze ich im WM_SIZE-handle die grösse der box und zeichne es neu mit MoveWindow().

    //im Message-Handler:
        case WM_SIZE:
            return OnSize(lParam);
    
    //--------------------------------------
    BOOL CppAppWnd::OnSize(LPARAM lParam)
    {
        // automatisch angepasste Group01-Box
        Group01Rect.left    = 10; 
        Group01Rect.top     = 43;
        Group01Rect.right   = LOWORD(lParam)*2/3 + 17; //um 17 breiter als Inhalt
        Group01Rect.bottom  = HIWORD(lParam)*2/3 + 24; //um xx höher als MapScrollBox
        MoveWindow(hGroup01, Group01Rect.left, Group01Rect.top, Group01Rect.right, Group01Rect.bottom, TRUE);
        //weitere ChildWindows werden angepasst..
    }
    

    leider funktioniert das so nicht, wie es soll. die hälfte wird gar nicht gezeichnet, es gibt dauernd abstürze.. wo ist der fehler?



  • hab schon selber die lösung heraus"gepröbelt"..

    BOOL CppAppWnd::OnPaint()
    {       
    PAINTSTRUCT ps;           // die drei
    BeginPaint(hAppWnd,&ps);  //   zeilen
    EndPaint(hAppWnd,&ps);    //     fehlten
    return 0;
    }
    

    ev. kann mir noch jemand erklären, wieso das solche probleme verursacht.. (es ging wirklich nichts mehr). andernfalls: sorry für die "belästigung" 😉



  • Wenn du WM_PAINT (bzw. OnPaint?!) abfängst, dann musst du dort auch Begin-/EndPaint aufrufen - sonst produzierst du eine Endlosschleife 😉



  • oder du lässt das DefWindowProc machen...



  • stimmt.. die endlosschleife hab ich erlebt: 100% CPU-auslastung.. 🙄


Anmelden zum Antworten