| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364 | 
							- // This is a part of the Microsoft Foundation Classes C++ library.
 
- // Copyright (C) 1992-1998 Microsoft Corporation
 
- // All rights reserved.
 
- //
 
- // This source code is only intended as a supplement to the
 
- // Microsoft Foundation Classes Reference and related
 
- // electronic documentation provided with the library.
 
- // See these sources for detailed information regarding the
 
- // Microsoft Foundation Classes product.
 
- #include "stdafx.h"
 
- #ifdef _DEBUG       // entire file for debugging
 
- #ifdef AFX_DBG1_SEG
 
- #pragma code_seg(AFX_DBG1_SEG)
 
- #endif
 
- #include "dde.h"
 
- #ifdef _DEBUG
 
- #undef THIS_FILE
 
- static char THIS_FILE[] = __FILE__;
 
- #endif
 
- /////////////////////////////////////////////////////////////////////////////
 
- // Build data tables by including data file three times
 
- struct AFX_MAP_MESSAGE
 
- {
 
- 	UINT    nMsg;
 
- 	LPCSTR  lpszMsg;
 
- };
 
- #define DEFINE_MESSAGE(wm)  { wm, #wm }
 
- static const AFX_MAP_MESSAGE allMessages[] =
 
- {
 
- 	DEFINE_MESSAGE(WM_CREATE),
 
- 	DEFINE_MESSAGE(WM_DESTROY),
 
- 	DEFINE_MESSAGE(WM_MOVE),
 
- 	DEFINE_MESSAGE(WM_SIZE),
 
- 	DEFINE_MESSAGE(WM_ACTIVATE),
 
- 	DEFINE_MESSAGE(WM_SETFOCUS),
 
- 	DEFINE_MESSAGE(WM_KILLFOCUS),
 
- 	DEFINE_MESSAGE(WM_ENABLE),
 
- 	DEFINE_MESSAGE(WM_SETREDRAW),
 
- 	DEFINE_MESSAGE(WM_SETTEXT),
 
- 	DEFINE_MESSAGE(WM_GETTEXT),
 
- 	DEFINE_MESSAGE(WM_GETTEXTLENGTH),
 
- 	DEFINE_MESSAGE(WM_PAINT),
 
- 	DEFINE_MESSAGE(WM_CLOSE),
 
- 	DEFINE_MESSAGE(WM_QUERYENDSESSION),
 
- 	DEFINE_MESSAGE(WM_QUIT),
 
- 	DEFINE_MESSAGE(WM_QUERYOPEN),
 
- 	DEFINE_MESSAGE(WM_ERASEBKGND),
 
- 	DEFINE_MESSAGE(WM_SYSCOLORCHANGE),
 
- 	DEFINE_MESSAGE(WM_ENDSESSION),
 
- 	DEFINE_MESSAGE(WM_SHOWWINDOW),
 
- 	DEFINE_MESSAGE(WM_CTLCOLORMSGBOX),
 
- 	DEFINE_MESSAGE(WM_CTLCOLOREDIT),
 
- 	DEFINE_MESSAGE(WM_CTLCOLORLISTBOX),
 
- 	DEFINE_MESSAGE(WM_CTLCOLORBTN),
 
- 	DEFINE_MESSAGE(WM_CTLCOLORDLG),
 
- 	DEFINE_MESSAGE(WM_CTLCOLORSCROLLBAR),
 
- 	DEFINE_MESSAGE(WM_CTLCOLORSTATIC),
 
- 	DEFINE_MESSAGE(WM_WININICHANGE),
 
- 	DEFINE_MESSAGE(WM_SETTINGCHANGE),
 
- 	DEFINE_MESSAGE(WM_DEVMODECHANGE),
 
- 	DEFINE_MESSAGE(WM_ACTIVATEAPP),
 
- 	DEFINE_MESSAGE(WM_FONTCHANGE),
 
- 	DEFINE_MESSAGE(WM_TIMECHANGE),
 
- 	DEFINE_MESSAGE(WM_CANCELMODE),
 
- 	DEFINE_MESSAGE(WM_SETCURSOR),
 
- 	DEFINE_MESSAGE(WM_MOUSEACTIVATE),
 
- 	DEFINE_MESSAGE(WM_CHILDACTIVATE),
 
- 	DEFINE_MESSAGE(WM_QUEUESYNC),
 
- 	DEFINE_MESSAGE(WM_GETMINMAXINFO),
 
- 	DEFINE_MESSAGE(WM_ICONERASEBKGND),
 
- 	DEFINE_MESSAGE(WM_NEXTDLGCTL),
 
- 	DEFINE_MESSAGE(WM_SPOOLERSTATUS),
 
- 	DEFINE_MESSAGE(WM_DRAWITEM),
 
- 	DEFINE_MESSAGE(WM_MEASUREITEM),
 
- 	DEFINE_MESSAGE(WM_DELETEITEM),
 
- 	DEFINE_MESSAGE(WM_VKEYTOITEM),
 
- 	DEFINE_MESSAGE(WM_CHARTOITEM),
 
- 	DEFINE_MESSAGE(WM_SETFONT),
 
- 	DEFINE_MESSAGE(WM_GETFONT),
 
- 	DEFINE_MESSAGE(WM_QUERYDRAGICON),
 
- 	DEFINE_MESSAGE(WM_COMPAREITEM),
 
- 	DEFINE_MESSAGE(WM_COMPACTING),
 
- 	DEFINE_MESSAGE(WM_NCCREATE),
 
- 	DEFINE_MESSAGE(WM_NCDESTROY),
 
- 	DEFINE_MESSAGE(WM_NCCALCSIZE),
 
- 	DEFINE_MESSAGE(WM_NCHITTEST),
 
- 	DEFINE_MESSAGE(WM_NCPAINT),
 
- 	DEFINE_MESSAGE(WM_NCACTIVATE),
 
- 	DEFINE_MESSAGE(WM_GETDLGCODE),
 
- 	DEFINE_MESSAGE(WM_NCMOUSEMOVE),
 
- 	DEFINE_MESSAGE(WM_NCLBUTTONDOWN),
 
- 	DEFINE_MESSAGE(WM_NCLBUTTONUP),
 
- 	DEFINE_MESSAGE(WM_NCLBUTTONDBLCLK),
 
- 	DEFINE_MESSAGE(WM_NCRBUTTONDOWN),
 
- 	DEFINE_MESSAGE(WM_NCRBUTTONUP),
 
- 	DEFINE_MESSAGE(WM_NCRBUTTONDBLCLK),
 
- 	DEFINE_MESSAGE(WM_NCMBUTTONDOWN),
 
- 	DEFINE_MESSAGE(WM_NCMBUTTONUP),
 
- 	DEFINE_MESSAGE(WM_NCMBUTTONDBLCLK),
 
- 	DEFINE_MESSAGE(WM_KEYDOWN),
 
- 	DEFINE_MESSAGE(WM_KEYUP),
 
- 	DEFINE_MESSAGE(WM_CHAR),
 
- 	DEFINE_MESSAGE(WM_DEADCHAR),
 
- 	DEFINE_MESSAGE(WM_SYSKEYDOWN),
 
- 	DEFINE_MESSAGE(WM_SYSKEYUP),
 
- 	DEFINE_MESSAGE(WM_SYSCHAR),
 
- 	DEFINE_MESSAGE(WM_SYSDEADCHAR),
 
- 	DEFINE_MESSAGE(WM_KEYLAST),
 
- 	DEFINE_MESSAGE(WM_INITDIALOG),
 
- 	DEFINE_MESSAGE(WM_COMMAND),
 
- 	DEFINE_MESSAGE(WM_SYSCOMMAND),
 
- 	DEFINE_MESSAGE(WM_TIMER),
 
- 	DEFINE_MESSAGE(WM_HSCROLL),
 
- 	DEFINE_MESSAGE(WM_VSCROLL),
 
- 	DEFINE_MESSAGE(WM_INITMENU),
 
- 	DEFINE_MESSAGE(WM_INITMENUPOPUP),
 
- 	DEFINE_MESSAGE(WM_MENUSELECT),
 
- 	DEFINE_MESSAGE(WM_MENUCHAR),
 
- 	DEFINE_MESSAGE(WM_ENTERIDLE),
 
- 	DEFINE_MESSAGE(WM_MOUSEWHEEL),
 
- 	DEFINE_MESSAGE(WM_MOUSEMOVE),
 
- 	DEFINE_MESSAGE(WM_LBUTTONDOWN),
 
- 	DEFINE_MESSAGE(WM_LBUTTONUP),
 
- 	DEFINE_MESSAGE(WM_LBUTTONDBLCLK),
 
- 	DEFINE_MESSAGE(WM_RBUTTONDOWN),
 
- 	DEFINE_MESSAGE(WM_RBUTTONUP),
 
- 	DEFINE_MESSAGE(WM_RBUTTONDBLCLK),
 
- 	DEFINE_MESSAGE(WM_MBUTTONDOWN),
 
- 	DEFINE_MESSAGE(WM_MBUTTONUP),
 
- 	DEFINE_MESSAGE(WM_MBUTTONDBLCLK),
 
- 	DEFINE_MESSAGE(WM_PARENTNOTIFY),
 
- 	DEFINE_MESSAGE(WM_MDICREATE),
 
- 	DEFINE_MESSAGE(WM_MDIDESTROY),
 
- 	DEFINE_MESSAGE(WM_MDIACTIVATE),
 
- 	DEFINE_MESSAGE(WM_MDIRESTORE),
 
- 	DEFINE_MESSAGE(WM_MDINEXT),
 
- 	DEFINE_MESSAGE(WM_MDIMAXIMIZE),
 
- 	DEFINE_MESSAGE(WM_MDITILE),
 
- 	DEFINE_MESSAGE(WM_MDICASCADE),
 
- 	DEFINE_MESSAGE(WM_MDIICONARRANGE),
 
- 	DEFINE_MESSAGE(WM_MDIGETACTIVE),
 
- 	DEFINE_MESSAGE(WM_MDISETMENU),
 
- 	DEFINE_MESSAGE(WM_CUT),
 
- 	DEFINE_MESSAGE(WM_COPYDATA),
 
- 	DEFINE_MESSAGE(WM_COPY),
 
- 	DEFINE_MESSAGE(WM_PASTE),
 
- 	DEFINE_MESSAGE(WM_CLEAR),
 
- 	DEFINE_MESSAGE(WM_UNDO),
 
- 	DEFINE_MESSAGE(WM_RENDERFORMAT),
 
- 	DEFINE_MESSAGE(WM_RENDERALLFORMATS),
 
- 	DEFINE_MESSAGE(WM_DESTROYCLIPBOARD),
 
- 	DEFINE_MESSAGE(WM_DRAWCLIPBOARD),
 
- 	DEFINE_MESSAGE(WM_PAINTCLIPBOARD),
 
- 	DEFINE_MESSAGE(WM_VSCROLLCLIPBOARD),
 
- 	DEFINE_MESSAGE(WM_SIZECLIPBOARD),
 
- 	DEFINE_MESSAGE(WM_ASKCBFORMATNAME),
 
- 	DEFINE_MESSAGE(WM_CHANGECBCHAIN),
 
- 	DEFINE_MESSAGE(WM_HSCROLLCLIPBOARD),
 
- 	DEFINE_MESSAGE(WM_QUERYNEWPALETTE),
 
- 	DEFINE_MESSAGE(WM_PALETTEISCHANGING),
 
- 	DEFINE_MESSAGE(WM_PALETTECHANGED),
 
- 	DEFINE_MESSAGE(WM_DDE_INITIATE),
 
- 	DEFINE_MESSAGE(WM_DDE_TERMINATE),
 
- 	DEFINE_MESSAGE(WM_DDE_ADVISE),
 
- 	DEFINE_MESSAGE(WM_DDE_UNADVISE),
 
- 	DEFINE_MESSAGE(WM_DDE_ACK),
 
- 	DEFINE_MESSAGE(WM_DDE_DATA),
 
- 	DEFINE_MESSAGE(WM_DDE_REQUEST),
 
- 	DEFINE_MESSAGE(WM_DDE_POKE),
 
- 	DEFINE_MESSAGE(WM_DDE_EXECUTE),
 
- 	DEFINE_MESSAGE(WM_DROPFILES),
 
- 	DEFINE_MESSAGE(WM_POWER),
 
- 	DEFINE_MESSAGE(WM_WINDOWPOSCHANGED),
 
- 	DEFINE_MESSAGE(WM_WINDOWPOSCHANGING),
 
- // MFC specific messages
 
- 	DEFINE_MESSAGE(WM_SIZEPARENT),
 
- 	DEFINE_MESSAGE(WM_SETMESSAGESTRING),
 
- 	DEFINE_MESSAGE(WM_IDLEUPDATECMDUI),
 
- 	DEFINE_MESSAGE(WM_INITIALUPDATE),
 
- 	DEFINE_MESSAGE(WM_COMMANDHELP),
 
- 	DEFINE_MESSAGE(WM_HELPHITTEST),
 
- 	DEFINE_MESSAGE(WM_EXITHELPMODE),
 
- 	DEFINE_MESSAGE(WM_HELP),
 
- 	DEFINE_MESSAGE(WM_NOTIFY),
 
- 	DEFINE_MESSAGE(WM_CONTEXTMENU),
 
- 	DEFINE_MESSAGE(WM_TCARD),
 
- 	DEFINE_MESSAGE(WM_MDIREFRESHMENU),
 
- 	DEFINE_MESSAGE(WM_MOVING),
 
- 	DEFINE_MESSAGE(WM_STYLECHANGED),
 
- 	DEFINE_MESSAGE(WM_STYLECHANGING),
 
- 	DEFINE_MESSAGE(WM_SIZING),
 
- 	DEFINE_MESSAGE(WM_SETHOTKEY),
 
- 	DEFINE_MESSAGE(WM_PRINT),
 
- 	DEFINE_MESSAGE(WM_PRINTCLIENT),
 
- 	DEFINE_MESSAGE(WM_POWERBROADCAST),
 
- 	DEFINE_MESSAGE(WM_HOTKEY),
 
- 	DEFINE_MESSAGE(WM_GETICON),
 
- 	DEFINE_MESSAGE(WM_EXITMENULOOP),
 
- 	DEFINE_MESSAGE(WM_ENTERMENULOOP),
 
- 	DEFINE_MESSAGE(WM_DISPLAYCHANGE),
 
- 	DEFINE_MESSAGE(WM_STYLECHANGED),
 
- 	DEFINE_MESSAGE(WM_STYLECHANGING),
 
- 	DEFINE_MESSAGE(WM_GETICON),
 
- 	DEFINE_MESSAGE(WM_SETICON),
 
- 	DEFINE_MESSAGE(WM_SIZING),
 
- 	DEFINE_MESSAGE(WM_MOVING),
 
- 	DEFINE_MESSAGE(WM_CAPTURECHANGED),
 
- 	DEFINE_MESSAGE(WM_DEVICECHANGE),
 
- 	DEFINE_MESSAGE(WM_PRINT),
 
- 	DEFINE_MESSAGE(WM_PRINTCLIENT),
 
- 	{ 0, NULL, }    // end of message list
 
- };
 
