home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / WinCE / SDKWindowsCE / HandHeldPCPro30 / sdk.exe / Jupiter SDK / data1.cab / MFC / src / afxtrace.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1999-02-19  |  11.6 KB  |  379 lines

  1. // This is a part of the Microsoft Foundation Classes C++ library.
  2. // Copyright (C) 1992-1998 Microsoft Corporation
  3. // All rights reserved.
  4. //
  5. // This source code is only intended as a supplement to the
  6. // Microsoft Foundation Classes Reference and related
  7. // electronic documentation provided with the library.
  8. // See these sources for detailed information regarding the
  9. // Microsoft Foundation Classes product.
  10.  
  11. #include "stdafx.h"
  12.  
  13. #ifdef _DEBUG       // entire file for debugging
  14.  
  15. #ifdef AFX_DBG1_SEG
  16. #pragma code_seg(AFX_DBG1_SEG)
  17. #endif
  18.  
  19. #ifndef _DDEHEADER_INCLUDED_
  20. #include "dde.h"
  21. #endif
  22.  
  23. #ifdef _DEBUG
  24. #undef THIS_FILE
  25. static char THIS_FILE[] = __FILE__;
  26. #endif
  27.  
  28. /////////////////////////////////////////////////////////////////////////////
  29. // Build data tables by including data file three times
  30.  
  31. struct AFX_MAP_MESSAGE
  32. {
  33.     UINT    nMsg;
  34.     LPCSTR  lpszMsg;
  35. };
  36.  
  37. #define DEFINE_MESSAGE(wm)  { wm, #wm }
  38.  
  39. static const AFX_MAP_MESSAGE allMessages[] =
  40. {
  41.     DEFINE_MESSAGE(WM_CREATE),
  42.     DEFINE_MESSAGE(WM_DESTROY),
  43.     DEFINE_MESSAGE(WM_MOVE),
  44.     DEFINE_MESSAGE(WM_SIZE),
  45.     DEFINE_MESSAGE(WM_ACTIVATE),
  46.     DEFINE_MESSAGE(WM_SETFOCUS),
  47.     DEFINE_MESSAGE(WM_KILLFOCUS),
  48.     DEFINE_MESSAGE(WM_ENABLE),
  49.     DEFINE_MESSAGE(WM_SETREDRAW),
  50.     DEFINE_MESSAGE(WM_SETTEXT),
  51.     DEFINE_MESSAGE(WM_GETTEXT),
  52.     DEFINE_MESSAGE(WM_GETTEXTLENGTH),
  53.     DEFINE_MESSAGE(WM_PAINT),
  54.     DEFINE_MESSAGE(WM_CLOSE),
  55. WCE_DEL DEFINE_MESSAGE(WM_QUERYENDSESSION),
  56.     DEFINE_MESSAGE(WM_QUIT),
  57. WCE_DEL    DEFINE_MESSAGE(WM_QUERYOPEN),
  58.     DEFINE_MESSAGE(WM_ERASEBKGND),
  59.     DEFINE_MESSAGE(WM_SYSCOLORCHANGE),
  60. WCE_DEL    DEFINE_MESSAGE(WM_ENDSESSION),
  61.     DEFINE_MESSAGE(WM_SHOWWINDOW),
  62.     DEFINE_MESSAGE(WM_CTLCOLORMSGBOX),
  63.     DEFINE_MESSAGE(WM_CTLCOLOREDIT),
  64.     DEFINE_MESSAGE(WM_CTLCOLORLISTBOX),
  65.     DEFINE_MESSAGE(WM_CTLCOLORBTN),
  66.     DEFINE_MESSAGE(WM_CTLCOLORDLG),
  67.     DEFINE_MESSAGE(WM_CTLCOLORSCROLLBAR),
  68.     DEFINE_MESSAGE(WM_CTLCOLORSTATIC),
  69.     DEFINE_MESSAGE(WM_WININICHANGE),
  70. WCE_DEL    DEFINE_MESSAGE(WM_DEVMODECHANGE),
  71. WCE_DEL    DEFINE_MESSAGE(WM_ACTIVATEAPP),
  72.     DEFINE_MESSAGE(WM_FONTCHANGE),
  73. WCE_DEL    DEFINE_MESSAGE(WM_TIMECHANGE),
  74.     DEFINE_MESSAGE(WM_CANCELMODE),
  75. #if !defined(_WIN32_WCE_NO_CURSOR)
  76.     DEFINE_MESSAGE(WM_SETCURSOR),
  77. #endif // _WIN32_WCE_NO_CURSOR
  78. WCE_DEL    DEFINE_MESSAGE(WM_MOUSEACTIVATE),
  79. WCE_DEL    DEFINE_MESSAGE(WM_CHILDACTIVATE),
  80. WCE_DEL    DEFINE_MESSAGE(WM_QUEUESYNC),
  81. WCE_DEL    DEFINE_MESSAGE(WM_GETMINMAXINFO),
  82. WCE_DEL    DEFINE_MESSAGE(WM_ICONERASEBKGND),
  83.     DEFINE_MESSAGE(WM_NEXTDLGCTL),
  84. WCE_DEL    DEFINE_MESSAGE(WM_SPOOLERSTATUS),
  85.     DEFINE_MESSAGE(WM_DRAWITEM),
  86.     DEFINE_MESSAGE(WM_MEASUREITEM),
  87.     DEFINE_MESSAGE(WM_DELETEITEM),
  88.     DEFINE_MESSAGE(WM_VKEYTOITEM),
  89.     DEFINE_MESSAGE(WM_CHARTOITEM),
  90.     DEFINE_MESSAGE(WM_SETFONT),
  91.     DEFINE_MESSAGE(WM_GETFONT),
  92.     DEFINE_MESSAGE(WM_QUERYDRAGICON),
  93.     DEFINE_MESSAGE(WM_COMPAREITEM),
  94. WCE_DEL    DEFINE_MESSAGE(WM_COMPACTING),
  95. WCE_DEL    DEFINE_MESSAGE(WM_NCCREATE),
  96.     DEFINE_MESSAGE(WM_NCDESTROY),
  97. WCE_DEL    DEFINE_MESSAGE(WM_NCCALCSIZE),
  98. WCE_DEL    DEFINE_MESSAGE(WM_NCHITTEST),
  99. WCE_DEL    DEFINE_MESSAGE(WM_NCPAINT),
  100. WCE_DEL    DEFINE_MESSAGE(WM_NCACTIVATE),
  101.     DEFINE_MESSAGE(WM_GETDLGCODE),
  102. WCE_DEL    DEFINE_MESSAGE(WM_NCMOUSEMOVE),
  103. WCE_DEL    DEFINE_MESSAGE(WM_NCLBUTTONDOWN),
  104. WCE_DEL    DEFINE_MESSAGE(WM_NCLBUTTONUP),
  105. WCE_DEL    DEFINE_MESSAGE(WM_NCLBUTTONDBLCLK),
  106. WCE_DEL    DEFINE_MESSAGE(WM_NCRBUTTONDOWN),
  107. WCE_DEL    DEFINE_MESSAGE(WM_NCRBUTTONUP),
  108. WCE_DEL    DEFINE_MESSAGE(WM_NCRBUTTONDBLCLK),
  109. WCE_DEL    DEFINE_MESSAGE(WM_NCMBUTTONDOWN),
  110. WCE_DEL    DEFINE_MESSAGE(WM_NCMBUTTONUP),
  111. WCE_DEL    DEFINE_MESSAGE(WM_NCMBUTTONDBLCLK),
  112.     DEFINE_MESSAGE(WM_KEYDOWN),
  113.     DEFINE_MESSAGE(WM_KEYUP),
  114.     DEFINE_MESSAGE(WM_CHAR),
  115.     DEFINE_MESSAGE(WM_DEADCHAR),
  116.     DEFINE_MESSAGE(WM_SYSKEYDOWN),
  117.     DEFINE_MESSAGE(WM_SYSKEYUP),
  118.     DEFINE_MESSAGE(WM_SYSCHAR),
  119.     DEFINE_MESSAGE(WM_SYSDEADCHAR),
  120.     DEFINE_MESSAGE(WM_KEYLAST),
  121.     DEFINE_MESSAGE(WM_INITDIALOG),
  122.     DEFINE_MESSAGE(WM_COMMAND),
  123.     DEFINE_MESSAGE(WM_SYSCOMMAND),
  124.     DEFINE_MESSAGE(WM_TIMER),
  125.     DEFINE_MESSAGE(WM_HSCROLL),
  126.     DEFINE_MESSAGE(WM_VSCROLL),
  127. WCE_DEL    DEFINE_MESSAGE(WM_INITMENU),
  128.     DEFINE_MESSAGE(WM_INITMENUPOPUP),
  129. WCE_DEL    DEFINE_MESSAGE(WM_MENUSELECT),
  130.     DEFINE_MESSAGE(WM_MENUCHAR),
  131. WCE_DEL    DEFINE_MESSAGE(WM_ENTERIDLE),
  132.     DEFINE_MESSAGE(WM_MOUSEMOVE),
  133.     DEFINE_MESSAGE(WM_LBUTTONDOWN),
  134.     DEFINE_MESSAGE(WM_LBUTTONUP),
  135.     DEFINE_MESSAGE(WM_LBUTTONDBLCLK),
  136.     DEFINE_MESSAGE(WM_RBUTTONDOWN),
  137.     DEFINE_MESSAGE(WM_RBUTTONUP),
  138.     DEFINE_MESSAGE(WM_RBUTTONDBLCLK),
  139.     DEFINE_MESSAGE(WM_MBUTTONDOWN),
  140.     DEFINE_MESSAGE(WM_MBUTTONUP),
  141.     DEFINE_MESSAGE(WM_MBUTTONDBLCLK),
  142. WCE_DEL    DEFINE_MESSAGE(WM_PARENTNOTIFY),
  143. WCE_DEL    DEFINE_MESSAGE(WM_MDICREATE),
  144. WCE_DEL    DEFINE_MESSAGE(WM_MDIDESTROY),
  145. WCE_DEL    DEFINE_MESSAGE(WM_MDIACTIVATE),
  146. WCE_DEL    DEFINE_MESSAGE(WM_MDIRESTORE),
  147. WCE_DEL    DEFINE_MESSAGE(WM_MDINEXT),
  148. WCE_DEL    DEFINE_MESSAGE(WM_MDIMAXIMIZE),
  149. WCE_DEL    DEFINE_MESSAGE(WM_MDITILE),
  150. WCE_DEL    DEFINE_MESSAGE(WM_MDICASCADE),
  151. WCE_DEL    DEFINE_MESSAGE(WM_MDIICONARRANGE),
  152. WCE_DEL    DEFINE_MESSAGE(WM_MDIGETACTIVE),
  153. WCE_DEL    DEFINE_MESSAGE(WM_MDISETMENU),
  154.     DEFINE_MESSAGE(WM_CUT),
  155.     DEFINE_MESSAGE(WM_COPYDATA),
  156.     DEFINE_MESSAGE(WM_COPY),
  157.     DEFINE_MESSAGE(WM_PASTE),
  158.     DEFINE_MESSAGE(WM_CLEAR),
  159.     DEFINE_MESSAGE(WM_UNDO),
  160.     DEFINE_MESSAGE(WM_RENDERFORMAT),
  161.     DEFINE_MESSAGE(WM_RENDERALLFORMATS),
  162.     DEFINE_MESSAGE(WM_DESTROYCLIPBOARD),
  163. WCE_DEL    DEFINE_MESSAGE(WM_DRAWCLIPBOARD),
  164. WCE_DEL    DEFINE_MESSAGE(WM_PAINTCLIPBOARD),
  165. WCE_DEL    DEFINE_MESSAGE(WM_VSCROLLCLIPBOARD),
  166. WCE_DEL    DEFINE_MESSAGE(WM_SIZECLIPBOARD),
  167. WCE_DEL    DEFINE_MESSAGE(WM_ASKCBFORMATNAME),
  168. WCE_DEL    DEFINE_MESSAGE(WM_CHANGECBCHAIN),
  169. WCE_DEL    DEFINE_MESSAGE(WM_HSCROLLCLIPBOARD),
  170.     DEFINE_MESSAGE(WM_QUERYNEWPALETTE),
  171. WCE_DEL    DEFINE_MESSAGE(WM_PALETTEISCHANGING),
  172.     DEFINE_MESSAGE(WM_PALETTECHANGED),
  173. WCE_DEL    DEFINE_MESSAGE(WM_DDE_INITIATE),
  174. WCE_DEL    DEFINE_MESSAGE(WM_DDE_TERMINATE),
  175. WCE_DEL    DEFINE_MESSAGE(WM_DDE_ADVISE),
  176. WCE_DEL    DEFINE_MESSAGE(WM_DDE_UNADVISE),
  177. WCE_DEL    DEFINE_MESSAGE(WM_DDE_ACK),
  178. WCE_DEL    DEFINE_MESSAGE(WM_DDE_DATA),
  179. WCE_DEL    DEFINE_MESSAGE(WM_DDE_REQUEST),
  180. WCE_DEL    DEFINE_MESSAGE(WM_DDE_POKE),
  181. WCE_DEL    DEFINE_MESSAGE(WM_DDE_EXECUTE),
  182. WCE_DEL    DEFINE_MESSAGE(WM_DROPFILES),
  183. WCE_DEL    DEFINE_MESSAGE(WM_POWER),
  184. WCE_DEL    DEFINE_MESSAGE(WM_WINDOWPOSCHANGED),
  185. WCE_DEL    DEFINE_MESSAGE(WM_WINDOWPOSCHANGING),
  186. WCE_INS DEFINE_MESSAGE(WM_HIBERNATE),
  187.  
  188. // MFC specific messages
  189.     DEFINE_MESSAGE(WM_SIZEPARENT),
  190.     DEFINE_MESSAGE(WM_SETMESSAGESTRING),
  191.     DEFINE_MESSAGE(WM_IDLEUPDATECMDUI),
  192.     DEFINE_MESSAGE(WM_INITIALUPDATE),
  193.     DEFINE_MESSAGE(WM_COMMANDHELP),
  194.     DEFINE_MESSAGE(WM_HELPHITTEST),
  195.     DEFINE_MESSAGE(WM_EXITHELPMODE),
  196.     DEFINE_MESSAGE(WM_HELP),
  197.     DEFINE_MESSAGE(WM_NOTIFY),
  198. WCE_DEL    DEFINE_MESSAGE(WM_CONTEXTMENU),
  199. WCE_DEL    DEFINE_MESSAGE(WM_TCARD),
  200. WCE_DEL    DEFINE_MESSAGE(WM_MDIREFRESHMENU),
  201. WCE_DEL    DEFINE_MESSAGE(WM_MOVING),
  202.     DEFINE_MESSAGE(WM_STYLECHANGED),
  203. WCE_DEL    DEFINE_MESSAGE(WM_STYLECHANGING),
  204. WCE_DEL    DEFINE_MESSAGE(WM_SIZING),
  205. WCE_DEL    DEFINE_MESSAGE(WM_SETHOTKEY),
  206.     DEFINE_MESSAGE(WM_PRINT),
  207. WCE_DEL    DEFINE_MESSAGE(WM_POWERBROADCAST),
  208. WCE_DEL    DEFINE_MESSAGE(WM_HOTKEY),
  209.     DEFINE_MESSAGE(WM_GETICON),
  210.     DEFINE_MESSAGE(WM_EXITMENULOOP),
  211.     DEFINE_MESSAGE(WM_ENTERMENULOOP),
  212. WCE_DEL    DEFINE_MESSAGE(WM_DISPLAYCHANGE),
  213. WCE_DEL DEFINE_MESSAGE(WM_STYLECHANGED),
  214. WCE_DEL    DEFINE_MESSAGE(WM_STYLECHANGING),
  215.     DEFINE_MESSAGE(WM_GETICON),
  216.     DEFINE_MESSAGE(WM_SETICON),
  217. WCE_DEL    DEFINE_MESSAGE(WM_SIZING),
  218. WCE_DEL    DEFINE_MESSAGE(WM_MOVING),
  219.     DEFINE_MESSAGE(WM_CAPTURECHANGED),
  220. WCE_DEL    DEFINE_MESSAGE(WM_DEVICECHANGE),
  221.     DEFINE_MESSAGE(WM_PRINT),
  222. WCE_DEL    DEFINE_MESSAGE(WM_PRINTCLIENT),
  223.     { 0, NULL, }    // end of message list
  224. };
  225.  
  226. #undef DEFINE_MESSAGE
  227.  
  228. #if !defined(_WIN32_WCE)
  229. /////////////////////////////////////////////////////////////////////////////
  230. // DDE special case
  231.  
  232. static void AFXAPI TraceDDE(LPCTSTR lpszPrefix, const MSG* pMsg)
  233. {
  234.     if (pMsg->message == WM_DDE_EXECUTE)
  235.     {
  236.         UINT nDummy;
  237.         HGLOBAL hCommands;
  238.         if (!UnpackDDElParam(WM_DDE_EXECUTE, pMsg->lParam,
  239.             &nDummy, (PUINT)&hCommands))
  240.         {
  241.             TRACE1("Warning: Unable to unpack WM_DDE_EXECUTE lParam %08lX.\n",
  242.                 pMsg->lParam);
  243.             return;
  244.         }
  245.         ASSERT(hCommands != NULL);
  246.  
  247.         LPCTSTR lpszCommands = (LPCTSTR)::GlobalLock(hCommands);
  248.         ASSERT(lpszCommands != NULL);
  249.         TRACE2("%s: Execute '%s'.\n", lpszPrefix, lpszCommands);
  250.         ::GlobalUnlock(hCommands);
  251.     }
  252.     else if (pMsg->message == WM_DDE_ADVISE)
  253.     {
  254.         ATOM aItem;
  255.         HGLOBAL hAdvise;
  256.         if (!UnpackDDElParam(WM_DDE_ADVISE, pMsg->lParam,
  257.             (PUINT)&hAdvise, (PUINT)&aItem))
  258.         {
  259.             TRACE1("Warning: Unable to unpack WM_DDE_ADVISE lParam %08lX.\n",
  260.                 pMsg->lParam);
  261.             return;
  262.         }
  263.         ASSERT(aItem != NULL);
  264.         ASSERT(hAdvise != NULL);
  265.  
  266.         DDEADVISE* lpAdvise = (DDEADVISE*)::GlobalLock(hAdvise);
  267.         ASSERT(lpAdvise != NULL);
  268.         TCHAR szItem[80];
  269.         szItem[0] = '\0';
  270.  
  271.         if (aItem != 0)
  272.             ::GlobalGetAtomName(aItem, szItem, _countof(szItem));
  273.  
  274.         TCHAR szFormat[80];
  275.         szFormat[0] = '\0';
  276.         if (((UINT)0xC000 <= (UINT)lpAdvise->cfFormat) &&
  277.                 ((UINT)lpAdvise->cfFormat <= (UINT)0xFFFF))
  278.         {
  279.             ::GetClipboardFormatName(lpAdvise->cfFormat,
  280.                 szFormat, _countof(szFormat));
  281.  
  282.             // User defined clipboard formats have a range of 0xC000->0xFFFF
  283.             // System clipboard formats have other ranges, but no printable
  284.             // format names.
  285.         }
  286.  
  287.         AfxTrace(
  288.             _T("%s: Advise item='%s', Format='%s', Ack=%d, Defer Update= %d\n"),
  289.              lpszPrefix, szItem, szFormat, lpAdvise->fAckReq,
  290.             lpAdvise->fDeferUpd);
  291.         ::GlobalUnlock(hAdvise);
  292.     }
  293. }
  294. #endif // _WIN32_WCE
  295.  
  296. /////////////////////////////////////////////////////////////////////////////
  297.  
  298. void AFXAPI _AfxTraceMsg(LPCTSTR lpszPrefix, const MSG* pMsg)
  299. {
  300.     ASSERT(lpszPrefix != NULL);
  301.     ASSERT(pMsg != NULL);
  302.  
  303. #if defined(_WIN32_WCE)
  304.     if (pMsg->message == WM_MOUSEMOVE || 
  305.     #if !defined(_WIN32_WCE_NO_CURSOR)
  306.         pMsg->message == WM_SETCURSOR || 
  307.     #endif // _WIN32_WCE_NO_CURSOR
  308. #else // _WIN32_WCE
  309.     if (pMsg->message == WM_MOUSEMOVE || pMsg->message == WM_NCMOUSEMOVE ||
  310.         pMsg->message == WM_NCHITTEST || pMsg->message == WM_SETCURSOR ||
  311. #endif // _WIN32_WCE
  312.         pMsg->message == WM_CTLCOLORBTN ||
  313.         pMsg->message == WM_CTLCOLORDLG ||
  314.         pMsg->message == WM_CTLCOLOREDIT ||
  315.         pMsg->message == WM_CTLCOLORLISTBOX ||
  316.         pMsg->message == WM_CTLCOLORMSGBOX ||
  317.         pMsg->message == WM_CTLCOLORSCROLLBAR ||
  318.         pMsg->message == WM_CTLCOLORSTATIC ||
  319.         WCE_IF(0, pMsg->message == WM_ENTERIDLE) || pMsg->message == WM_CANCELMODE ||
  320.         pMsg->message == 0x0118)    // WM_SYSTIMER (caret blink)
  321.     {
  322.         // don't report very frequently sent messages
  323.         return;
  324.     }
  325.  
  326.     LPCSTR lpszMsgName = NULL;
  327.     char szBuf[80];
  328.  
  329.     // find message name
  330.     if (pMsg->message >= 0xC000)
  331.     {
  332.         // Window message registered with 'RegisterWindowMessage'
  333.         //  (actually a USER atom)
  334.         if (::WCE_FCTN(GetClipboardFormatNameA)(pMsg->message, szBuf, _countof(szBuf)))
  335.             lpszMsgName = szBuf;
  336.     }
  337.     else if (pMsg->message >= WM_USER)
  338.     {
  339.         // User message
  340.         WCE_FCTN(wsprintfA)(szBuf, "WM_USER+0x%04X", pMsg->message - WM_USER);
  341.         lpszMsgName = szBuf;
  342.     }
  343.     else
  344.     {
  345.         // a system windows message
  346.         const AFX_MAP_MESSAGE* pMapMsg = allMessages;
  347.         for (/*null*/; pMapMsg->lpszMsg != NULL; pMapMsg++)
  348.         {
  349.             if (pMapMsg->nMsg == pMsg->message)
  350.             {
  351.                 lpszMsgName = pMapMsg->lpszMsg;
  352.                 break;
  353.             }
  354.         }
  355.     }
  356.  
  357.     if (lpszMsgName != NULL)
  358.     {
  359.         AfxTrace(_T("%s: hwnd=0x%04X, msg = %hs (0x%04X, 0x%08lX)\n"),
  360.             lpszPrefix, (UINT)pMsg->hwnd, lpszMsgName,
  361.             pMsg->wParam, pMsg->lParam);
  362.     }
  363.     else
  364.     {
  365.         AfxTrace(_T("%s: hwnd=0x%04X, msg = 0x%04X (0x%04X, 0x%08lX)\n"),
  366.             lpszPrefix, (UINT)pMsg->hwnd, pMsg->message,
  367.             pMsg->wParam, pMsg->lParam);
  368.     }
  369.  
  370. #if !defined(_WIN32_WCE)
  371.     if (pMsg->message >= WM_DDE_FIRST && pMsg->message <= WM_DDE_LAST)
  372.         TraceDDE(lpszPrefix, pMsg);
  373. #endif // _WIN32_WCE
  374. }
  375.  
  376. /////////////////////////////////////////////////////////////////////////////
  377.  
  378. #endif // _DEBUG (entire file)
  379.