La HINSTANCE d'une application win32 est passée à WinMain, mais existe-t-il une autre façon de déterminer la HINSTANCE actuelle (au cas où vous ne pourriez pas le dire, je suis très nouveau dans la programmation win32!)? J'ai besoin de créer une fenêtre à l'intérieur d'une bibliothèque et (comme la bibliothèque est multiplateforme), je préfère ne pas avoir à la transmettre.
Si la mémoire est utilisée, GetModuleHandle(NULL);
renvoie le handle d'instance.
__ ImageBase est votre ami, surtout dans le cas des bibliothèques.
Notez que l'article de blog lié (par R. Chen, bien que ce ne soit pas le même article 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, les fonctions renvoient le handle vers la dll, si l'appel dans un exe retourne le handle vers l'exécutable.
DWORD size;
TCHAR fileName [MAX_PATH];
HMODULE hModule = AfxGetStaticModuleState()->m_hCurrentInstanceHandle;
::GetModuleFileName (hModule, fileName, size);