많이 아실텐데... 그래도 그냥 써 볼랍니다.
sprintf 를 사용하려면
#include <stdio.h> 가 필요합니다.
이는 보통
#include <vcl.h>
#include <stdio.h>
#pragma hdrstop
식으로 쓰이게 되죠.
그런데 왜 vcl에서는 sprintf 를 포함하지 않았는지 궁금했었는데...
wsprintf 가 있기 때문이었습니다.
wsprintf 는
#include <stdio.h>
없이 사용가능한 WIN32 API 로,
일반 앤시코드과 유니코드 사용 프로그램에 공히 사용할수 있는 문자열 합성 함수입니다.
유니코드를 사용하지 않는 프로그램이면
그냥 wsprintf 를 sprintf 대신 사용하면 됩니다.
유니코드를 사용하는 프로그램이면
역시 wsprintf 를 그냥 사용하면 됩니다.
유니코드를 사용할 경우는 문자열은 L"문자열"; 식으로 유니코드로 표현되어야 하며
char * 대신 wchat_t * 형이 사용되어야 합니다.
그래서 표준적으로 유니코드 사용프로그램과 일반 프로그램에 공히 하나의 코드로 처리하기 위해
컴파일러는 TCHAR 형과 TEXT 매크로를 제공합니다.
가령 OnCreate 이벤트에 다음과 같은 코딩이 가능합니다.
{
TCHAR buf[100];
wsprintf(buf, TEXT("캡션 메시지: %s"), TEXT("안녕하세요. C++빌더입니다."));
Caption = buf;
}
이 코드는 앤시코드형이나 유니코드형 프로그램 양쪽에서 안전하게 동작합니다.
TEXT 매크로 와 __TEXT 매크로는 동일합니다.
Project Option->Directorys...->Conditional defines ; 에
UNICODE 또는 _UNICODE 를 넣어주면
유니코드모드로 컴파일하게 되는데,
이 경우 안전하게 유니코드모드로
컴파일되게 합니다.
프로그래밍할때 아예 습관을 char 대신 TCHAR 으로 하고
"문자열" 대신 TEXT("문자열") 을 쓰는 것도 좋을 것입니다.
전혀 유니코드를 사용할 필요가 없는 경우는 맘대로 해도 되지만.
그럼..
|
초면에 죄송하지만 혹시 도움 좀 요청해도 될까요?
가능하시면 메일 좀 부탁 드릴께요.. davidcho001@empal.com
그럼 좋은 소식 기다리겠습니다.