home *** CD-ROM | disk | FTP | other *** search
/ HomeWare 14 / HOMEWARE14.bin / os2 / fixkey.arj / SOURCE.ZIP / fixkey.c < prev    next >
C/C++ Source or Header  |  1994-04-04  |  2KB  |  65 lines

  1. // FIXKEY 1.0 -- keyboard utility to fix up substandard keyboards. See
  2. //               readme.txt for further details.
  3. //
  4. // Author: Christopher Wong
  5. //         wong1@husc4.harvard.edu
  6.  
  7.  
  8. #define INCL_WIN
  9. #include <OS2.H>
  10.  
  11. #define ICON_RC 1
  12. MRESULT EXPENTRY winFunc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
  13.  
  14. int main(void)
  15. {
  16.   HAB hab;
  17.   HMQ hmq;
  18.   QMSG qmsg;
  19.   HWND hwnd, hwndClient;
  20.   ULONG flFlags;
  21.   APIRET rc;
  22.   const char FIXKEY[]="FIXKEY";
  23.  
  24.   flFlags = FCF_STANDARD & ~FCF_MENU & ~FCF_ACCELTABLE;
  25.  
  26.   hab = WinInitialize(0);
  27.   hmq = WinCreateMsgQueue(hab, 0);
  28.  
  29.   if ( !WinRegisterClass(hab, FIXKEY, winFunc, CS_SIZEREDRAW, 0)) {
  30.     printf("Registration of window class FIXKEY failed");
  31.     exit(1);
  32.   }
  33.  
  34.   hwnd = WinCreateStdWindow( HWND_DESKTOP, WS_MINIMIZED, 
  35.                 &flFlags, FIXKEY, "Fixkey 1.0",
  36.                 0, 0, ICON_RC, &hwndClient);
  37.   // install keyboard hook
  38.   if ( !installHook(hab)) exit(1);
  39.   
  40.   // minimize the window (which is blank, displaying nothing anyway.
  41.   WinSetWindowPos(hwnd, HWND_TOP, 0,0,0,0, SWP_SHOW|SWP_MINIMIZE);
  42.  
  43.   // message loop
  44.   while ( WinGetMsg(hab, &qmsg, NULLHANDLE, 0, 0))
  45.     WinDispatchMsg(hab, &qmsg);
  46.  
  47.   // shut down: unload keyboard hook.
  48.   printf("Shutting down\n");
  49.   uninstallHook(hab);
  50.   WinDestroyWindow(hwnd);
  51.   WinDestroyMsgQueue(hmq);
  52.   WinTerminate(hab);
  53. }
  54.  
  55. MRESULT EXPENTRY winFunc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
  56. {
  57.   switch (msg) {
  58.   case WM_ERASEBACKGROUND:
  59.     return (MRESULT) TRUE;
  60.   default:
  61.     return(WinDefWindowProc(hwnd, msg, mp1, mp2));
  62.   }
  63. }
  64.  
  65.