Problem mit MoveWindow

langer1801

Erfahrenes Mitglied
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:
   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:
   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
 
GetWindowRect() liefert Screen-Koordinaten, du brauchst sie aber auf deinen View bezogen. Daher muss noch eine Umrechnung rein:

Code:
if(nChar==9)
{
    pView->m_edit.GetWindowRect(rectDraw);

    pView->ScreenToClient(&rectDraw);

    rectDraw.left+=13;
    rectDraw.right+=13;
    pView->m_edit.MoveWindow(rectDraw);
}
 
Zuletzt bearbeitet:
Zurück