xRo*_*bot 18 c++ windows winapi winmain
这两个功能有什么区别?:
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
Run Code Online (Sandbox Code Playgroud)
Cod*_*ray 46
_tWinMain
只是#define
tchar.h中适当版本的快捷方式WinMain
.
如果_UNICODE
已定义,则_tWinMain
扩展为wWinMain
.否则,_tWinMain
就是一样的WinMain
.
相关的宏看起来像这样(实际上有很多其他代码散布在一起):
#ifdef _UNICODE
#define _tWinMain wWinMain
#else
#define _tWinMain WinMain
#endif
Run Code Online (Sandbox Code Playgroud)
Ben*_*igt 21
不同之处在于参数的编码,无论如何都是完全冗余的.只需丢弃参数,然后使用以下命令控制编码:
hInstance
只是 GetModuleHandle(0)
hPrevInstance
无论如何在Win32中无效
lpCmdLine
ANSI和Unicode 分别提供via GetCommandLineA()
和GetCommandLineW()
nCmdShow
是结构的wShowWindow
参数STARTUPINFO
.同样,ANSI和Unicode变体,使用GetStartupInfoA(STARTUPINFOA*)
和访问GetStartupInfoW(STARTUPINFOW*)
.
通过使用Win32 API来访问它们,您可能会保存一些全局变量,例如您小心保存您认为仅可用的实例句柄的变量WinMain
.