API이름뒤에 간혹 A나 W가 붙는 경우가 있습니다.
이중 창조에서 사용하는 것은 뒤에 A가 붙는 경우만 사용할수 있습니다.
W가 붙는 것도 사용할수 있습니다만, 부수적으로 변환과정이 필요합니다.
A와 W가 붙는함수들의 특징?
함수명 뒤에 A나 W가 붙는 API들의 특징은 문자(String)를 사용한다는 것입니다!
그러면 이쯤 슬슬 감이 오시나요?
뒤에 A가 붙는 것은 ANSI를 사용하는 함수이고요, W가 붙는 것은 Unicode를 사용하는 함수입니다.
그런데 창조는 기본적으로 ANSI를 사용하고요, Unicode로 변환하기 위해서는
별도의 변환과정이 필요합니다.(변환과정에는 불가피하게 또 다른 API들이 사용되고요;)
그런데 창조에서 MessageBox라는 이름을 그냥 사용하려고 하니까 자꾸만 DLL에 없는 함수명이라고 그러죠.
바~로 이겁니다!
MessageBox라는 함수는 "문자"를 사용하지 않습니까?
그러면 창조에서는 뒤에 A를 붙인 MessageBoxA를 사용해야된다는 거죠!
W는 앞서 말했듯이 부수적인 처리과정이 필요하기에 그냥 A를 사용해야 한다는 거죠.
뽀너스!
방금 MSDN을 보다가 새로운 사실(?)을 발견했기에 뽀너스!로 넣어봅니다.
뒤에 A를 사용하는 함수는 Windows 9X 계열의 OS에서도 사용이 가능합니다. 즉, 호환성을 지닌 녀석입니다.
그렇지만 W가 붙는 함수는 Windows NT계열에서만 사용이 가능하기에, Windows 9X와의 호환성을 위해서 A를 붙는 것을 사용해야 합니다. (사실.. 더 큰 이유는 창조에서는 별도의 처리가 있다는 것이고요-_-)
지상현 2009-03-19 PM 5:34:12
참고: 9x에서도 쓸 수 있는 W 함수가 몇 가지 있습니다. (MSDN 어딘가에 목록이 있....)
또 마찬가지로 NT 계열에서는 A 함수를 호출하면 내부적으로 유니코드로 바꿔서 W 함수를 호출합니다.
따라서 9x 에서 쓸 일이 없다면 NT 계열에서는 W 함수를 쓰는게 더 도움 되겠죠?