GenerateError.cpp
Upload User: dq031136
Upload Date: 2022-08-08
Package Size: 802k
Code Size: 2k
Development Platform:

C++ Builder

  1. #include <genstub.c>
  2. #define OUR_ERROR 0x10000000
  3. LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  4. {
  5.    static UINT uClicks;
  6.    static UINT uRow;
  7.    switch (uMsg)
  8.    {
  9.          case WM_CREATE:
  10.                uRow = 0;
  11.                uClicks = 0;
  12.                return DefWindowProc( hWnd, uMsg, wParam, lParam);
  13.          case WM_DESTROY:
  14.                PostQuitMessage( 0 );
  15.                break;
  16.          case WM_COMMAND:
  17.                switch ( LOWORD( wParam ) )
  18.                {
  19.                      case IDM_TEST:
  20.                      {
  21.                            HANDLE hModule;
  22.                            char szBuffer[128];
  23.                            HDC hDC = GetDC(hWnd);
  24.                            // Turn off the DLL not found error mode.
  25.                            UINT uOldMode = SetErrorMode( SEM_NOOPENFILEERRORBOX );
  26.                            if ( (hModule = LoadLibrary("GetLast.DLL")) )
  27.                            {
  28.                               // Get address of external function.
  29.                               FARPROC lpfnSetErrorCondition;
  30.                               lpfnSetErrorCondition =
  31.                                     GetProcAddress(hModule, "SetTheErrorCondition");
  32.                               // Call external function to change error code.
  33.                               if (lpfnSetErrorCondition)
  34.                                  (*lpfnSetErrorCondition) (OUR_ERROR + uClicks++);
  35.                            }
  36.                            TextOut( hDC, 0, 16 * uRow++, szBuffer,
  37.                                     wsprintf(szBuffer,"Error code is: %X",
  38.                                     GetLastError() ));
  39.                            SetErrorMode( uOldMode );
  40.                            ReleaseDC(hWnd, hDC);
  41.                      }
  42.                      break;
  43.                      case IDM_EXIT:
  44.                            DestroyWindow( hWnd );
  45.                            break;
  46.                }
  47.                break;
  48.          default:
  49.                return (DefWindowProc(hWnd, uMsg, wParam, lParam));
  50.    }
  51.    return (NULL);
  52. }