2012-12-15 3 views
0

개정 1 :WinAPI - 컨트롤을 편집하기 위해 텍스트를 인쇄하는 방법?

WinAPI의 AllocConsole(); 기능에 대해 잘 이해하지 못합니다. 나는 옵션 하나 또는 옵션 2가 필요하다. 둘 다 갖는 것이 더 좋다. :). 미리 감사드립니다. 옵션 1은 다음과 같습니다.

BUTTON_1을 (를) 클릭하면 WinAPI 프로그램에서 콘솔 창을 만듭니다. 콘솔은 텍스트 (예 : cout)를 출력하고 절전/지연 텍스트를 인쇄 할 수 있어야합니다. (Sleep() 같은 뭔가)

옵션 2 : 옵션 1에서와 같은 대신 콘솔 창에 인쇄 텍스트의

, 사용자가 접근 할 수없는 편집 상자에 프로그램 인쇄 텍스트입니다. 또한 텍스트가 인쇄되는 것을 지연 시키려면 Sleep()과 같은 것을 사용할 수 있어야합니다.

+0

'SetWindowText' 또는'WM_SETTEXT'처럼 바꾸는 것을 의미합니까? – chris

+2

SetWindowText(). 이것은 매우 기본입니다. 네이티브 winapi 프로그래밍을 시작하려면 Petzold의 Programming Windows를 읽어야합니다. –

답변

0

당신은 아마 약간의 긴 과정에서 TTY 스타일의 출력을 기록하기 위해, 편집 컨트롤에 문자열을 추가하고 가정 : 대체 EM_REPLACESEL를 사용 후,

그냥 마지막 문자 후 범위를 선택합니다 EM_SETSEL 메시지를 사용을 그것은 추가 할 문자열과 함께. 이 경우 편집 컨트롤이 스크롤됩니다. http://support.microsoft.com/kb/109550

+0

Sleep()과 같은 기능을 사용해야하는 경우에는 어떻게합니까? 일시적으로 편집 상자에 쓰여지는 문자열을 느리게하려면? – hCon

+0

편집 상자를 위해 그렇게 할 필요는 없을 것이라고 생각합니다. 그러나 다른 이유로 그럴 필요가 있다면 그렇게 할 수 있습니다. 메시지 루프가있는 스레드가 메시지를 펌핑하는 대신 잠자기 상태 인 경우 목록 상자가 업데이트됩니다. –

0

내 제안을하는 것입니다 :

int idx=GetWindowTextLength(hEdit); 
SendMessage(hEdit,EM_SETSEL,idx,idx); 

SendMessage(hEdit,EM_REPLACESEL,0,(LPARAM)str); 

이이 기술 자료 문서에서 권장하는 과정입니다 : 예를 들어, hEdit 경우 0 종료 문자열을 추가 할 수있는 편집 컨트롤에 대한 핸들 및 str입니다

SendMessage(hEditBox,EM_SETSEL,-2,-2); 

편집 컨트롤에서 텍스트의 끝으로 캐럿을 이동하십시오. 그것은 하나의 함수 호출을 저장하고 작동합니다.

잠과 관련된 부분에 대해서는 아무런 문제없이 작동해야하는 타이머를 사용하는 것이 더 좋을 것이라고 생각합니다.

Ex.

// somewhere in the code where you decide to make changes to the edit control 
... 
SetTimer(hWnd,TIMER_ID,1000,0); // TIMER_ID is arbitrary, the delay is set to 1000 ms 
... 

// main procedure message 
switch (uMsg) { 
    ... 
    case WM_TIMER: 
     SendMessage(hEditBox,EM_SETSEL,-2,-2); 
     SendMessage(hEditBox,EM_REPLACESEL,0,buffer); 
     KillTimer(hWnds,TIMER_ID); 
    ... 
} 

예를 들어 SetTimer 호출을 다시 사용하는 것과 같이 좀 더 많은 작업을 수행 할 수 있습니다.

+0

-2는 새로운 메시지입니다. 이 문서는 어디에 문서화되어 있습니까? –

+0

내 실제 문제에 더 잘 맞도록 질문을 업데이트했습니다. 위의 코드는'buffer '를 무엇으로 정의해야할지 모르므로 나에게 적합하지 않습니다. 나는 그것이 int 인 것을 안다. 그러나 그것이 특정한 숫자를 필요로하는지 아닌지 나는 모른다. – hCon

+0

@TomSeddon 문서화되지 않았으므로 사용해 보았습니다. 0FFFFFFFFh (-1)을 넣으면 -1로 처리되므로 아무 것도 선택하지 않습니다. 0FFFFFFFEh (-2)를 넣으면 4294967294의 캐럿 위치로 처리되어 편집 상자 텍스트 끝에 캐럿을 배치합니다. – mkey

관련 문제