'메모장으로 디버깅 메시지 출력1'에서는 clip board를 이용하여 노트패드로 문자열을 전달하였습니다. 이번에는 Edit 컨트롤의 EM_SETSEL과 EM_REPLACESEL 메시지를 사용하여 메시지를 전송합니다.
마찬가지로 출처는 Open Robotics 블로그입니다.
간단히 소스코드를 분석해보았습니다.
전체 코드입니다.
일단 동작원리를 확인해 보겠습니다. WinExec()함수를 이용하여 notepad를 실행시킨 후 DebugMessage() 함수를 이용하여 메모장으로 내보냅니다.
4번째 줄의 함수의 선언부를 보면 가변인수를 받아들이기 위해 '...' 으로 되어있습니다. '...' 이하의 인수값들을 받아들이기 위해서 va_list, va_start, va_end를 이용합니다.
10번째 줄의 wvsprintf(msg, fmt, args)를 이용하여 전달받은 가변인수 (여기서는 변수 i에 저장되어있는 값)과 'fmt 포인터가 가르키고 있는 문자열 '변수 i = %d'의 값을 결합하여 '변수 i = 0' 과 같은 문자열은 만들어 msg에 전달해준다.
12번째 줄부터 WinExec()를 이용하여 실행한 메모장의 윈도우를 찾고 Child Window를 확인합니다.
SendMessage()함수와 WM_GETTEXTLENGTH를 이용하여 텍스트윈도우의 문자열의 길이를 확인하고, EM_SETSEL로 text window의 문자열의 시작과 끝을 설정하고 EM_REPLACESEL을 이용하여 문자열을 덧붙이게 됩니다.
'sample code' 카테고리의 다른 글
메모장으로 디버깅 메시지 출력1 (0) | 2013.02.19 |
---|