Skocz do zawartości

Zasoby


Flinch

Recommended Posts

Standardowe zasoby, jak np. bitmapa to pobiera się z funkcji
LoadBitmap(hinstance,'nazwabitmapy.bmp'). funkcja zwraca uchwyt bitmapy.
Jeżeli zaś chodzi o niestandardowe zasoby to robi się tak:
FindResource(nil,'nazwazasobu',typ)
jeżeli znajdzie to zwraca uchwyt. I dalej:
LoadResource(nil,uchwyt z findresource)

lockresource(uchwyt globalny zwrocony z powyższej funkcji)
funkcja zwraca wskaźnik do zasobów. Aby znać rozmiar skorzystaj z funkcji:
SizeofResource(nil,uchwyt z findresource)

Na zwalniasz uchwyty Freeresource

Link do komentarza
Udostępnij na innych stronach

Z ikonami to lepiej stosowac standardowe funkcje (LoadIcon czy LoadIconEx). Bo jak sie domyslam to nie wiesz jak sa zapisywane ikony w zasobach. Aby wyciagnac je z zasobów FindResource musisz najpierw wyciągnąć grupe ikon RT_GROUP_ICON i zniej dowiadujesz sie jak poszczegolne ikony sie nazywaja (ich nazwy to tylko cyfry) - dla danej grupy.

Link do komentarza
Udostępnij na innych stronach

Właśnie przypadkowo znalazłem w pliku pomocy przykład jak wydłubać z zasobów ikone za pomocą wczesniej omawianych fukcji. Coprawda jest to pokazane jak wydłubac ja z zewnetrznej biblioteki, ale chyba bedziesz wiedzial jak to zmienic. Oto calosc:

HICON hIcon1;       // icon handle  
HINSTANCE hExe;     // handle to loaded .EXE file 
HRSRC hResource;    // handle for FindResource  
HRSRC hMem;         // handle for LoadResource 
BYTE *lpResource;   // address of resource data  
int nID;            // ID of resource that best fits current screen 
 
HDC hdc;        // handle of display context 
 
// Load the file from which to copy the icon. 
 
hExe = LoadLibrary("myapp.exe"); 
 
// Find the icon directory whose identifier is 440. 

 
hResource = FindResource(hExe, 
    MAKEINTRESOURCE(440), 
    RT_GROUP_ICON); 
 
// Load and lock the icon directory. 
 
hMem = LoadResource(hExe, hResource); 
 
lpResource = LockResource(hMem); 
 
// Get the identifier of the icon that is most appropriate 
// for the video display. 
 
nID = LookupIconIdFromDirectoryEx((PBYTE) lpResource, TRUE, 
    CXICON, CYICON, LR_DEFAULTCOLOR); 
 
// Find the bits for the nID icon. 
 
hResource = FindResource(hExe, 

    MAKEINTRESOURCE(nID), 
    MAKEINTRESOURCE(RT_ICON)); 
 
// Load and lock the icon. 
 
hMem = LoadResource(hExe, hResource); 
 
lpResource = LockResource(hMem); 
 
// Create a handle to the icon. 
 
hIcon1 = CreateIconFromResourceEx((PBYTE) lpResource, 
    SizeofResource(hExe, hResource), TRUE, 0x00030000, 
    CXICON, CYICON, LR_DEFAULTCOLOR); 
 
// Draw the icon in the client area. 
 
DrawIcon(hdc, 10, 20, hIcon1); 
Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...