Resources bijwerken

In het volgende voorbeeld wordt een dialoogvenster vak resource gekopieerd uit één uitvoerbaar bestand, HAND.EXE, naar de andere voet.EXE, door de volgende stappen:

  1. Gebruik de LoadLibrary -functie om het uitvoerbare bestand HAND te laden.EXE.
  2. Gebruik de functies FindResource en LoadResource om te zoeken en de resource vak dialoogvenster laden.
  3. De functie LockResource gebruiken om een aanwijzer naar het dialoogvenster box resourcegegevens ophalen.
  4. De functie BeginUpdateResource om te openen een update handvat te voet.EXE.
  5. De functie UpdateResource de resource vak dialoogvenster kopiëren uit HAND.EXE te voet.EXE.
  6. Gebruik de functie EndUpdateResource om de update te voltooien.

De volgende code implementeert deze stappen.

HRSRC hResLoad;     / / ingang naar geladen resource handvat hExe;        / / verwerken aan bestaande.EXE bestand HRSRC hRes;         / / handvat/ptr. res. info. in hExe handvat hUpdateRes;  / / update resource handvat char * lpResLock;    / / verwijzing naar resource gegevens BOOL resultaat; 
 
/ / Laden de.EXE bestand dat bevat het dialoogvenster dat u wilt kopiëren. 
hExe = LoadLibrary("hand.exe"); 
 
Als (hExe == NULL) {ErrorHandler ("kan niet laden exe."); 
} / / Zoeken de resource vak dialoogvenster in de.EXE bestand. 
hRes = FindResource (hExe, "AboutBox", RT_DIALOG); 
 
Als (hRes == NULL) {ErrorHandler ("kan niet vinden dialoogvenster."); 
} / / Het dialoogvenster laden in het globale geheugen. 
hResLoad = LoadResource (hExe, hRes); 
 
Als (hResLoad == NULL) {ErrorHandler ("kan niet laden dialoogvenster."); 
} / / Het dialoogvenster in het globale geheugen vergrendelen. 
lpResLock = LockResource(hRes); 
 
Als (lpResLock == NULL) {ErrorHandler ("kon niet vergrendelen dialoogvenster."); 
} / / Openen van het bestand waarnaar u wilt toevoegen van het dialoogvenster vak resource. 
hUpdateRes = BeginUpdateResource ("foot.exe", FALSE); 
 
Als (hUpdateRes == NULL) {ErrorHandler ("kon bestand niet openen voor schrijven."); 
} / / Het dialoogvenster vak resource toevoegen aan de lijst bijwerken. 
resultaat = UpdateResource (hUpdateRes, / / update resource behandelen RT_DIALOG, / / change dialoogvenster vak resource "AboutBox", / / dialoogvenster naam MAKELANGID (LANG_NEUTRAL, SUBLANG_NEUTRAL), / / neutrale taal
     lpResLock, / / ptr aan resource info SizeofResource (hExe, hRes)); / / grootte van resource info. 
 
Als (resultaat == FALSE) {ErrorHandler ("kon niet resource toevoegen."); 
} / / Schrijf wijzigingen te voet.EXE en sluit het. 
If (!.EndUpdateResource (hUpdateRes, FALSE)) {ErrorHandler ("kan niet schrijven wijzigingen aan het bestand."); 
} / / Opschonen. 
If (!.FreeLibrary(hExe)) {ErrorHandler ("kon niet gratis uitvoerbaar."); 
}