質問

これら2つの関数との違いは何ですか?:

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

int WINAPI WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
役に立ちましたか?

解決

_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 それは wShowWindow のパラメーター STARTUPINFO 構造。繰り返しますが、ANSIおよびUnicodeバリアントは、使用してアクセスします GetStartupInfoA(STARTUPINFOA*)GetStartupInfoW(STARTUPINFOW*).

そして、Win32 APIを使用してこれらにアクセスすることで、おそらくいくつかのグローバル変数を保存するでしょう。 WinMain.

から このリンク:

_twinmainは実際にはhprevinstanceパラメーターを取得しますが、そのパラメーターは使用されていません。

_twinmainは、#define to winmain(tchar.h)です。

2つの間に違いはありません。

_twinmainは、Unicodeが定義されていない場合はWinmainに定義され、もしそうである場合はWwinmainに定義されます。その目的は、ANSIとUnicodeの両方で構築するコードを作成できるようにすることです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top