VC2005のwindows.h
VC2003までのwindows.hでは、MessageBoxやGetMessageなどがwinusr.h内で以下のように定義されていました。
#ifdef UNICODE #define MessageBox MessageBoxW #else #define MessageBox MessageBoxA #endif // !UNICODE
#ifdef UNICODE #define GetMessage GetMessageW #else #define GetMessage GetMessageA #endif // !UNICODE
つまり、自分でMessageBoxという関数を作れば、当たり前のように「MessageBoxA」などという関数に置換されて、コンパイルエラーとなっていました。
ところが、VC2005では、この問題がほぼ解決され、以下のように定義されています。
#if defined(_M_CEE)
#undef MessageBox
__inline
int
MessageBox(
HWND hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT uType
)
{
#ifdef UNICODE
return MessageBoxW(
#else
return MessageBoxA(
#endif
hWnd,
lpText,
lpCaption,
uType
);
}
#endif /* _M_CEE */