diff --git a/Source/ResourceEditor.cpp b/Source/ResourceEditor.cpp index 66e22fca..8c89a5a5 100644 --- a/Source/ResourceEditor.cpp +++ b/Source/ResourceEditor.cpp @@ -94,7 +94,7 @@ CResourceEditor::~CResourceEditor() { // Adds/Replaces/Removes a resource. // If lpData is 0 UpdateResource removes the resource. -void CResourceEditor::UpdateResource(char* szType, char* szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize) { +bool CResourceEditor::UpdateResource(char* szType, char* szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize) { CResourceDirectory* nameDir = 0; CResourceDirectory* langDir = 0; CResourceDataEntry* data = 0; @@ -118,7 +118,7 @@ void CResourceEditor::UpdateResource(char* szType, char* szName, LANGID wLanguag // Replace/Add the resource if (data) { data->SetData(lpData, dwSize); - return; + return true; } if (!nameDir) { @@ -151,18 +151,20 @@ void CResourceEditor::UpdateResource(char* szType, char* szName, LANGID wLanguag } } } + else return false; + return true; } -void CResourceEditor::UpdateResource(WORD szType, char* szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize) { - UpdateResource(MAKEINTRESOURCE(szType), szName, wLanguage, lpData, dwSize); +bool CResourceEditor::UpdateResource(WORD szType, char* szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize) { + return UpdateResource(MAKEINTRESOURCE(szType), szName, wLanguage, lpData, dwSize); } -void CResourceEditor::UpdateResource(char* szType, WORD szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize) { - UpdateResource(szType, MAKEINTRESOURCE(szName), wLanguage, lpData, dwSize); +bool CResourceEditor::UpdateResource(char* szType, WORD szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize) { + return UpdateResource(szType, MAKEINTRESOURCE(szName), wLanguage, lpData, dwSize); } -void CResourceEditor::UpdateResource(WORD szType, WORD szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize) { - UpdateResource(MAKEINTRESOURCE(szType), MAKEINTRESOURCE(szName), wLanguage, lpData, dwSize); +bool CResourceEditor::UpdateResource(WORD szType, WORD szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize) { + return UpdateResource(MAKEINTRESOURCE(szType), MAKEINTRESOURCE(szName), wLanguage, lpData, dwSize); } // Returns a copy of the resource requested diff --git a/Source/ResourceEditor.h b/Source/ResourceEditor.h index 7a4671af..09696693 100644 --- a/Source/ResourceEditor.h +++ b/Source/ResourceEditor.h @@ -62,10 +62,10 @@ public: CResourceEditor(BYTE* pbPE, int iSize); virtual ~CResourceEditor(); - void UpdateResource(char* szType, char* szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize); - void UpdateResource(WORD szType, char* szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize); - void UpdateResource(char* szType, WORD szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize); - void UpdateResource(WORD szType, WORD szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize); + bool UpdateResource(char* szType, char* szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize); + bool UpdateResource(WORD szType, char* szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize); + bool UpdateResource(char* szType, WORD szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize); + bool UpdateResource(WORD szType, WORD szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize); BYTE* GetResource(char* szType, char* szName, LANGID wLanguage); BYTE* Save(DWORD &dwSize); diff --git a/Source/util.cpp b/Source/util.cpp index 9ddaa676..8fc34945 100644 --- a/Source/util.cpp +++ b/Source/util.cpp @@ -127,9 +127,14 @@ int replace_icon(CResourceEditor* re, WORD wIconId, char* filename) RsrcIconGroupEntry* ige = (RsrcIconGroupEntry*)(rsrcIconGroup + sizeof(IconGroupHeader)); + int i = 1; + + // Delete old icons + while (re->UpdateResource(RT_ICON, MAKEINTRESOURCE(i++), MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), 0, 0)); + int iNewIconSize = 0; - for (int i = 0; i < igh.wCount; i++) { + for (i = 0; i < igh.wCount; i++) { fread(ige, sizeof(FileIconGroupEntry)-sizeof(DWORD), 1, f); ige->wRsrcId = i+1;