Question

Quelles sont la différence de ces 2 fonctions:

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

int WINAPI WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
Était-ce utile?

La solution

_tWinMain est juste un raccourci dans #define tchar.h à la version appropriée de WinMain.

Si _UNICODE est défini, puis se dilate _tWinMain à wWinMain. Dans le cas contraire, _tWinMain est le même que WinMain.

Le regard macro concerné quelque chose comme ça (il y a en fait beaucoup d'autre code entrecoupé):

#ifdef  _UNICODE
#define _tWinMain  wWinMain
#else
#define _tWinMain  WinMain
#endif

Autres conseils

La différence est le codage des paramètres, qui sont de toute façon totalement redondant. Il suffit de jeter les paramètres et utilisez plutôt ce qui suit, où vous contrôlez l'encodage:

hInstance est juste GetModuleHandle(0)

hPrevInstance est pas valable dans toute façon Win32

lpCmdLine est disponible à la fois ANSI et Unicode, via GetCommandLineA() et GetCommandLineW(), respectivement

nCmdShow est le paramètre de wShowWindow de la structure de STARTUPINFO. Encore une fois, des variantes ANSI et Unicode, accessible à l'aide GetStartupInfoA(STARTUPINFOA*) et GetStartupInfoW(STARTUPINFOW*).

Et en utilisant les API Win32 pour y accéder, vous allez probablement économiser quelques variables globales, comme celui où vous enregistrez soigneusement la poignée de l'instance que vous pensiez être disponible que pour WinMain.

De ce lien :

  

_tWinMain ne fait prendre le paramètre hPrevInstance, mais   isn''t paramètre utilisé.

     

_tWinMain est juste un #define à WinMain (en tchar.h).

     

Il n'y a pas de différence entre la   deux.

et

  

_tWinMain est défini WinMain si UNICODE est pas définie, et   wWinMain si elle est. son but est de   vous permettent d'écrire du code qui va construire   à la fois sous ansi et sous unicode.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top