R
hi,
ja, so wie es in der MSDN steht allokiert die selber was sie braucht.
der komplette code sieht so aus:
CErrorHandler::ShowMessage(DWORD dwErrorCode)
{
int iCharsStored;
iCharsStored = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, dwErrorCode, 0, (LPTSTR)&(this->lpMessageBuffer), 0, NULL);
if(iCharsStored > 0)
{
if(this->bDoErrorHandling)
{
printf("Error: %s [Code: %d]\n", (char *)(this->lpMessageBuffer), dwErrorCode);
}
}
else
{
this->iError = GetLastError();
printf("CErrorHandler::ShowMessage() failed with code [%d]\n", this->iError);
}
LocalFree(lpMessageBuffer);
}
wobei die klasse an sich so aussieht:
class CErrorHandler
{
private:
int iError; // for internal error codes
LPVOID lpMessageBuffer; // buffer for error messages
public:
bool bDoErrorHandling; // turns error handling on or off
CErrorHandler(bool DoErrorHandling); // constructor
~CErrorHandler(); // destructor
ShowMessage(DWORD dwErrorCode); // display plaintext message of the error code
};
in iCharsStored stehen auch immer werte grösser als 1, also scheint der API aufruf geklappt zu haben...
hilft das weiter?
gruss, root