Benutzung von MoveWindow



  • Ich moechte einen CButton in einem Dialog verschieben und wieder an die alte Stelle zurueck schieben. Das gelingt leider nicht.

    Wenn ich folgendes mache:

    CRect rtg;			
    
    Optiona_corr.GetWindowRect(rtg);
    
    rtg.MoveToXY(162,88);
    
    Optiona_corr.MoveWindow(rtg);
    

    dann befindet sich der CButton zwar an einer neuen Stelle, aber es ist nicht die alte Stelle wie ich es von den Werten 162,88 erwarte, die habe ich naehmlich aus der *.rc gefummelt und die stimmen auch mit den Hilfslinienwerten aus dem WYSIWYG-Editor ueber ein.

    Was muss ich tun, damit Optiona_corr wieder an seiner alten Stelle steht, bzw. was muss ich tun, damit ich Optiona_corr an die Hilfslinienwerten aus dem WYSIWYG-Editor verschieben kann?

    Gruss
    Thomas



  • Ich hätte das so gemacht :

    CRect rect;
    CWnd* pWnd = GetDlgItem(IDC_BUTTON);
    pWnd->GetClientRect(rect);
    
    pWnd->MoveWindow(162,88, NULL, NULL, TRUE);
    

    Try it ...



  • Nein, leider geht es so nicht. Der CButton verschwindet einfach. Ich denke er hat entweder den Screen verlassen oder er liegt unter einem anderen Element, aber er ist nicht in seiner "Heimat".

    Hat das etwas mit ScreenToClient und Co. zu tun??

    Ich habe habe den CButton nicht per GetDglItem sondern per DDX_Control eingebunden.
    Am Ende der Schieberei rufe ich dann

    UpdateData(FALSE);
    

    auf.

    Gruss
    Thomas



  • Also er hat auf jedenfall den Dialog verlassen. Bist du dir auch sicher das dies genau die Koordinaten des Buttons sind ? Denn wenn die Koordinaten zu hoch sind, dann ist es ja kein Wunder das er aus dem Window springt ...



  • Die Koordinaten habe ich aus dem WYSIWYG-Editor der IDE mit Hilfe der Lineale.



  • Also, entweder stimmen die Koordinaten nicht (was ich stark glaube) oder es liegt an dem Code, wobei ich keine Fehler erkennen kann !

    Gruß
    :: NoName ::



  • Natuerlich liegt es an den Koordinaten!
    Bzw. daran, dass ich nicht weiss wie und wann man sie transformieren muss, mittels ScreenToClient/ClientToScreen.

    Also ich habe einen Dialog(CFormView) der ist Scrollbar wenn das Fenster zu klein ist. Nun will ich einen Button verschieben. Aber natuerlich nicht in Abhaengigkeit von den aktuell gescrollten Position.

    Gruss
    Thomas


Anmelden zum Antworten