- #undef DEFINE_MESSAGE
 
- /////////////////////////////////////////////////////////////////////////////
 
- // DDE special case
 
- static void AFXAPI TraceDDE(LPCTSTR lpszPrefix, const MSG* pMsg)
 
- {
 
- 	if (pMsg->message == WM_DDE_EXECUTE)
 
- 	{
 
- 		UINT nDummy;
 
- 		HGLOBAL hCommands;
 
- 		if (!UnpackDDElParam(WM_DDE_EXECUTE, pMsg->lParam,
 
- 			&nDummy, (PUINT)&hCommands))
 
- 		{
 
- 			TRACE1("Warning: Unable to unpack WM_DDE_EXECUTE lParam %08lX.\n",
 
- 				pMsg->lParam);
 
- 			return;
 
- 		}
 
- 		ASSERT(hCommands != NULL);
 
- 		LPCTSTR lpszCommands = (LPCTSTR)::GlobalLock(hCommands);
 
- 		ASSERT(lpszCommands != NULL);
 
- 		TRACE2("%s: Execute '%s'.\n", lpszPrefix, lpszCommands);
 
- 		::GlobalUnlock(hCommands);
 
- 	}
 
- 	else if (pMsg->message == WM_DDE_ADVISE)
 
- 	{
 
- 		ATOM aItem;
 
- 		HGLOBAL hAdvise;
 
- 		if (!UnpackDDElParam(WM_DDE_ADVISE, pMsg->lParam,
 
- 			(PUINT)&hAdvise, (PUINT)&aItem))
 
- 		{
 
- 			TRACE1("Warning: Unable to unpack WM_DDE_ADVISE lParam %08lX.\n",
 
- 				pMsg->lParam);
 
- 			return;
 
- 		}
 
- 		ASSERT(aItem != NULL);
 
- 		ASSERT(hAdvise != NULL);
 
- 		DDEADVISE* lpAdvise = (DDEADVISE*)::GlobalLock(hAdvise);
 
- 		ASSERT(lpAdvise != NULL);
 
- 		TCHAR szItem[80];
 
- 		szItem[0] = '\0';
 
- 		if (aItem != 0)
 
- 			::GlobalGetAtomName(aItem, szItem, _countof(szItem));
 
- 		TCHAR szFormat[80];
 
- 		szFormat[0] = '\0';
 
- 		if (((UINT)0xC000 <= (UINT)lpAdvise->cfFormat) &&
 
- 				((UINT)lpAdvise->cfFormat <= (UINT)0xFFFF))
 
- 		{
 
- 			::GetClipboardFormatName(lpAdvise->cfFormat,
 
- 				szFormat, _countof(szFormat));
 
- 			// User defined clipboard formats have a range of 0xC000->0xFFFF
 
- 			// System clipboard formats have other ranges, but no printable
 
- 			// format names.
 
- 		}
 
- 		AfxTrace(
 
- 			_T("%s: Advise item='%s', Format='%s', Ack=%d, Defer Update= %d\n"),
 
- 			 lpszPrefix, szItem, szFormat, lpAdvise->fAckReq,
 
- 			lpAdvise->fDeferUpd);
 
- 		::GlobalUnlock(hAdvise);
 
- 	}
 
- }
 
