2010-03-15 2 views
0

У меня есть случай, когда мне нужно загрузить растровое изображение из dll ресурса и обработать дескриптор. Механизм обновления может обновлять dll, и его открытие не сможет перезаписать его.Действительно ли использовать HBITMAP после вызова FreeLibrary?

Так позволяет сказать, что есть что-то вроде этого:

HINSTANCE hInst = LoadLibraryEx(resourceDll, NULL, LOAD_LIBRARY_AS_DATAFILE); 
HBITMAP hBitmap = LoadBitmap(hInst, "some.bmp") 
FreeLibrary(hInst); 

Правомерно использовать HBitmap после вызова FreeLibrary?

Заранее спасибо.

ответ

0

Да, это действительно так, чтобы освободить DLL.

LoadBitmap делает эквивалент CreateCompatibleBitmap, который создает новый растровый рисунок для вашего процесса. Растровое изображение инициализируется данными из ресурса DLL. То есть, информация о пикселях копируется в растровое изображение. Растровое изображение не содержит указателя на данные ресурса. После создания вы можете освободить DLL.

+0

Большое спасибо Адриану, попробуем. Что заставило меня думать, что это неверно, это то, что написано здесь: http://msdn.microsoft.com/en-us/library/ms648006(VS.85).aspx Особенно «После того, как приложение загружает ресурс, используя LoadResource, система выгружает связанную память только тогда, когда все ссылки на ее модуль освобождаются через ** FreeLibrary ** " –