home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / windows / kamakazi.zip / KAMAKAZI.C < prev    next >
C/C++ Source or Header  |  1988-10-18  |  3KB  |  134 lines

  1. #include <Windows.H>
  2. #include <StdIO.H>
  3. #include "Kamakazi.H"
  4.  
  5. char szAppName[] = "Kamakazi";
  6.  
  7. BOOL FAR PASCAL ExitWindows(LPSTR);
  8.  
  9. HWND    hMainWnd, hMSDOS;
  10. HANDLE    hInst;
  11.  
  12. BOOL FAR PASCAL FindMSDOS (hWnd, lParam)
  13.     HWND hWnd;
  14.     LONG lParam;
  15. {
  16.     char title[25];
  17.     if (GetWindowText (hWnd, (LPSTR)title, 24)) {
  18.       if (!strcmp (title, "MS-DOS Executive")){
  19.     PostMessage (LOWORD(lParam), KAMAKAZI, hWnd, 0L);
  20.       }
  21.     }
  22.     return 1;
  23. } /* FindMSDOS */
  24.  
  25.  
  26. long FAR PASCAL WndProc (HWND, unsigned, WORD, LONG);
  27.  
  28. int PASCAL WinMain (hInstance, hPrevInstance, lpszCmdLine, nCmdShow)
  29.     HANDLE    hInstance, hPrevInstance;
  30.     LPSTR    lpszCmdLine;
  31.     int     nCmdShow;
  32. {
  33.     MSG     msg;
  34.     WNDCLASS    wndclass;
  35.  
  36.     if (!hPrevInstance) {
  37.     wndclass.style           = CS_HREDRAW | CS_VREDRAW;
  38.     wndclass.lpfnWndProc   = WndProc;
  39.     wndclass.cbClsExtra    = 0;
  40.     wndclass.cbWndExtra    = 0;
  41.     wndclass.hInstance     = hInstance;
  42.     wndclass.hIcon           = LoadIcon (NULL, IDI_APPLICATION);
  43.     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW);
  44.     wndclass.hbrBackground = COLOR_WINDOW+1;
  45.     wndclass.lpszMenuName  = szAppName;
  46.     wndclass.lpszClassName = szAppName;
  47.  
  48.     if (!RegisterClass (&wndclass))
  49.         return FALSE;
  50.     }
  51.  
  52.     hMainWnd = CreateWindow (szAppName, szAppName,
  53.     WS_OVERLAPPEDWINDOW,
  54.     CW_USEDEFAULT, 0,
  55.     CW_USEDEFAULT, 0,
  56.     NULL, NULL, hInstance, NULL);
  57.  
  58.     ShowWindow (hMainWnd, nCmdShow);
  59.     UpdateWindow (hMainWnd);
  60.  
  61.     hInst = hInstance;
  62.  
  63.     while (GetMessage (&msg, NULL, 0, 0)) {
  64.     TranslateMessage (&msg);
  65.     DispatchMessage (&msg);
  66.     }
  67.     return msg.wParam;
  68. }
  69.  
  70. BOOL FAR PASCAL CanWeQuit()
  71. {
  72.    return (MessageBox (GetFocus(), "Do You Really Want to Quit?", szAppName, MB_YESNO) == IDYES);
  73. }
  74.  
  75.  
  76. long FAR PASCAL WndProc (hWnd, iMessage, wParam, lParam)
  77.      HWND     hWnd;
  78.      unsigned iMessage;
  79.      WORD     wParam;
  80.      LONG     lParam;
  81. {
  82.     FARPROC lpEnumFunc;
  83.  
  84.     switch (iMessage) {
  85.     case WM_COMMAND:
  86.         switch (wParam) {
  87.         case IDM_TEST1:
  88.             lpEnumFunc = MakeProcInstance (FindMSDOS, hInst);
  89.             EnumWindows (lpEnumFunc, MAKELONG(hMainWnd, hMainWnd));
  90.             FreeProcInstance (lpEnumFunc);
  91.             break;
  92.  
  93.         case IDM_TEST2:
  94.             ExitWindows(MAKEINTRESOURCE(0));
  95.             break;
  96.  
  97.         case IDM_TEST3:
  98.             FatalExit(0);
  99.             break;
  100.  
  101.         case IDM_TEST4:
  102.             break;
  103.         }
  104.         break;
  105.  
  106.     case KAMAKAZI: /* We are being asked to quit */
  107.         PostMessage (wParam, WM_SYSCOMMAND, SC_CLOSE, lParam);
  108.         break;
  109.  
  110.     case WM_QUERYENDSESSION:
  111.         return CanWeQuit();
  112.         break;
  113.  
  114.     case WM_ENDSESSION:
  115.         if (wParam) {
  116.         /* Windows is shutting down */
  117.         } else {
  118.         MessageBox (GetFocus(), "False Alarm...", szAppName, MB_OK);
  119.         }
  120.         break;
  121.  
  122.     case WM_DESTROY:
  123.         PostQuitMessage (0);
  124.         break;
  125.  
  126.     case WM_CLOSE:
  127.         if (!CanWeQuit()) break;
  128.         /* else fall through to... */
  129.     default:
  130.         return DefWindowProc (hWnd, iMessage, wParam, lParam);
  131.     }
  132.     return 0L;
  133. }
  134.