winapi hinstance

winapi - Determine el actual HINSTANCE?



(4)

El HINSTANCE de una aplicación win32 se pasa a WinMain, pero ¿hay alguna otra forma de determinar el HINSTANCE actual (en caso de que no se sepa, soy muy nuevo en la programación de win32)? Necesito crear una ventana dentro de una biblioteca y (dado que la biblioteca es multiplataforma), id prefiere no tener que pasarla.


La función AfxGetStaticModuleState () hace el truco. Si lo llamas dentro de un dll, las funciones devuelven el manejador al dll, si la llamada dentro de un exe devuelve el manejador al ejecutable.

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


Si está utilizando MFC, puede usar AfxGetInstanceHandle.

Si no está utilizando MFC, puede usar: GetWindowLong (hWnd, GWL_HINSTANCE)


__ImageBase es tu amigo, especialmente en el caso de las bibliotecas.

Tenga en cuenta que vale la pena leer la publicación de blog vinculada (por R. Chen, aunque no es la misma publicación que la vinculada por Brian Bondy) (¡incluidos los comentarios!)


Si la memoria sirve, GetModuleHandle(NULL); devuelve el identificador de instancia.