home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / numcomma.zip / numcomma.c < prev    next >
C/C++ Source or Header  |  1997-11-07  |  2KB  |  61 lines

  1. #define INCL_WIN
  2. #define INCL_DOS
  3.  
  4. #include <os2.h>
  5. #include <stdio.h>
  6.  
  7. BOOL EXPENTRY WinHookProc(HAB hab,PQMSG pqmsg,USHORT usRemove );
  8.  
  9. int _CRT_init(void);
  10. void _CRT_term(void);
  11.  
  12. HAB mainhab = 0;
  13. HMODULE hmDll = 0;
  14. BOOL loaded = FALSE;
  15.  
  16. BOOL EXPENTRY WinHookProc(HAB hab,PQMSG pqmsg,USHORT usRemove )
  17. {
  18.    loaded = TRUE;
  19.  
  20.    if ((pqmsg->msg == WM_CHAR) &&                  /* character message */
  21.       !(SHORT1FROMMP(pqmsg->mp1) & KC_KEYUP) &&    /* key down */
  22.        (SHORT1FROMMP(pqmsg->mp1) & KC_SCANCODE) && /* valid scan code */
  23.        (CHAR4FROMMP(pqmsg->mp1) == 83) &&          /* . and del on numpad */
  24.        (SHORT1FROMMP(pqmsg->mp2) != ',') &&        /* just make sure we
  25.                                                       haven't already
  26.                                                       processed it  */
  27.        (WinGetKeyState(HWND_DESKTOP,VK_NUMLOCK)))  /* numlock on */
  28.    {
  29.       WinPostMsg(pqmsg->hwnd,WM_CHAR,pqmsg->mp1,MPFROM2SHORT(',',SHORT2FROMMP(pqmsg->mp2)));
  30.       return(TRUE);
  31.    }
  32.    return(FALSE);
  33. }
  34.  
  35. BOOL EXPENTRY HookInit(void)
  36. {
  37.    if (!loaded)
  38.    {
  39.       /* find desktop anchor */
  40.       mainhab = WinQueryAnchorBlock(HWND_DESKTOP);
  41.  
  42.       /* setting hook */
  43.       if(DosQueryModuleHandle("numcomma", &hmDll))
  44.          return FALSE;
  45.       return WinSetHook(mainhab, NULLHANDLE, HK_INPUT, (PFN)WinHookProc, hmDll);
  46.    }
  47.    return FALSE;
  48. }
  49.  
  50. BOOL EXPENTRY HookKill(void)
  51. {
  52.    loaded = FALSE;
  53.    return WinReleaseHook(mainhab, NULLHANDLE, HK_INPUT, (PFN)WinHookProc, hmDll);
  54. }
  55.  
  56. BOOL EXPENTRY WaitLoaded(void)
  57. {
  58.    while(!loaded) DosSleep(10);
  59.    return TRUE;
  60. }
  61.