2009-09-26 4 views

risposta

12

È possibile utilizzare CEdit::SetSel per ottenere ciò.

Esempio:

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

grazie, che risolto :) –

+0

Qualcuno può dirmi come fare la stessa cosa per 'CCombobox'? –

+0

@ ItbanSaeed, prova il metodo 'SetEditSel'. –

6

È possibile utilizzare CEdit::SetSel per realizzare questo:

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); 

Sarà posizionare il cursore alla fine della stringa.

0

Ho avuto un risultato strano ma ancora pertinente. Inizialmente questa soluzione non ha funzionato. Anche dopo aver chiamato SetSel (-1) il cursore si spostava in cima alla casella di modifica. Poi ho fatto un po 'di rimpasto di codice e ha iniziato a funzionare.

L'apprendimento era che se aggiorno qualsiasi altro controllo dopo aver aggiornato il controllo di modifica, il cursore si sposterà nella parte superiore della casella di modifica. Ma se la casella di modifica è l'ultimo controllo aggiornato, il cursore rimane alla fine della casella di modifica.

Come ho avuto un codice di qualcosa come

  1. Aggiungi testo per modificare & chiamata SetSel (-1) controllo statico
  2. aggiornamento

E il cursore non sarebbe rimasto in fine. Ma quando ho cambiato in controllo statico

  1. aggiornamento
  2. Aggiungi testo per modificare & chiamata SetSel (-1)

mio cursore è stato visualizzato alla fine della casella di modifica.

Ho avuto in mente dal giorno in cui ho avuto questo risultato per aggiornare la base di conoscenza qui. Spero che aiuti qualche anima casuale il cui cursore salta in cima alla casella di modifica anche dopo aver chiamato l'API.

Problemi correlati