home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / messrec.c < prev    next >
Text File  |  1996-07-16  |  10KB  |  211 lines

  1. /*
  2. Martin Vieregg 100661.626@COMPUSERVE.COM
  3. Public Domain software
  4. 15.4.1996
  5.  
  6. Recording messages of a OS/2 PM application into the file MESSAGES.TXT
  7.  
  8. Usage:
  9. ------
  10.  
  11. * include this C file to your main C source file:
  12.   #include "messrec.c"
  13.  
  14. * insert MessRecStart() e.g. under WM_INITDLG
  15.  
  16. * insert MessRecEnd() e.g. under WM_CLOSE
  17.  
  18. * insert MessRec(msg) at the beginning of your window message main function: 
  19.   MRESULT EXPENTRY MyProgDialog(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) {
  20.     MessRec(msg);
  21.  
  22.  
  23. Result:
  24. -------
  25.  
  26. After running your program, the file MESSAGES.TXT will look like:
  27.  
  28.     1  WM_SETWINDOWPARAMS
  29.     2  WM_QUERYFRAMEINFO
  30.     3  WM_SETHELPINFO
  31.     4  WM_CONTROL.........
  32.    14  WM_QUERYFOCUSCHAIN..
  33.    17  WM_FOCUSCHANGE
  34.    18  WM_ADJUSTWINDOWPOS
  35.  
  36. If a message appears more than one time, it is shown as a dot.
  37.  
  38.  
  39. I have tested this code with Borland C 1.5.
  40.  
  41. */
  42.  
  43.  
  44.  
  45. int MessCount = 0, LastMsg = 0, MessOpen = 0;
  46. FILE *MessFile;
  47.  
  48. void MessRecStart () {
  49.   MessFile = fopen ("MESSAGES.TXT", "wt");
  50.   MessOpen = 1;
  51. }
  52.  
  53. void MessRecEnd () {
  54.   fclose (MessFile); MessOpen = 0;
  55. }
  56.  
  57. void MessRec (ULONG msg) {
  58.   if (MessOpen) {
  59.     MessCount++;
  60.     char stmsg[150];
  61.     switch (msg) {
  62.       case 0x0000 : strcpy (stmsg, "WM_NULL"); break;
  63.       case 0x0001 : strcpy (stmsg, "WM_CREATE"); break;
  64.       case 0x0002 : strcpy (stmsg, "WM_DESTROY"); break;
  65.       case 0x0004 : strcpy (stmsg, "WM_ENABLE"); break;
  66.       case 0x0005 : strcpy (stmsg, "WM_SHOW"); break;
  67.       case 0x0006 : strcpy (stmsg, "WM_MOVE"); break;
  68.       case 0x0007 : strcpy (stmsg, "WM_SIZE"); break;
  69.       case 0x0008 : strcpy (stmsg, "WM_ADJUSTWINDOWPOS"); break;
  70.       case 0x0009 : strcpy (stmsg, "WM_CALCVALIDRECTS"); break;
  71.       case 0x000a : strcpy (stmsg, "WM_SETWINDOWPARAMS"); break;
  72.       case 0x000b : strcpy (stmsg, "WM_QUERYWINDOWPARAMS"); break;
  73.       case 0x000c : strcpy (stmsg, "WM_HITTEST"); break;
  74.       case 0x000d : strcpy (stmsg, "WM_ACTIVATE"); break;
  75.       case 0x000f : strcpy (stmsg, "WM_SETFOCUS"); break;
  76.       case 0x0010 : strcpy (stmsg, "WM_SETSELECTION"); break;
  77.       case 0x0011 : strcpy (stmsg, "WM_PPAINT"); break;
  78.       case 0x0012 : strcpy (stmsg, "WM_PSETFOCUS"); break;
  79.       case 0x0013 : strcpy (stmsg, "WM_PSYSCOLORCHANGE"); break;
  80.       case 0x0014 : strcpy (stmsg, "WM_PSIZE"); break;
  81.       case 0x0015 : strcpy (stmsg, "WM_PACTIVATE"); break;
  82.       case 0x0016 : strcpy (stmsg, "WM_PCONTROL"); break;
  83.       case 0x0020 : strcpy (stmsg, "WM_COMMAND"); break;
  84.       case 0x0021 : strcpy (stmsg, "WM_SYSCOMMAND"); break;
  85.       case 0x0022 : strcpy (stmsg, "WM_HELP"); break;
  86.       case 0x0023 : strcpy (stmsg, "WM_PAINT"); break;
  87.       case 0x0024 : strcpy (stmsg, "WM_TIMER"); break;
  88.       case 0x0025 : strcpy (stmsg, "WM_SEM1"); break;
  89.       case 0x0026 : strcpy (stmsg, "WM_SEM2"); break;
  90.       case 0x0027 : strcpy (stmsg, "WM_SEM3"); break;
  91.       case 0x0028 : strcpy (stmsg, "WM_SEM4"); break;
  92.       case 0x0029 : strcpy (stmsg, "WM_CLOSE"); break;
  93.       case 0x002a : strcpy (stmsg, "WM_QUIT"); break;
  94.       case 0x002b : strcpy (stmsg, "WM_SYSCOLORCHANGE"); break;
  95.       case 0x002d : strcpy (stmsg, "WM_SYSVALUECHANGED"); break;
  96.       case 0x002e : strcpy (stmsg, "WM_APPTERMINATENOTIFY"); break;
  97.       case 0x002f : strcpy (stmsg, "WM_PRESPARAMCHANGED"); break;
  98.       case 0x0030 : strcpy (stmsg, "WM_CONTROL"); break;
  99.       case 0x0031 : strcpy (stmsg, "WM_VSCROLL"); break;      
  100.       case 0x0032 : strcpy (stmsg, "WM_HSCROLL"); break;
  101.       case 0x0033 : strcpy (stmsg, "WM_INITMENU"); break;
  102.       case 0x0034 : strcpy (stmsg, "WM_MENUSELECT"); break;
  103.       case 0x0035 : strcpy (stmsg, "WM_MENUEND"); break;
  104.       case 0x0036 : strcpy (stmsg, "WM_DRAWITEM"); break;
  105.       case 0x0037 : strcpy (stmsg, "WM_MEASUREITEM"); break;
  106.       case 0x0038 : strcpy (stmsg, "WM_CONTROLPOINTER"); break;
  107.       case 0x003a : strcpy (stmsg, "WM_QUERYDLGCODE"); break;
  108.       case 0x003b : strcpy (stmsg, "WM_INITDLG"); break;
  109.       case 0x003c : strcpy (stmsg, "WM_SUBSTITUTESTRING"); break;
  110.       case 0x003d : strcpy (stmsg, "WM_MATCHMNEMONIC"); break;
  111.       case 0x003e : strcpy (stmsg, "WM_SAVEAPPLICATION"); break;
  112.       case 0x0070 : strcpy (stmsg, "WM_MOUSEFIRST or WM_MOUSEMOVE"); break;
  113.       case 0x0071 : strcpy (stmsg, "WM_BUTTONCLICKFIRST or WM_BUTTON1DOWN"); break;
  114.       case 0x0072 : strcpy (stmsg, "WM_BUTTON1UP"); break;
  115.       case 0x0073 : strcpy (stmsg, "WM_BUTTON1DBLCLK"); break;
  116.       case 0x0074 : strcpy (stmsg, "WM_BUTTON2DOWN"); break;
  117.       case 0x0075 : strcpy (stmsg, "WM_BUTTON2UP"); break;
  118.       case 0x0076 : strcpy (stmsg, "WM_BUTTON2DBLCLK"); break;
  119.       case 0x0077 : strcpy (stmsg, "WM_BUTTON3DOWN"); break;
  120.       case 0x0078 : strcpy (stmsg, "WM_BUTTON3UP"); break;
  121.       case 0x0079 : strcpy (stmsg, "WM_BUTTONCLICKLAST or WM_BUTTON3DBLCLK or WM_MOUSELAST"); break;
  122.       case 0x007D : strcpy (stmsg, "WM_MOUSEMAP"); break;
  123.       case 0x0410 : strcpy (stmsg, "WM_EXTMOUSEFIRST or WM_CHORD"); break;
  124.       case 0x0411 : strcpy (stmsg, "WM_BUTTON1MOTIONSTART"); break;
  125.       case 0x0412 : strcpy (stmsg, "WM_BUTTON1MOTIONEND"); break;
  126.       case 0x0413 : strcpy (stmsg, "WM_BUTTON1CLICK"); break;
  127.       case 0x0414 : strcpy (stmsg, "WM_BUTTON2MOTIONSTART"); break;
  128.       case 0x0415 : strcpy (stmsg, "WM_BUTTON2MOTIONEND"); break;
  129.       case 0x0416 : strcpy (stmsg, "WM_BUTTON2CLICK"); break;
  130.       case 0x0417 : strcpy (stmsg, "WM_BUTTON3MOTIONSTART or WM_BUTTON3MOTIONSTART"); break;
  131.       case 0x0418 : strcpy (stmsg, "WM_BUTTON3MOTIONEND"); break;
  132.       case 0x0419 : strcpy (stmsg, "WM_BUTTON3CLICK or WM_EXTMOUSELAST"); break;
  133.       case 0x0420 : strcpy (stmsg, "WM_MOUSETRANSLATEFIRST or WM_BEGINDRAG"); break;
  134.       case 0x0421 : strcpy (stmsg, "WM_ENDDRAG"); break;
  135.       case 0x0422 : strcpy (stmsg, "WM_SINGLESELECT"); break;
  136.       case 0x0423 : strcpy (stmsg, "WM_OPEN"); break;
  137.       case 0x0424 : strcpy (stmsg, "WM_CONTEXTMENU"); break;
  138.       case 0x0425 : strcpy (stmsg, "WM_CONTEXTHELP"); break;
  139.       case 0x0426 : strcpy (stmsg, "WM_TEXTEDIT"); break;
  140.       case 0x0427 : strcpy (stmsg, "WM_BEGINSELECT"); break;
  141.       case 0x0428 : strcpy (stmsg, "WM_ENDSELECT or WM_MOUSETRANSLATELAST"); break;
  142.       case 0x04C0 : strcpy (stmsg, "WM_PENFIRST"); break;
  143.       case 0x04FF : strcpy (stmsg, "WM_PENLAST"); break;
  144.       case 0x0500 : strcpy (stmsg, "WM_MMPMFIRST"); break;
  145.       case 0x05FF : strcpy (stmsg, "WM_MMPMLAST"); break;
  146.       case 0x007a : strcpy (stmsg, "WM_CHAR"); break;
  147.       case 0x007b : strcpy (stmsg, "WM_VIOCHAR"); break;
  148.       case 0x0040 : strcpy (stmsg, "WM_FLASHWINDOW"); break;
  149.       case 0x0041 : strcpy (stmsg, "WM_FORMATFRAME"); break;
  150.       case 0x0042 : strcpy (stmsg, "WM_UPDATEFRAME"); break;
  151.       case 0x0043 : strcpy (stmsg, "WM_FOCUSCHANGE"); break;
  152.       case 0x0044 : strcpy (stmsg, "WM_SETBORDERSIZE"); break;
  153.       case 0x0045 : strcpy (stmsg, "WM_TRACKFRAME"); break;
  154.       case 0x0046 : strcpy (stmsg, "WM_MINMAXFRAME"); break;
  155.       case 0x0047 : strcpy (stmsg, "WM_SETICON"); break;
  156.       case 0x0048 : strcpy (stmsg, "WM_QUERYICON"); break;
  157.       case 0x0049 : strcpy (stmsg, "WM_SETACCELTABLE"); break;
  158.       case 0x004a : strcpy (stmsg, "WM_QUERYACCELTABLE"); break;
  159.       case 0x004b : strcpy (stmsg, "WM_TRANSLATEACCEL"); break;
  160.       case 0x004c : strcpy (stmsg, "WM_QUERYTRACKINFO"); break;
  161.       case 0x004d : strcpy (stmsg, "WM_QUERYBORDERSIZE"); break;
  162.       case 0x004e : strcpy (stmsg, "WM_NEXTMENU"); break;
  163.       case 0x004f : strcpy (stmsg, "WM_ERASEBACKGROUND"); break;
  164.       case 0x0050 : strcpy (stmsg, "WM_QUERYFRAMEINFO"); break;
  165.       case 0x0051 : strcpy (stmsg, "WM_QUERYFOCUSCHAIN"); break;
  166.       case 0x0052 : strcpy (stmsg, "WM_OWNERPOSCHANGE"); break;
  167.       case 0x0053 : strcpy (stmsg, "WM_CALCFRAMERECT"); break;
  168.       case 0x0055 : strcpy (stmsg, "WM_WINDOWPOSCHANGED"); break;
  169.       case 0x0056 : strcpy (stmsg, "WM_ADJUSTFRAMEPOS"); break;
  170.       case 0x0059 : strcpy (stmsg, "WM_QUERYFRAMECTLCOUNT"); break;
  171.       case 0x005B : strcpy (stmsg, "WM_QUERYHELPINFO"); break;
  172.       case 0x005C : strcpy (stmsg, "WM_SETHELPINFO"); break;
  173.       case 0x005D : strcpy (stmsg, "WM_ERROR"); break;
  174.       case 0x005E : strcpy (stmsg, "WM_REALIZEPALETTE"); break;
  175.       case 0x0060 : strcpy (stmsg, "WM_RENDERFMT"); break;
  176.       case 0x0061 : strcpy (stmsg, "WM_RENDERALLFMTS"); break;
  177.       case 0x0062 : strcpy (stmsg, "WM_DESTROYCLIPBOARD"); break;
  178.       case 0x0063 : strcpy (stmsg, "WM_PAINTCLIPBOARD"); break;
  179.       case 0x0064 : strcpy (stmsg, "WM_SIZECLIPBOARD"); break;
  180.       case 0x0065 : strcpy (stmsg, "WM_HSCROLLCLIPBOARD"); break;
  181.       case 0x0066 : strcpy (stmsg, "WM_VSCROLLCLIPBOARD"); break;
  182.       case 0x0067 : strcpy (stmsg, "WM_DRAWCLIPBOARD"); break;
  183.       case 0x00A0 : strcpy (stmsg, "WM_DDE_FIRST or WM_DDE_INITIATE"); break;
  184.       case 0x00A1 : strcpy (stmsg, "WM_DDE_REQUEST"); break;
  185.       case 0x00A2 : strcpy (stmsg, "WM_DDE_ACK"); break;
  186.       case 0x00A3 : strcpy (stmsg, "WM_DDE_DATA"); break;
  187.       case 0x00A4 : strcpy (stmsg, "WM_DDE_ADVISE"); break;
  188.       case 0x00A5 : strcpy (stmsg, "WM_DDE_UNADVISE"); break;
  189.       case 0x00A6 : strcpy (stmsg, "WM_DDE_POKE"); break;
  190.       case 0x00A7 : strcpy (stmsg, "WM_DDE_EXECUTE"); break;
  191.       case 0x00A8 : strcpy (stmsg, "WM_DDE_TERMINATE"); break;
  192.       case 0x00A9 : strcpy (stmsg, "WM_DDE_INITIATEACK"); break;
  193.       case 0x00AF : strcpy (stmsg, "WM_DDE_LAST"); break;
  194.       case 0x00b0 : strcpy (stmsg, "WM_QUERYCONVERTPOS or WM_DBCSFIRST"); break;
  195.       case 0x00b6 : strcpy (stmsg, "WM_DBE_SETAPPLSTAT"); break;
  196.       case 0x00bc : strcpy (stmsg, "WM_DBE_KKCPARAMS"); break;
  197.       case 0x00cf : strcpy (stmsg, "WM_DBCSLAST"); break;
  198.       case 0x0310 : strcpy (stmsg, "WM_DRAGFIRST"); break;
  199.       case 0x032f : strcpy (stmsg, "WM_DRAGLAST"); break;
  200.       default : sprintf (stmsg, "0x%04x", msg); break;
  201.  
  202.     }
  203.     if (LastMsg == msg) fprintf (MessFile, ".");
  204.     else fprintf (MessFile, "\n%5d  %s", MessCount, stmsg);
  205.     LastMsg = msg;
  206.   }
  207. }
  208.  
  209.  
  210.  
  211.