OnSize in RecordView muckt :(



  • Hi Gemeinde,

    habe da ein Problem mit OnSize in einer RecordView.

    void CEineRecordView::OnSize(UINT nType, int cx, int cy) 
    {
    	CRecordView::OnSize(nType, cx, cy);
    
    	m_DataListe.MoveWindow( 11, 50, (cx - 22), (cy-60), true );
    }
    

    m_DataListe ist ein CListCtrl.

    Beim Starten aus der IDE heraus passiert nun folgendes: Bevor die App startet, bekomme ich eine 'Debug Assetrion Failed!' Box vorgesetzt. Dann haue ich dort dreimal auf 'Ignorieren'.
    Und jetzt der Gag: Die App startet und läuft wie gewünscht. Also die Liste vergrössert bzw verkleinert sich so, wie sie es soll.

    Wo liegt der Fehler? Denn so kann es nicht bleiben.

    thx an alle, die helfen

    grüssle 🙂



  • Wo genau kommt der Fehler?



  • OnSize() wird afaik schon aufgerufen, bevor das Fenster tatsächlich fertig initialisiert wurde - und dann geht der MoveWindow()-Aufruf naturgemäß in die Hose (weil er ein Window benötigt, das er verschieden kann). Die vom Visual Studio erzeugten Elemente fangen diesen Sonderfall normalerweise ab - du mußt dich für deine eigenen Anwendungen jedoch selber darum kümmern, daß sie nicht mit ungültigen Window-Handles hantieren.



  • Paul_C. schrieb:

    Wo genau kommt der Fehler?

    wenn ich die Zeile:

    m_DataListe.MoveWindow( 11, 50, (cx - 22), (cy-60), true );
    

    auskommentiere, kommt kein Fehler. Ansonsten genau dort 😕

    grüssle 🙂



  • Wie CSToll schon gesagt hat, musst du erst überprüfen, ob dein Handle gültig ist. Dann darfst du verschieben.



  • 😮 den Beitrag von CStoll hab ich wohl übersehen 😮

    grüssle 🙂



  • Ist ja kein Problem. Wenn noch Probleme auftauchen, dann melde dich einfach.



  • ein

    if( m_DataListe.GetSafeHwnd() )
    

    vor MoveWindow und alles ist Paletti.

    grüssle 🙂


Anmelden zum Antworten