2010-03-15 16 views
0

J'ai un cas où j'ai besoin de charger bitmap à partir d'une DLL de la ressource et de libérer la poignée à elle. Le mécanisme de mise à jour peut mettre à jour la DLL et l'ouvrir ne l'écrase pas.Est-il correct d'utiliser HBITMAP après avoir appelé FreeLibrary?

permet donc dire que j'ai quelque chose comme ceci:

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

est-il valide à utiliser hBitmap après avoir appelé FreeLibrary?

Merci d'avance.

Répondre

0

Oui, la DLL est valide.

LoadBitmap fait l'équivalent de CreateCompatibleBitmap, ce qui crée un nouveau bitmap pour votre processus. L'image bitmap est initialisée avec les données de la ressource DLL. C'est-à-dire que les informations de pixel sont copiées dans l'image bitmap. Le bitmap ne contient pas de pointeur vers les données de ressource. Une fois créé, vous pouvez libérer la DLL.

+0

Merci Adrian, je vais l'essayer. Ce qui m'a fait penser que ce n'est pas valide est ce qui est écrit ici: http://msdn.microsoft.com/en-us/library/ms648006(VS.85).aspx Surtout "Après qu'une application charge une ressource en utilisant LoadResource, le système ne déchargera la mémoire associée que lorsque toutes les références à son module seront libérées via ** FreeLibrary ** " –