Hallo zusammen,
Ich habe eine Methode in C++ welche abhängig von MFC ist.
Die Methode wird aber in einem Projekt hinzugefügt in dem MFC nicht existiert.
Das Programm wird auf Win XP (32Bit) kompiliert und ausgeführt. Der Compiler ist von Visual Studio 9.0
Nun, die anderen Methoden konnte ich so umschreiben, dass sie nicht mehr von MFC abhängig sind. Nur bei GetFileVersionInfo() komme ich nicht weiter.
Beim Aufruf GetFileVersionInfoSize(strFile.GetBuffer(),... )
ist der Aufruf strFile.GetBuffer() zu 100% MFC abhängig. Weiter habe ich nicht herausgefunden wie die GetBuffer() Funktion funktioniert. Was tut die genau oder wie kann ich diesen Aufruf MFC unabhängig machen?
Freundliche Grüsse
Mark
Ich habe eine Methode in C++ welche abhängig von MFC ist.
Die Methode wird aber in einem Projekt hinzugefügt in dem MFC nicht existiert.
Das Programm wird auf Win XP (32Bit) kompiliert und ausgeführt. Der Compiler ist von Visual Studio 9.0
Nun, die anderen Methoden konnte ich so umschreiben, dass sie nicht mehr von MFC abhängig sind. Nur bei GetFileVersionInfo() komme ich nicht weiter.
Code:
CString CWriteLog::GetFileVersionInfoString(CString strFile, CString strProperty)
{
int rc;
UINT nLen;
DWORD nSize;
DWORD dwHandle = 0;
CString strBuffer;
CString strValue;
CString returnValue;
CString strBlock;
void *lpPropertyBuffer;
struct LANGANDCODEPAGE
{
WORD wLanguage;
WORD wCodePage;
} *lpTranslate;
nSize = GetFileVersionInfoSize(strFile.GetBuffer(), &dwHandle);
if(::GetFileVersionInfo(strFile.GetBuffer(), 0, nSize, strBuffer.GetBuffer(nSize)))
{
// Read the list of languages and code pages.
if (VerQueryValue(strBuffer.GetBuffer(), "\\VarFileInfo\\Translation", (LPVOID *) &lpTranslate, &nLen))
{
strBlock.Format("\\StringFileInfo\\%04x%04x\\%s",
lpTranslate->wLanguage,
lpTranslate->wCodePage,
strProperty);
rc = VerQueryValue(strBuffer.GetBuffer(), strBlock.GetBuffer(nSize), &lpPropertyBuffer, &nLen);
if (rc != 0 && nLen > 0)
{
strncpy(strValue.GetBuffer(nLen + 1), (char *) lpPropertyBuffer, nLen);
strValue.ReleaseBuffer(nLen);
}
}
returnValue=strValue;
}
else returnValue="no data";
return returnValue;
}
Beim Aufruf GetFileVersionInfoSize(strFile.GetBuffer(),... )
ist der Aufruf strFile.GetBuffer() zu 100% MFC abhängig. Weiter habe ich nicht herausgefunden wie die GetBuffer() Funktion funktioniert. Was tut die genau oder wie kann ich diesen Aufruf MFC unabhängig machen?
Freundliche Grüsse
Mark