繁体   English   中英

定义独立于UNICODE的WinMain函数的正确方法是什么?

[英]What is the correct way to define a UNICODE independent WinMain function?

为使用CRT的Windows程序定义独立于UNICODE WinMain函数的正确方法是什么?

我倾向于认为它应该像

WINAPI
#ifdef UNICODE
  wWinMain
#else
  WinMain
#endif
 ( ... ) {
  ...
}

但是,我想知道在编译源单元时是否还没有预定义的宏可以扩展为正确的符号(如Windows头文件中提供的扩展为WinApiFuncAWinApiFuncW

<tchar.h> ,宏_tWinMain会根据项目设置扩展为WinMainwWinMain 但是,这还不够。 您还需要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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM