"APIENTRY tWinMain "и" WINAPI WinMain " разница

в чем отличие от этих 2 функций?:

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

int WINAPI WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)

3 ответов


_tWinMain это просто #define ярлык в tchar.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(), соответственно

nCmdShow - это


с этой ссылке:

_tWinMain фактически принимает параметр hPrevInstance, но это параметр"использовали t.

_tWinMain - это просто #define для WinMain (в TCHAR.ч.)

нет никакой разницы между два.

и

_tWinMain определяется как WinMain, если UNICODE не определен, и wWinMain, если это так. его цель - позвольте вам написать код, который будет строить как под ansi, так и под unicode.