tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
458
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    langer1801 langer1801 ist offline Mitglied Platin
    Registriert seit
    Jun 2005
    Ort
    Bad Arolsen (Hessen)
    Beiträge
    556
    Hallo,
    ich habe ein Problem mit der Funktion MoveWindow. Ich lasse in meinem Projekt in einem Formular auf Maus-Klick ein Edit-Control erscheinen. Das klappt auch problemlos
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
       m_edit.MoveWindow(rectDaten);
       if(pDoc->m_Ansicht==3||pDoc->m_Ansicht==7)
       {
        m_edit.SetWindowText(pDoc->ZeitenArrayV[pDoc->spalte][pDoc->zeile]);
       }
       else
       {
       m_edit.SetWindowText(pDoc->ZeitenArrayXI[pDoc->spalte][pDoc->zeile]);
       }
       m_edit.SetFont(&pDoc->editFont);
       m_edit.ShowWindow(SW_SHOW);
       m_edit.SetFocus();
       m_edit.SetActiveWindow();
    Beim Betätigen der Tab-Taste soll das Edit-Control eine Spalte weiterspringen. Dazu addiere zu dem WindowRect die Spaltenbreite und lasse es verschieben.
    Code :
    1
    2
    3
    4
    5
    6
    7
    
       if(nChar==9)
       {
            pView->m_edit.GetWindowRect(rectDraw);
            rectDraw.left+=13;
            rectDraw.right+=13;
            pView->m_edit.MoveWindow(rectDraw);
        }
    Leider springt das Edit-Control nicht dahin, wo es soll. Es springt weiter nach rechts, als es soll und auch noch nach unten.
    Ich hab schon alles Mögliche probiert, aber nichts funktioniert. Die Ansicht ist vom Typ CSrollView im MapMode MM_HIMETRIC. Die Rechteck-Koordinaten sind in Device-Koordinaten. Wo liegt mein Fehler?

    Mfg

    langer
     

  2. #2
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    GetWindowRect() liefert Screen-Koordinaten, du brauchst sie aber auf deinen View bezogen. Daher muss noch eine Umrechnung rein:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    if(nChar==9)
    {
        pView->m_edit.GetWindowRect(rectDraw);
     
        pView->ScreenToClient(&rectDraw);
     
        rectDraw.left+=13;
        rectDraw.right+=13;
        pView->m_edit.MoveWindow(rectDraw);
    }
    Geändert von MCoder (06.09.05 um 07:41 Uhr)
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  3. #3
    langer1801 langer1801 ist offline Mitglied Platin
    Registriert seit
    Jun 2005
    Ort
    Bad Arolsen (Hessen)
    Beiträge
    556
    Danke, jetzt klappt's. Und nun weiß ich auch gleich, warum es diese Funktion gibt .

    Mfg

    langer
     

Ähnliche Themen

  1. MoveWindow() über mehrere Monitore
    Von Thomasio im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 18.10.10, 16:49
  2. MoveWindow step by step
    Von Thomasio im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 23.05.07, 05:06
  3. Fenster verschieben mit API-Funktion 'MoveWindow'
    Von RIDI2oo5 im Forum .NET Archiv
    Antworten: 3
    Letzter Beitrag: 18.01.05, 09:07
  4. Movewindow() , Repaint
    Von Reticent im Forum VisualStudio & MFC
    Antworten: 4
    Letzter Beitrag: 17.03.04, 12:34
  5. Antworten: 6
    Letzter Beitrag: 13.06.02, 12:29