“APIENTRY _tWinMain”和“WINAPI WinMain”的区别?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (87)

这两个功能有什么不同?:

int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)

int WINAPI WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
提问于
用户回答回答于

_tWinMain只是#definetchar.h中相应版本的一个快捷方式WinMain

如果_UNICODE被定义,则_tWinMain扩展为wWinMain。否则,_tWinMain是一样的WinMain

相关的宏看起来像这样(实际上有很多其他代码散布):

#ifdef  _UNICODE
#define _tWinMain  wWinMain
#else
#define _tWinMain  WinMain
#endif
用户回答回答于

不同之处在于参数的编码,无论如何都是完全冗余的。只需扔掉参数,并使用以下代码控制编码:

hInstance 只是 GetModuleHandle(0)

hPrevInstance在Win32中无效

lpCmdLine在ANSI和Unicode中分别可以通过GetCommandLineA()GetCommandLineW()

通过使用Win32 API来访问这些API,你可能会保存一些全局变量,比如你仔细保存了你认为只能用到的实例句柄WinMain

扫码关注云+社区

领取腾讯云代金券