[英]What is the correct way to define a UNICODE independent WinMain function?
为使用CRT的Windows程序定义独立于UNICODE
WinMain
函数的正确方法是什么?
我倾向于认为它应该像
WINAPI
#ifdef UNICODE
wWinMain
#else
WinMain
#endif
( ... ) {
...
}
但是,我想知道在编译源单元时是否还没有预定义的宏可以扩展为正确的符号(如Windows头文件中提供的扩展为WinApiFuncA
或WinApiFuncW
。
在<tchar.h>
,宏_tWinMain
会根据项目设置扩展为WinMain
或wWinMain
。 但是,这还不够。 您还需要lpCmdLine
与字符集无关的LPTSTR
声明第三个参数( lpCmdLine
):
int APIENTRY _tWinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nShowCmd
)
如果在项目上启用了Unicode, LPWSTR
变成LPWSTR
,并提供签名:
int APIENTRY wWinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
int nShowCmd
)
如果未启用Unicode,则会获得签名:
int APIENTRY WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.