One should only use WinGetLastError() after a bad return value, ERRORID
is not always zeroed after a successful call to PM API.
ShowError Function:
/* * ShowError -- for debugging: outputs (via printf) the last error; * to use this, redirect the output of this program to a file and * check the results in that file. * Updated to display the error text in a MESSAGE BOX; ID_MSGBOX must be * defined. */ void ShowError(void) { PERRINFO p; char *cp; extern HAB hab; /* kinda kludgy, should be a parameter */ printf("ShowError: "); if((p = WinGetErrorInfo(hab)) == NULL) printf("NO ERROR\n"); else { printf("idError = %#X\n", p->idError); cp = (char *)((ULONG)p + *(ULONG *)((ULONG)p + p->offaoffszMsg)); printf("\"%s\"\n", cp); WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, (PSZ)cp, (PSZ)"Show Error", ID_MSGBOX, MB_OK | MB_ICONEXCLAMATION); WinFreeErrorInfo(p); } }
Credit: Justin V Frank