Здравствуйте, McQwerty, Вы писали:
А>>У Вас есть функции для замены.
А>>А как добавить новый комментарий к версии файла?
А>>Существует ли реализация этой футкции?
А>>Если есть сообщите пожалуйста.
MQ>Да. Это возможно.
MQ>Все строки, которые будут записаны в ресурсы, содержатся в массиве m_Childs
MQ>класса VVersionInfo. Соответственно, если в этот массив добавить ещё один
MQ>элемент, то при выполнении функции Compile, он будет добавлен в ресурсы.
MQ>Сделать это можно примерно так:
MQ>VVersionInfo ver (pVer);
MQ>ver. m_Childs. Add (new VVersionInfo ("NewStr", "NewVal"));
MQ>Конструктор от двух строк для VVersionInfo придётся добавить самому — у
MQ>меня его нет.
Спасибо за ответ.
Коструктор VVersionInfo имеет следующую реализацию
VVersionInfo::VVersionInfo (const LPVOID pMemoryLocation, DWORD nLevel)
{
LPBYTE pTemp = (LPBYTE) pMemoryLocation;
m_pInfo = new VCommonVersionInfo (pMemoryLocation, nLevel);
INT dwSizeRest = m_pInfo -> ChildSize ();
pTemp += m_pInfo -> Size ();
while (dwSizeRest > 0)
{
VVersionInfo* pChild = new VVersionInfo (pTemp, nLevel + 1);
m_Childs. push_back (pChild);
DWORD dwItemSize = pChild -> Size ();
pTemp += dwItemSize;
dwSizeRest -= dwItemSize;
if (dwSizeRest < 0)
{
dwSizeRest = 0;
}
}
} // VVersionInfo::VVersionInfo
я попробовал сделать еще один конструктор
VVersionInfo::VVersionInfo (LPWSTR m_pszKey ,LPWSTR m_psValue, DWORD nLevel)
{
m_pInfo = new VCommonVersionInfo (m_pszKey,m_psValue, nLevel);
INT dwSizeRest = m_pInfo -> ChildSize ();
}
VVersionInfo::VCommonVersionInfo::VCommonVersionInfo (LPWSTR pszKey, LPWSTR pszValue,DWORD nLevel)
{
//const LPBYTE pTemp = (LPBYTE) pMemoryLocation;
m_nSize = 0;
m_nLevel = nLevel;
m_wLength = (wcslen (pszKey) + 1) + (wcslen (pszValue) + 1);
m_nSize += sizeof (WORD);
m_wValueLength = (wcslen (pszValue) + 1);
m_nSize += sizeof (WORD);
m_wType = 1; //string data
m_nSize += sizeof (WORD);
//m_wLength = * ((LPWORD) (pTemp + m_nSize));
//m_nSize += sizeof (WORD);
//m_wValueLength = * ((LPWORD) (pTemp + m_nSize));
//m_nSize += sizeof (WORD);
//m_wType = * ((LPWORD) (pTemp + m_nSize));
//m_nSize += sizeof (WORD);
m_pszKey = pszKey;
m_nSize += (wcslen (m_pszKey) + 1) * sizeof (WCHAR);
m_nSize += (4 - m_nSize) & 3; // âûðàâíèâàíèå íà 32 áèòà
DWORD dwFactor = (m_nLevel == 3) ? sizeof (WORD) : 1;
m_Value. Assign ((LPBYTE)pszValue,wcslen (pszValue) + 1);
m_nSize += m_wValueLength * dwFactor;
m_nSize += (4 - m_nSize) & 3; // âûðàâíèâàíèå íà 32 áèòà
} // VVersionInfo::VCommonVersionInfo::VCommonVersionInfo
и
VVersionInfo* verN=new VVersionInfo(L"SNP",L" 1.20.0",2);
ver.m_Childs.push_back(verN);
Но в такой реализации не работает.
Вопрос в следующем:
какого должно быть значение nLevel
и какие значения должны принимать члены класса VCommonVersionInfo в такой реализации.
Буду очень признателен за помощь.
Алексан.