Uaktualnianie zasobów

W następującym przykładzie skopiowano zasobu pole dialogowe z jednego pliku wykonywalnego, ręcznie.EXE, do innego, FOOT.EXE, wykonaj następujące kroki:

  1. Użycie funkcja LoadLibrary do załadowania pliku wykonywalnego ręcznie.EXE.
  2. Użyj funkcji FindResource i LoadResource do odszukaj i Otwórz okno dialogowe pole zasobu.
  3. Użyj funkcji LockResource do pobrania wskaźnik do danych zasobów pole dialogowe.
  4. Aby otworzyć dojście aktualizacji do pryszczycy, należy użyć funkcji BeginUpdateResource .EXE.
  5. Aby skopiować zasobu pole dialogowe ręcznie, należy użyć funkcji UpdateResource .EXE FOOT.EXE.
  6. Funkcji EndUpdateResource w celu zakończenia aktualizacji.

Poniższy kod wykonuje następujące czynności.

HRSRC hResLoad;     / / dojście do zasobu załadowany uchwyt hExe;        / / dojście do istniejących.Plik EXE HRSRC parametrem typu HRESULT;         / / uchwyt/ptr. do zasobu informacji. w hExe uchwyt hUpdateRes;  / aktualizacji zasobu uchwyt char * lpResLock;    / / wskaźnik wyniku BOOL danych zasobów; 
 
/ / Wczytaj.Plik EXE, który zawiera okno dialogowe, które chcesz skopiować. 
hExe = LoadLibrary("hand.exe"); 
 
Jeżeli (hExe == NULL) {ObsługaBłędu ("nie można załadować exe."); 
} / / Odszukaj pole dialogowe zasobu.Plik EXE. 
parametrem typu HRESULT = FindResource (hExe, "AboutBox", RT_DIALOG); 
 
Jeżeli (parametrem typu HRESULT == NULL) {ObsługaBłędu ("nie może zlokalizować okno dialogowe."); 
} / / Załadować okna dialogowego do globalnej pamięci. 
hResLoad = LoadResource (hExe, parametrem typu HRESULT); 
 
Jeżeli (hResLoad == NULL) {ObsługaBłędu ("nie można załadować okno dialogowe."); 
} / / Zablokować okna dialogowego w globalnej pamięci. 
lpResLock = LockResource(hRes); 
 
Jeżeli (lpResLock == NULL) {ObsługaBłędu ("może nie okno dialogowe Zablokuj."); 
} / / Otwórz plik, do którego chcesz dodać zasób pole dialogowe. 
hUpdateRes = BeginUpdateResource ("foot.exe", FALSE); 
 
Jeżeli (hUpdateRes == NULL) {ObsługaBłędu ("nie można otworzyć pliku w celu zapisu."); 
} / / Add zasobu pole dialogowe z listą aktualizacji. 
wynik = UpdateResource (hUpdateRes, / / zasobu aktualizacja obsługuje RT_DIALOG, / / Zmień okno dialogowe pole zasobu "AboutBox", / / okno dialogowe Nazwa MAKELANGID (LANG_NEUTRAL, SUBLANG_NEUTRAL), / / neutralne języka
     lpResLock, / / ptr do zasobu informacji o SizeofResource (hExe, parametrem typu HRESULT)); / / rozmiar informacje o zasobie. 
 
Jeżeli (wynik == FALSE) {ObsługaBłędu ("nie można dodać zasobu."); 
} / / Zapisanie zmian stopy.EXE i zamknij go. 
if (!.EndUpdateResource (hUpdateRes, FALSE)) {ObsługaBłędu ("nie można zapisać zmiany w pliku."); 
} / / Oczyszczanie. 
if (!.FreeLibrary(hExe)) {ObsługaBłędu ("nie może zwolnić pliku wykonywalnego."); 
}