Déterminer le HINSTANCE actuel?

Le HINSTANCE d’une application Win32 est passé à WinMain, mais existe-t-il un autre moyen de déterminer le HINSTANCE actuel (au cas où vous ne le sauriez pas, je suis très novice en programmation win32!)? Je dois créer une fenêtre à l’intérieur d’une bibliothèque et (puisque la bibliothèque est multi-plateforme), ID préfère ne pas avoir à le transmettre.

Si la mémoire sert, GetModuleHandle(NULL); renvoie le handle d’instance.

__ImageBase est votre ami, surtout dans le cas des bibliothèques.

Notez que le post de blog lié (par R. Chen, bien que pas le même que celui lié par Brian Bondy) mérite d’être lu (y compris les commentaires!)

Si vous utilisez MFC, vous pouvez utiliser AfxGetInstanceHandle.

Si vous n’utilisez pas MFC, vous pouvez utiliser: GetWindowLong (hWnd, GWL_HINSTANCE)

La fonction AfxGetStaticModuleState () fait l’affaire. Si vous l’appelez dans une DLL, la fonction renvoie le handle de la DLL si l’appel dans un exe renvoie le handle à l’exécutable.

 DWORD size; TCHAR fileName [MAX_PATH]; HMODULE hModule = AfxGetStaticModuleState()->m_hCurrentInstanceHandle; ::GetModuleFileName (hModule, fileName, size);