Подтвердить что ты не робот

Определить текущее значение HINSTANCE?

HINSTANCE приложения win32 передается WinMain, но есть ли другой способ определения текущего HINSTANCE (в случае, если вы не могли сказать, я очень новичок в программировании win32!)? Мне нужно создать окно внутри библиотеки и (поскольку библиотека является кросс-платформой), id предпочитает не передавать ее.

4b9b3361

Ответ 1

Если память используется, GetModuleHandle(NULL); возвращает дескриптор экземпляра.

Ответ 2

__ ImageBase является вашим другом, особенно в случае с библиотеками.

Обратите внимание, что связанное сообщение в блоге (Р. Чэном, хотя и не тем же сообщением, что и связанное Брайаном Бонди) стоит прочитать (включая комментарии!)

Ответ 3

Если вы используете MFC, вы можете использовать AfxGetInstanceHandle.

Если вы не используете MFC, вы можете использовать: GetWindowLong (hWnd, GWL_HINSTANCE)

Ответ 4

Функция AfxGetStaticModuleState() делает трюк. Если вы вызываете его внутри dll, функции возвращают дескриптор в dll, если вызов внутри exe возвращает дескриптор исполняемого файла.

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