본문 바로가기

API

LoadString

윈도우즈에서는 문자열들도 리소스의 일종으로 취급되는데, 대량의 문자열을 사용하는 프로그램은 리소스에 문자열을 정의해 놓고 필요할 때마다 리소스의 문자열을 읽어와 사용한다.


그럴때 LoadString함수를 사용한다.

int LoadString(HINSTANCE hInstance,UINt uID,LPTSTR lpBuffer,int nBufferMax);




첫 번째 인수는 문자열 리소스를 가진 인스턴스 핸들인데,g_hInst = hInstance 라는 구문이 왜 존재하는지 알려준다.

두 번째 인수는 읽어올 문자열의 ID를 전달하는 역할을 한다.

세 번째 인수는 전달받은 문자열의 ID에서 문자열을 읽을 버퍼를 지정한다.

네 번째 인수는 버퍼의 길이인데, 버퍼의 길이가 필요한 이유는 생략하겠다.


LoadString(g_hInst,IDS_STRING1,str,256);


이 호출문을 해석해 보면  g_hInst 인스턴스, 곧 자기 자신이 정의하고 있는(가지고 있는)IDS_STRING1 문자열을 길이 256의 str 문자 배열로 읽어오라는 뜻이다.


단순히 문자를 출력하려는 것이 목적이라면 문자 배열 또는 문자형 포인터에 바로 문자열을 초기화하여 이 문자열을 출력하는 편이 나아보일 수 있다.


만약 출력해야 할 문자열이 100개 이상이 된다면? 다국어 버전을 만들어야 한다면?


출력해야 할 문자열이 100개 이상이 되는데 코드 안에 문자열이 존재한다면 유지보수가 굉장히 힘들어질 것이다.

다국어 버전을 만들어야 한다면 언어마다 문자열 테이블을 만들고, 사용자가 선택한 국적에 따라 읽어야 할 문자열 테이블이 자동으로 변경될 것이다.

굉장히 편리하지 않은가?

'API' 카테고리의 다른 글

Old의 의미  (0) 2018.01.22
브러쉬 만들기  (0) 2018.01.22
나만의 펜을 만들어 보자!  (0) 2018.01.20
StockObject를사용한 GDI브러쉬 색 변경  (0) 2018.01.14
GDI?  (0) 2018.01.14