2009-09-26 13 views

Respuesta

12

Puede usar CEdit::SetSel para lograr eso.

Ejemplo:

CEdit* e = (CEdit*)GetDlgItem(IDC_EDIT1); 
e->SetWindowText("hello world"); 
e->SetFocus(); 
e->SetSel(0,-1); // select all text and move cursor at the end 
e->SetSel(-1); // remove selection 
+0

gracias, eso lo solucionó :) –

+0

¿Alguien puede decirme cómo hacer lo mismo para 'CCombobox'? –

+0

@ItbanSaeed, pruebe el método 'SetEditSel'. –

6

Puede utilizar CEdit::SetSel para lograr que:

CEdit* e = (CEdit*)GetDlgItem(IDC_EDIT1); 

e->SetWindowText("hello world"); 

// e->SetSel(0,-1); // you don't need this line 

e->SetFocus(); 
e->SetSel(-1); 

Será colocar el cursor en el final de la cadena.

0

Tuve un hallazgo extraño pero todavía relevante. Esta solución no funcionó para mí inicialmente. Incluso después de llamar al SetSel (-1) mi cursor se movía a la parte superior del cuadro de edición. Luego hice un cambio de código y comenzó a funcionar.

El aprendizaje fue que si actualizo cualquier otro control después de actualizar el control de edición, el cursor se moverá a la parte superior del cuadro de edición. Pero si el cuadro de edición es el último control actualizado, el cursor permanece al final del cuadro de edición.

como si tuviera un código algo así como

  1. Añadir texto a editar & llamada SetSel (-1) control estático
  2. actualización

y el cursor no se quedaría en el fin. Pero cuando lo cambié a control estático

  1. actualización
  2. Añadir texto a editar & llamada SetSel (-1)

Mi cursor se muestra en el extremo de la caja de edición.

Tenía en mente desde el día en que tuve este hallazgo actualizar la base de conocimientos aquí. Espero que ayude a un alma aleatoria cuyo cursor salta a la parte superior del cuadro de edición incluso después de llamar a la API.

Cuestiones relacionadas