Skocz do zawartości

Recommended Posts

Napisano

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

Napisano

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.

Napisano

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); 

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...