- /////////////////////////////////////////////////////////////////////////////
 
- void AFXAPI _AfxTraceMsg(LPCTSTR lpszPrefix, const MSG* pMsg)
 
- {
 
- 	ASSERT(lpszPrefix != NULL);
 
- 	ASSERT(pMsg != NULL);
 
- 	if (pMsg->message == WM_MOUSEMOVE || pMsg->message == WM_NCMOUSEMOVE ||
 
- 		pMsg->message == WM_NCHITTEST || pMsg->message == WM_SETCURSOR ||
 
- 		pMsg->message == WM_CTLCOLORBTN ||
 
- 		pMsg->message == WM_CTLCOLORDLG ||
 
- 		pMsg->message == WM_CTLCOLOREDIT ||
 
- 		pMsg->message == WM_CTLCOLORLISTBOX ||
 
- 		pMsg->message == WM_CTLCOLORMSGBOX ||
 
- 		pMsg->message == WM_CTLCOLORSCROLLBAR ||
 
- 		pMsg->message == WM_CTLCOLORSTATIC ||
 
- 		pMsg->message == WM_ENTERIDLE || pMsg->message == WM_CANCELMODE ||
 
- 		pMsg->message == 0x0118)    // WM_SYSTIMER (caret blink)
 
- 	{
 
- 		// don't report very frequently sent messages
 
- 		return;
 
- 	}
 
- 	LPCSTR lpszMsgName = NULL;
 
- 	char szBuf[80];
 
- 	// find message name
 
- 	if (pMsg->message >= 0xC000)
 
- 	{
 
- 		// Window message registered with 'RegisterWindowMessage'
 
- 		//  (actually a USER atom)
 
- 		if (::GetClipboardFormatNameA(pMsg->message, szBuf, _countof(szBuf)))
 
- 			lpszMsgName = szBuf;
 
- 	}
 
- 	else if (pMsg->message >= WM_USER)
 
- 	{
 
- 		// User message
 
- 		wsprintfA(szBuf, "WM_USER+0x%04X", pMsg->message - WM_USER);
 
- 		lpszMsgName = szBuf;
 
- 	}
 
- 	else
 
- 	{
 
- 		// a system windows message
 
- 		const AFX_MAP_MESSAGE* pMapMsg = allMessages;
 
- 		for (/*null*/; pMapMsg->lpszMsg != NULL; pMapMsg++)
 
- 		{
 
- 			if (pMapMsg->nMsg == pMsg->message)
 
- 			{
 
- 				lpszMsgName = pMapMsg->lpszMsg;
 
- 				break;
 
- 			}
 
- 		}
 
- 	}
 
- 	if (lpszMsgName != NULL)
 
- 	{
 
- 		AfxTrace(_T("%s: hwnd=0x%04X, msg = %hs (0x%04X, 0x%08lX)\n"),
 
- 			lpszPrefix, (UINT)pMsg->hwnd, lpszMsgName,
 
- 			pMsg->wParam, pMsg->lParam);
 
- 	}
 
- 	else
 
- 	{
 
- 		AfxTrace(_T("%s: hwnd=0x%04X, msg = 0x%04X (0x%04X, 0x%08lX)\n"),
 
- 			lpszPrefix, (UINT)pMsg->hwnd, pMsg->message,
 
- 			pMsg->wParam, pMsg->lParam);
 
- 	}
 
- 	if (pMsg->message >= WM_DDE_FIRST && pMsg->message <= WM_DDE_LAST)
 
- 		TraceDDE(lpszPrefix, pMsg);
 
- }
 
- /////////////////////////////////////////////////////////////////////////////
 
- #endif // _DEBUG (entire file)
 
 
  |