これらの2つの機能との違いは何ですか?:
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のWinMain
の適切なバージョンへの単なる#define
ショートカットです。
_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
は、wShowWindow
構造体のSTARTUPINFO
パラメーターです。繰り返しますが、ANSIおよびUnicodeの異体字で、GetStartupInfoA(STARTUPINFOA*)
およびGetStartupInfoW(STARTUPINFOW*)
を使用してアクセスします。
また、Win32 APIを使用してこれらにアクセスすることで、WinMain
でのみ使用可能だと思っていたインスタンスハンドルを慎重に保存した場合のように、おそらくいくつかのグローバル変数を保存することになります。