60

win32アプリケーションのHINSTANCEはWinMainに渡されますが、現在のHINSTANCEを決定する他の方法はありますか(わからない場合は、win32プログラミングは初めてです!)?ライブラリ内にウィンドウを作成する必要があります(ライブラリはクロスプラットフォームであるため)。idはそれを渡す必要がないことを好みます。

4

4 に答える 4

97

メモリが機能する場合GetModuleHandle(NULL);は、インスタンスハンドルを返します。

于 2009-11-17T16:33:24.400 に答える
24

__ImageBaseは、特にライブラリの場合、あなたの友達です。

リンクされたブログ投稿(R. Chenによるものですが、Brian Bondyによってリンクされたものと同じ投稿ではありません)は読む価値があることに注意してください(コメントを含む!)

于 2009-11-17T16:36:21.160 に答える
8

MFCを使用している場合は、AfxGetInstanceHandleを使用できます。

MFCを使用していない場合は、次を使用できます。GetWindowLong(hWnd、GWL_HINSTANCE)

于 2009-11-17T16:20:20.870 に答える
0

関数AfxGetStaticModuleState()がそのトリックを実行します。dll内で呼び出すと、関数はdllにハンドルを返し、exe内で呼び出すと、実行可能ファイルにハンドルを返します。

DWORD size;
TCHAR fileName [MAX_PATH];
HMODULE hModule = AfxGetStaticModuleState()->m_hCurrentInstanceHandle;
::GetModuleFileName (hModule, fileName, size);
于 2013-04-16T13:48:32.040 に答える