2009-09-26 25 views
9

VC9를 사용하고 있는데, 버튼을 클릭 할 때 내용이 기본 테스트 (예 : "채우기")로 재설정 된 CEdit 컨트롤이 있습니다. CEdit 컨트롤에 대한 SetFocus 호출합니다. 문제는 커서가 기본 텍스트의 시작 부분에서 깜박이고 기본 문자열의 끝을 깜박 거리기를 원합니다.CEdit 컨트롤 MFC, SetWindowText 다음에 문자열 끝으로 커서를 놓습니다.

어떻게이 작업을 수행 할 수 있습니까?

답변

12

CEdit::SetSel을 사용하면이를 수행 할 수 있습니다.

예 :

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

고마워요, 그걸 수정했습니다 : –

+0

누구나'CCombobox'에 대해 똑같은 일을하는 방법을 말해 줄 수 있습니까? –

+0

@ItbanSaeed, SetEditSel 메소드를 사용해보십시오. –

6

당신은 그것을 달성하기 위해 CEdit::SetSel를 사용할 수 있습니다

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

그것은 문자열의 끝에서 커서를 배치합니다.

0

이상한 결과가 있지만 여전히 관련이 있습니다. 이 솔루션은 초기에는 나에게 도움이되지 못했습니다. SetSel (-1)을 호출 한 후에도 커서가 편집 상자의 맨 위로 이동했습니다. 그런 다음 코드 재구성을 수행하고 작업을 시작했습니다.

편집 컨트롤을 업데이트 한 후 다른 컨트롤을 업데이트하면 커서가 편집 상자의 맨 위로 이동한다는 것이 습득되었습니다. 그러나 편집 상자가 마지막으로 업데이트 된 컨트롤 인 경우 커서는 편집 상자의 끝에 유지됩니다.

나는

  1. 같은 코드 뭔가 & 전화를 SetSel (-1)
  2. 갱신 정적 컨트롤을 편집 할 텍스트를 추가했다처럼

그리고 커서가에 머물 않을 것이다 종료. 내가

  1. 갱신 정적 컨트롤에 변경할 때
  2. & 전화를 SetSel (-1)

내 커서가 편집 상자의 끝에 표시된을 편집 할 텍스트를 추가합니다.

나는 지식 기반을 업데이트하기 위해이 발견을 한 이래로 내 마음에 들었습니다. API를 호출 한 후에도 커서가 편집 상자의 맨 위로 이동하는 임의의 영혼을 돕기를 바랍니다.

관련 문제