“ APIENTRY _tWinMain”和“WINAPI WinMain”差异

这两个功能有什么区别?:
int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)

int WINAPI WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
    
已邀请:
_tWinMain
只是tchar.h中的
#define
快捷方式,适用于
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()
nCmdShow
STARTUPINFO
结构的
wShowWindow
参数。同样,ANSI和Unicode变体,使用
GetStartupInfoA(STARTUPINFOA*)
GetStartupInfoW(STARTUPINFOW*)
访问。 通过使用Win32 API来访问这些变量,您可能会保存一些全局变量,例如您小心保存您认为仅适用于
WinMain
的实例句柄的变量。     
从这个链接:   _tWinMain实际上确实采用了hPrevInstance参数,但是那样   参数没用过。      _tWinMain只是WinMain的#define(在TCHAR.h中)。      两者之间没有区别   二。 和   如果未定义UNICODE,则_tWinMain定义为WinMain,并且   wWinMain如果是的话。它的目的是为了   让你编写将构建的代码   在ansi和unicode下。     

要回复问题请先登录注册