Определить текущий HINSTANCE? - PullRequest
46 голосов
/ 17 ноября 2009

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

Ответы [ 4 ]

75 голосов
/ 17 ноября 2009

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

18 голосов
/ 17 ноября 2009

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

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

8 голосов
/ 17 ноября 2009

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

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

0 голосов
/ 16 апреля 2013

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

DWORD size;
TCHAR fileName [MAX_PATH];
HMODULE hModule = AfxGetStaticModuleState()->m_hCurrentInstanceHandle;
::GetModuleFileName (hModule, fileName, size);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...