windows-nt/Source/XPSP1/NT/base/cluster/admin/common/atldbgwin.cpp
2020-09-26 16:20:57 +08:00

678 lines
20 KiB
C++

/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1996-1998 Microsoft Corporation
//
// Module Name:
// AtlDbgWin.cpp
//
// Abstract:
// Implementation of the ATL window debugging functions.
//
// Author:
// David Potter (davidp) June 2, 1998
//
// Revision History:
//
// Notes:
//
/////////////////////////////////////////////////////////////////////////////
#include "AtlDbgWin.h"
/////////////////////////////////////////////////////////////////////////////
// Global Variables
/////////////////////////////////////////////////////////////////////////////
#if DBG && defined( _DBG_MSG )
extern const ID_MAP_ENTRY s_rgmapWindowMsgs[];
_declspec( selectany ) const ID_MAP_ENTRY s_rgmapWindowMsgs[] =
{
DECLARE_ID_STRING( WM_NULL )
DECLARE_ID_STRING( WM_CREATE )
DECLARE_ID_STRING( WM_DESTROY )
DECLARE_ID_STRING( WM_MOVE )
DECLARE_ID_STRING( WM_SIZE )
DECLARE_ID_STRING( WM_ACTIVATE )
DECLARE_ID_STRING( WM_SETFOCUS )
DECLARE_ID_STRING( WM_KILLFOCUS )
DECLARE_ID_STRING( WM_ENABLE )
DECLARE_ID_STRING( WM_SETREDRAW )
DECLARE_ID_STRING( WM_SETTEXT )
DECLARE_ID_STRING( WM_GETTEXT )
DECLARE_ID_STRING( WM_GETTEXTLENGTH )
DECLARE_ID_STRING( WM_PAINT )
DECLARE_ID_STRING( WM_CLOSE )
#ifndef _WIN32_WCE
DECLARE_ID_STRING( WM_QUERYENDSESSION )
DECLARE_ID_STRING( WM_QUERYOPEN )
DECLARE_ID_STRING( WM_ENDSESSION )
#endif // _WIN32_WCE
DECLARE_ID_STRING( WM_QUIT )
DECLARE_ID_STRING( WM_ERASEBKGND )
DECLARE_ID_STRING( WM_SYSCOLORCHANGE )
DECLARE_ID_STRING( WM_SHOWWINDOW )
#if(WINVER >= 0x0400)
DECLARE_ID_STRING_EX( WM_WININICHANGE, _T(" / WM_SETTINGCHANGE") )
#else
DECLARE_ID_STRING( WM_WININICHANGE )
#endif // (WINVER >= 0x0400)
DECLARE_ID_STRING( WM_DEVMODECHANGE )
DECLARE_ID_STRING( WM_ACTIVATEAPP )
DECLARE_ID_STRING( WM_FONTCHANGE )
DECLARE_ID_STRING( WM_TIMECHANGE )
DECLARE_ID_STRING( WM_CANCELMODE )
DECLARE_ID_STRING( WM_SETCURSOR )
DECLARE_ID_STRING( WM_MOUSEACTIVATE )
DECLARE_ID_STRING( WM_CHILDACTIVATE )
DECLARE_ID_STRING( WM_QUEUESYNC )
DECLARE_ID_STRING( WM_GETMINMAXINFO )
DECLARE_ID_STRING( WM_PAINTICON )
DECLARE_ID_STRING( WM_ICONERASEBKGND )
DECLARE_ID_STRING( WM_NEXTDLGCTL )
DECLARE_ID_STRING( WM_SPOOLERSTATUS )
DECLARE_ID_STRING( WM_DRAWITEM )
DECLARE_ID_STRING( WM_MEASUREITEM )
DECLARE_ID_STRING( WM_DELETEITEM )
DECLARE_ID_STRING( WM_VKEYTOITEM )
DECLARE_ID_STRING( WM_CHARTOITEM )
DECLARE_ID_STRING( WM_SETFONT )
DECLARE_ID_STRING( WM_GETFONT )
DECLARE_ID_STRING( WM_SETHOTKEY )
DECLARE_ID_STRING( WM_GETHOTKEY )
DECLARE_ID_STRING( WM_QUERYDRAGICON )
DECLARE_ID_STRING( WM_COMPAREITEM )
#if(WINVER >= 0x0500)
#ifndef _WIN32_WCE
DECLARE_ID_STRING( WM_GETOBJECT )
#endif // _WIN32_WCE
#endif // (WINVER >= 0x0500)
DECLARE_ID_STRING( WM_COMPACTING )
DECLARE_ID_STRING( WM_COMMNOTIFY )
DECLARE_ID_STRING( WM_WINDOWPOSCHANGING )
DECLARE_ID_STRING( WM_WINDOWPOSCHANGED )
DECLARE_ID_STRING( WM_POWER )
DECLARE_ID_STRING( WM_COPYDATA )
DECLARE_ID_STRING( WM_CANCELJOURNAL )
#if(WINVER >= 0x0400)
DECLARE_ID_STRING( WM_NOTIFY )
DECLARE_ID_STRING( WM_INPUTLANGCHANGEREQUEST )
DECLARE_ID_STRING( WM_INPUTLANGCHANGE )
DECLARE_ID_STRING( WM_TCARD )
DECLARE_ID_STRING( WM_HELP )
DECLARE_ID_STRING( WM_USERCHANGED )
DECLARE_ID_STRING( WM_NOTIFYFORMAT )
DECLARE_ID_STRING( WM_CONTEXTMENU )
DECLARE_ID_STRING( WM_STYLECHANGING )
DECLARE_ID_STRING( WM_STYLECHANGED )
DECLARE_ID_STRING( WM_DISPLAYCHANGE )
DECLARE_ID_STRING( WM_GETICON )
DECLARE_ID_STRING( WM_SETICON )
#endif // (WINVER >= 0x0400)
DECLARE_ID_STRING( WM_NCCREATE )
DECLARE_ID_STRING( WM_NCDESTROY )
DECLARE_ID_STRING( WM_NCCALCSIZE )
DECLARE_ID_STRING( WM_NCHITTEST )
DECLARE_ID_STRING( WM_NCPAINT )
DECLARE_ID_STRING( WM_NCACTIVATE )
DECLARE_ID_STRING( WM_GETDLGCODE )
#ifndef _WIN32_WCE
DECLARE_ID_STRING( WM_SYNCPAINT )
#endif // _WIN32_WCE
DECLARE_ID_STRING( WM_NCMOUSEMOVE )
DECLARE_ID_STRING( WM_NCLBUTTONDOWN )
DECLARE_ID_STRING( WM_NCLBUTTONUP )
DECLARE_ID_STRING( WM_NCLBUTTONDBLCLK )
DECLARE_ID_STRING( WM_NCRBUTTONDOWN )
DECLARE_ID_STRING( WM_NCRBUTTONUP )
DECLARE_ID_STRING( WM_NCRBUTTONDBLCLK )
DECLARE_ID_STRING( WM_NCMBUTTONDOWN )
DECLARE_ID_STRING( WM_NCMBUTTONUP )
DECLARE_ID_STRING( WM_NCMBUTTONDBLCLK )
DECLARE_ID_STRING( WM_KEYDOWN )
DECLARE_ID_STRING( WM_KEYUP )
DECLARE_ID_STRING( WM_CHAR )
DECLARE_ID_STRING( WM_DEADCHAR )
DECLARE_ID_STRING( WM_SYSKEYDOWN )
DECLARE_ID_STRING( WM_SYSKEYUP )
DECLARE_ID_STRING( WM_SYSCHAR )
DECLARE_ID_STRING( WM_SYSDEADCHAR )
#if(WINVER >= 0x0400)
DECLARE_ID_STRING( WM_IME_STARTCOMPOSITION )
DECLARE_ID_STRING( WM_IME_ENDCOMPOSITION )
DECLARE_ID_STRING( WM_IME_COMPOSITION )
#endif // (WINVER >= 0x0400)
DECLARE_ID_STRING( WM_INITDIALOG )
DECLARE_ID_STRING( WM_COMMAND )
DECLARE_ID_STRING( WM_SYSCOMMAND )
DECLARE_ID_STRING( WM_TIMER )
DECLARE_ID_STRING( WM_HSCROLL )
DECLARE_ID_STRING( WM_VSCROLL )
DECLARE_ID_STRING( WM_INITMENU )
DECLARE_ID_STRING( WM_INITMENUPOPUP )
DECLARE_ID_STRING( WM_MENUSELECT )
DECLARE_ID_STRING( WM_MENUCHAR )
DECLARE_ID_STRING( WM_ENTERIDLE )
#if(WINVER >= 0x0500)
#ifndef _WIN32_WCE
DECLARE_ID_STRING( WM_MENURBUTTONUP )
DECLARE_ID_STRING( WM_MENUDRAG )
DECLARE_ID_STRING( WM_MENUGETOBJECT )
DECLARE_ID_STRING( WM_UNINITMENUPOPUP )
DECLARE_ID_STRING( WM_MENUCOMMAND )
#ifndef _WIN32_WCE
#if(_WIN32_WINNT >= 0x0500)
DECLARE_ID_STRING( WM_KEYBOARDCUES )
#endif // (_WIN32_WINNT >= 0x0500)
#endif // _WIN32_WCE
#endif // _WIN32_WCE
#endif // (WINVER >= 0x0500)
DECLARE_ID_STRING( WM_CTLCOLORMSGBOX )
DECLARE_ID_STRING( WM_CTLCOLOREDIT )
DECLARE_ID_STRING( WM_CTLCOLORLISTBOX )
DECLARE_ID_STRING( WM_CTLCOLORBTN )
DECLARE_ID_STRING( WM_CTLCOLORDLG )
DECLARE_ID_STRING( WM_CTLCOLORSCROLLBAR )
DECLARE_ID_STRING( WM_CTLCOLORSTATIC )
DECLARE_ID_STRING( WM_MOUSEMOVE )
DECLARE_ID_STRING( WM_LBUTTONDOWN )
DECLARE_ID_STRING( WM_LBUTTONUP )
DECLARE_ID_STRING( WM_LBUTTONDBLCLK )
DECLARE_ID_STRING( WM_RBUTTONDOWN )
DECLARE_ID_STRING( WM_RBUTTONUP )
DECLARE_ID_STRING( WM_RBUTTONDBLCLK )
DECLARE_ID_STRING( WM_MBUTTONDOWN )
DECLARE_ID_STRING( WM_MBUTTONUP )
DECLARE_ID_STRING( WM_MBUTTONDBLCLK )
#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS >= 0x0400)
DECLARE_ID_STRING( WM_MOUSEWHEEL )
#endif // (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS >= 0x0400)
DECLARE_ID_STRING( WM_PARENTNOTIFY )
DECLARE_ID_STRING( WM_ENTERMENULOOP )
DECLARE_ID_STRING( WM_EXITMENULOOP )
#if(WINVER >= 0x0400)
DECLARE_ID_STRING( WM_NEXTMENU )
DECLARE_ID_STRING( WM_SIZING )
DECLARE_ID_STRING( WM_CAPTURECHANGED )
DECLARE_ID_STRING( WM_MOVING )
#endif // (WINVER >= 0x0400)
DECLARE_ID_STRING( WM_POWERBROADCAST )
#if(WINVER >= 0x0400)
DECLARE_ID_STRING( WM_DEVICECHANGE )
#endif // (WINVER >= 0x0400)
DECLARE_ID_STRING( WM_MDICREATE )
DECLARE_ID_STRING( WM_MDIDESTROY )
DECLARE_ID_STRING( WM_MDIACTIVATE )
DECLARE_ID_STRING( WM_MDIRESTORE )
DECLARE_ID_STRING( WM_MDINEXT )
DECLARE_ID_STRING( WM_MDIMAXIMIZE )
DECLARE_ID_STRING( WM_MDITILE )
DECLARE_ID_STRING( WM_MDICASCADE )
DECLARE_ID_STRING( WM_MDIICONARRANGE )
DECLARE_ID_STRING( WM_MDIGETACTIVE )
DECLARE_ID_STRING( WM_MDISETMENU )
DECLARE_ID_STRING( WM_ENTERSIZEMOVE )
DECLARE_ID_STRING( WM_EXITSIZEMOVE )
DECLARE_ID_STRING( WM_DROPFILES )
DECLARE_ID_STRING( WM_MDIREFRESHMENU )
#if(WINVER >= 0x0400)
DECLARE_ID_STRING( WM_IME_SETCONTEXT )
DECLARE_ID_STRING( WM_IME_NOTIFY )
DECLARE_ID_STRING( WM_IME_CONTROL )
DECLARE_ID_STRING( WM_IME_COMPOSITIONFULL )
DECLARE_ID_STRING( WM_IME_SELECT )
DECLARE_ID_STRING( WM_IME_CHAR )
#endif // (WINVER >= 0x0400)
#if(WINVER >= 0x0500)
DECLARE_ID_STRING( WM_IME_REQUEST )
#endif // (WINVER >= 0x0500)
#if(WINVER >= 0x0400)
DECLARE_ID_STRING( WM_IME_KEYDOWN )
DECLARE_ID_STRING( WM_IME_KEYUP )
#endif // (WINVER >= 0x0400)
#if(_WIN32_WINNT >= 0x0400)
DECLARE_ID_STRING( WM_MOUSEHOVER )
DECLARE_ID_STRING( WM_MOUSELEAVE )
#endif // (_WIN32_WINNT >= 0x0400)
#if(WINVER >= 0x0500)
DECLARE_ID_STRING( WM_NCMOUSEHOVER )
DECLARE_ID_STRING( WM_NCMOUSELEAVE )
#endif // (WINVER >= 0x0500)
DECLARE_ID_STRING( WM_CUT )
DECLARE_ID_STRING( WM_COPY )
DECLARE_ID_STRING( WM_PASTE )
DECLARE_ID_STRING( WM_CLEAR )
DECLARE_ID_STRING( WM_UNDO )
DECLARE_ID_STRING( WM_RENDERFORMAT )
DECLARE_ID_STRING( WM_RENDERALLFORMATS )
DECLARE_ID_STRING( WM_DESTROYCLIPBOARD )
DECLARE_ID_STRING( WM_DRAWCLIPBOARD )
DECLARE_ID_STRING( WM_PAINTCLIPBOARD )
DECLARE_ID_STRING( WM_VSCROLLCLIPBOARD )
DECLARE_ID_STRING( WM_SIZECLIPBOARD )
DECLARE_ID_STRING( WM_ASKCBFORMATNAME )
DECLARE_ID_STRING( WM_CHANGECBCHAIN )
DECLARE_ID_STRING( WM_HSCROLLCLIPBOARD )
DECLARE_ID_STRING( WM_QUERYNEWPALETTE )
DECLARE_ID_STRING( WM_PALETTEISCHANGING )
DECLARE_ID_STRING( WM_PALETTECHANGED )
DECLARE_ID_STRING( WM_HOTKEY )
#if(WINVER >= 0x0400)
DECLARE_ID_STRING( WM_PRINT )
DECLARE_ID_STRING( WM_PRINTCLIENT )
DECLARE_ID_STRING_2( WM_AFXFIRST+0, WM_QUERYAFXWNDPROC )
DECLARE_ID_STRING_2( WM_AFXFIRST+1, WM_SIZEPARENT )
DECLARE_ID_STRING_2( WM_AFXFIRST+2, WM_SETMESSAGESTRING )
DECLARE_ID_STRING_2( WM_AFXFIRST+3, WM_IDLEUPDATECMDUI )
DECLARE_ID_STRING_2( WM_AFXFIRST+4, WM_INITIALUPDATE )
DECLARE_ID_STRING_2( WM_AFXFIRST+5, WM_COMMANDHELP )
DECLARE_ID_STRING_2( WM_AFXFIRST+6, WM_HELPHITTEST )
DECLARE_ID_STRING_2( WM_AFXFIRST+7, WM_EXITHELPMODE )
DECLARE_ID_STRING_2( WM_AFXFIRST+8, WM_RECALCPARENT )
DECLARE_ID_STRING_2( WM_AFXFIRST+9, WM_SIZECHILD )
DECLARE_ID_STRING_2( WM_AFXFIRST+10, WM_KICKIDLE )
DECLARE_ID_STRING_2( WM_AFXFIRST+11, WM_QUERYCENTERWND )
DECLARE_ID_STRING_2( WM_AFXFIRST+12, WM_DISABLEMODAL )
DECLARE_ID_STRING_2( WM_AFXFIRST+13, WM_FLOATSTATUS )
DECLARE_ID_STRING_2( WM_AFXFIRST+14, WM_ACTIVATETOPLEVEL )
DECLARE_ID_STRING_2( WM_AFXFIRST+15, WM_QUERY3DCONTROLS )
DECLARE_ID_STRING_2( WM_AFXFIRST+16, WM_RESERVED_0370 )
DECLARE_ID_STRING_2( WM_AFXFIRST+17, WM_RESERVED_0371 )
DECLARE_ID_STRING_2( WM_AFXFIRST+18, WM_RESERVED_0372 )
DECLARE_ID_STRING_2( WM_AFXFIRST+19, WM_SOCKET_NOTIFY )
DECLARE_ID_STRING_2( WM_AFXFIRST+20, WM_SOCKET_DEAD )
DECLARE_ID_STRING_2( WM_AFXFIRST+21, WM_POPMESSAGESTRING )
DECLARE_ID_STRING_2( WM_AFXFIRST+22, WM_OCC_LOADFROMSTREAM )
DECLARE_ID_STRING_2( WM_AFXFIRST+23, WM_OCC_LOADFROMSTORAGE )
DECLARE_ID_STRING_2( WM_AFXFIRST+24, WM_OCC_INITNEW )
DECLARE_ID_STRING_2( WM_AFXFIRST+25, WM_OCC_LOADFROMSTREAM_EX )
DECLARE_ID_STRING_2( WM_AFXFIRST+26, WM_OCC_LOADFROMSTORAGE_EX )
DECLARE_ID_STRING_2( WM_AFXFIRST+27, WM_QUEUE_SENTINEL )
DECLARE_ID_STRING_2( WM_AFXFIRST+28, WM_RESERVED_037C )
DECLARE_ID_STRING_2( WM_AFXFIRST+29, WM_RESERVED_037D )
DECLARE_ID_STRING_2( WM_AFXFIRST+30, WM_RESERVED_037E )
DECLARE_ID_STRING_2( WM_AFXFIRST+31, WM_RESERVED_037F )
DECLARE_ID_STRING( WM_APP )
#endif // (WINVER >= 0x0400)
{ NULL, 0 }
};
#endif // DBG && defined( _DBG_MSG )
#if DBG && defined( _DBG_MSG_COMMAND )
_declspec( selectany ) const ID_MAP_ENTRY s_rgmapButtonMsgs[] =
{
DECLARE_ID_STRING( BN_CLICKED )
DECLARE_ID_STRING( BN_PAINT )
DECLARE_ID_STRING_EX( BN_HILITE, _T(" / BN_PUSHED") )
DECLARE_ID_STRING_EX( BN_UNHILITE, _T(" / BN_UNPUSHED") )
DECLARE_ID_STRING( BN_DISABLE )
DECLARE_ID_STRING( BN_DOUBLECLICKED )
DECLARE_ID_STRING( BN_SETFOCUS )
DECLARE_ID_STRING( BN_KILLFOCUS )
{ NULL, 0 }
};
_declspec( selectany ) const ID_MAP_ENTRY s_rgmapComboBoxMsgs[] =
{
DECLARE_ID_STRING_2( (UINT) CBN_ERRSPACE, CBN_ERRSPACE )
DECLARE_ID_STRING( CBN_SELCHANGE )
DECLARE_ID_STRING( CBN_DBLCLK )
DECLARE_ID_STRING( CBN_SETFOCUS )
DECLARE_ID_STRING( CBN_KILLFOCUS )
DECLARE_ID_STRING( CBN_EDITCHANGE )
DECLARE_ID_STRING( CBN_EDITUPDATE )
DECLARE_ID_STRING( CBN_DROPDOWN )
DECLARE_ID_STRING( CBN_CLOSEUP )
DECLARE_ID_STRING( CBN_SELENDOK )
DECLARE_ID_STRING( CBN_SELENDCANCEL )
{ NULL, 0 }
};
_declspec( selectany ) const ID_MAP_ENTRY s_rgmapEditMsgs[] =
{
DECLARE_ID_STRING( EN_SETFOCUS )
DECLARE_ID_STRING( EN_KILLFOCUS )
DECLARE_ID_STRING( EN_CHANGE )
DECLARE_ID_STRING( EN_UPDATE )
DECLARE_ID_STRING( EN_ERRSPACE )
DECLARE_ID_STRING( EN_MAXTEXT )
DECLARE_ID_STRING( EN_HSCROLL )
DECLARE_ID_STRING( EN_VSCROLL )
{ NULL, 0 }
};
_declspec( selectany ) const ID_MAP_ENTRY s_rgmapListBoxMsgs[] =
{
DECLARE_ID_STRING( LBN_ERRSPACE )
DECLARE_ID_STRING( LBN_SELCHANGE )
DECLARE_ID_STRING( LBN_DBLCLK )
DECLARE_ID_STRING( LBN_SELCANCEL )
DECLARE_ID_STRING( LBN_SETFOCUS )
DECLARE_ID_STRING( LBN_KILLFOCUS )
{ NULL, 0 }
};
_declspec( selectany ) const ID_MAP_ENTRY s_rgmapScrollBarMsgs[] =
{
{ NULL, 0 }
};
_declspec( selectany ) const ID_MAP_ENTRY s_rgmapStaticMsgs[] =
{
{ NULL, 0 }
};
_declspec( selectany ) const ID_MAP_ENTRY s_rgmapListViewMsgs[] =
{
{ NULL, 0 }
};
_declspec( selectany ) const ID_MAP_ENTRY s_rgmapTreeViewMsgs[] =
{
{ NULL, 0 }
};
_declspec( selectany ) const ID_MAP_ENTRY s_rgmapIPAddressMsgs[] =
{
DECLARE_ID_STRING( IPN_FIELDCHANGE )
DECLARE_ID_STRING_EX( EN_SETFOCUS, _T(" (IPN)") )
DECLARE_ID_STRING_EX( EN_KILLFOCUS, _T(" (IPN)") )
DECLARE_ID_STRING_EX( EN_CHANGE, _T(" (IPN)") )
DECLARE_ID_STRING_EX( EN_UPDATE, _T(" (IPN)") )
DECLARE_ID_STRING_EX( EN_ERRSPACE, _T(" (IPN)") )
DECLARE_ID_STRING_EX( EN_MAXTEXT, _T(" (IPN)") )
DECLARE_ID_STRING_EX( EN_HSCROLL, _T(" (IPN)") )
DECLARE_ID_STRING_EX( EN_VSCROLL, _T(" (IPN)") )
{ NULL, 0 }
};
#endif // DBG && defined( _DBG_MSG_COMMAND )
#if DBG && defined( _DBG_MSG_NOTIFY )
_declspec( selectany ) const ID_MAP_ENTRY s_rgmapPropSheetNotifyMsgs[] =
{
DECLARE_ID_STRING( PSN_SETACTIVE )
DECLARE_ID_STRING( PSN_KILLACTIVE )
DECLARE_ID_STRING( PSN_APPLY )
DECLARE_ID_STRING( PSN_RESET )
DECLARE_ID_STRING( PSN_HELP )
DECLARE_ID_STRING( PSN_WIZBACK )
DECLARE_ID_STRING( PSN_WIZNEXT )
DECLARE_ID_STRING( PSN_WIZFINISH )
DECLARE_ID_STRING( PSN_QUERYCANCEL )
{ NULL, 0 }
};
#endif // DBG && defined( _DBG_MSG_NOTIFY )
/////////////////////////////////////////////////////////////////////////////
// Global Functions
/////////////////////////////////////////////////////////////////////////////
#if DBG && defined( _DBG_MSG )
/////////////////////////////////////////////////////////////////////////////
//++
//
// DBG_OnMsg
//
// Routine Description:
// Debug handler for any message.
//
// Arguments:
// uMsg [IN] Message causing this function to be called.
// wParam [IN] Message specific parameter.
// lParam [IN] Message specific parameter.
// bHandled [IN OUT] TRUE = message has been handled (we set to FALSE).
// pszClassName [IN] Name of class calling this function.
//
// Return Value:
// None.
//
//--
/////////////////////////////////////////////////////////////////////////////
LRESULT DBG_OnMsg(
UINT uMsg,
WPARAM wParam,
LPARAM lParam,
BOOL & bHandled,
LPCTSTR pszClassName
)
{
ATLASSERT( pszClassName != NULL );
const ID_MAP_ENTRY * pmap;
//
// Display the message code.
//
ATLTRACE( _T("%s::OnMsg() - Message = %08.8X"), pszClassName, uMsg );
pmap = s_rgmapWindowMsgs;
if ( (WM_USER <= uMsg)
&& (uMsg < WM_APP) )
{
ATLTRACE( _T(" (WM_USER + %d)"), uMsg - WM_USER );
} // if: user message
#if(WINVER >= 0x0400)
else if ( (WM_HANDHELDFIRST <= uMsg)
&& (uMsg <= WM_HANDHELDLAST) )
{
ATLTRACE( _T(" (WM_HANDHELDFIRST + %d)"), uMsg - WM_HANDHELDFIRST );
} // else if: handheld PC message
#endif // (WINVER >= 0x0400)
else if ( (WM_PENWINFIRST <= uMsg)
&& (uMsg <= WM_PENWINLAST) )
{
ATLTRACE( _T(" (WM_PENWINFIRST + %d)"), uMsg - WM_PENWINFIRST );
} // else if: pen windows message
else
{
for ( ; pmap->pszName != NULL ; pmap++ )
{
if ( uMsg == pmap->id )
{
ATLTRACE( _T(" (%s)"), pmap->pszName );
break;
} // if: message found
} // for: each code in the map
} // else: not range message
if ( (WM_AFXFIRST <= uMsg)
&& (uMsg <= WM_AFXLAST) )
{
ATLTRACE( _T(" (WM_AFXFIRST + %d)"), uMsg - WM_AFXFIRST );
} // if: MFC message
ATLTRACE( _T("\n") );
bHandled = FALSE;
return 1;
} //*** DBG_OnMsg()
#endif // DBG && defined( _DBG_MSG )
#if DBG && defined( _DBG_MSG_NOTIFY )
/////////////////////////////////////////////////////////////////////////////
//++
//
// DBG_OnNotify
//
// Routine Description:
// Debug handler for the WM_NOTIFY message.
//
// Arguments:
// uMsg [IN] Message causing this function to be called (WM_NOTIFY).
// wParam [IN] Unused.
// lParam [IN] Pointer to notification message header (NMHDR).
// bHandled [IN OUT] TRUE = message has been handled (we set to FALSE).
// pszClassName [IN] Name of class calling this function.
// pmapCtrlNames [IN] Map of control IDs to control names.
//
// Return Value:
// None.
//
//--
/////////////////////////////////////////////////////////////////////////////
LRESULT DBG_OnNotify(
UINT uMsg,
WPARAM wParam,
LPARAM lParam,
BOOL & bHandled,
LPCTSTR pszClassName,
ID_MAP_ENTRY * pmapCtrlNames
)
{
ATLASSERT( ::IsWindow( m_hWnd ) );
ATLASSERT( pszClassName != NULL );
NMHDR * pNMHDR = (NMHDR *) lParam;
const ID_MAP_ENTRY * pmap;
//
// Display the control ID.
//
ATLTRACE( _T("%s::OnNotify() - idFrom = %d"), pszClassName, pNMHDR->idFrom );
if ( pmapCtrlNames != NULL )
{
pmap = pmapCtrlNames;
for ( ; pmap->pszName != NULL ; pmap++ )
{
if ( pNMHDR->idFrom == pmap->id )
{
ATLTRACE( _T(" (%s)"), pmap->pszName );
} // if: control ID found
} // for: each control in the map
} // if: control names array specified
//
// Display the notification code.
//
ATLTRACE( _T(" code = %08.8X"), pNMHDR->code );
pmap = s_rgmapPropSheetNotifyMsgs;
for ( ; pmap->pszName != NULL ; pmap++ )
{
if ( pNMHDR->code == pmap->id )
{
ATLTRACE( _T(" (%s)"), pmap->pszName );
break;
} // if: code found
} // for: each code in the map
ATLTRACE( _T("\n") );
bHandled = FALSE;
return 1;
} //*** DBG_OnNotify()
#endif // DBG && defined( _DBG_MSG_NOTIFY )
#if DBG && defined( _DBG_MSG_COMMAND )
/////////////////////////////////////////////////////////////////////////////
//++
//
// DBG_OnCommand
//
// Routine Description:
// Debug handler for the WM_COMMAND message.
//
// Arguments:
// uMsg [IN] Message causing this function to be called (WM_COMMAND).
// wParam [IN] Notification code and control ID.
// lParam [IN] Window handle to the control.
// bHandled [IN OUT] TRUE = message has been handled (we set to FALSE).
// pszClassName [IN] Name of class calling this function.
// pmapCtrlNames [IN] Map of control IDs to control names.
//
// Return Value:
// None.
//
//--
/////////////////////////////////////////////////////////////////////////////
LRESULT DBG_OnCommand(
UINT uMsg,
WPARAM wParam,
LPARAM lParam,
BOOL & bHandled,
LPCTSTR pszClassName,
ID_MAP_ENTRY * pmapCtrlNames
)
{
ATLASSERT( pszClassName != NULL );
WORD wNotifyCode = HIWORD( wParam );
WORD idCtrl = LOWORD ( wParam );
HWND hwndCtrl = (HWND) lParam;
const ID_MAP_ENTRY * pmap;
//
// Display the control ID.
//
ATLTRACE( _T("%s::OnCommand() - idCtrl = %d"), pszClassName, idCtrl );
if ( pmapCtrlNames != NULL )
{
pmap = pmapCtrlNames;
for ( ; pmap->pszName != NULL ; pmap++ )
{
if ( idCtrl == pmap->id )
{
ATLTRACE( _T(" (%s)"), pmap->pszName );
} // if: control ID found
} // for: each control in the map
} // if: control names array specified
//
// Get the window class.
//
TCHAR szWindowClass[256];
::GetClassName( hwndCtrl, szWindowClass, (sizeof( szWindowClass ) / sizeof( TCHAR )) - 1 );
ATLTRACE( _T(" (%s)"), szWindowClass );
//
// Display the notification code.
//
ATLTRACE( _T(" wNotifyCode = %04.4X"), wNotifyCode );
if ( lstrcmp( szWindowClass, _T("Button") ) == 0 )
{
pmap = s_rgmapButtonMsgs;
}
else if ( lstrcmp( szWindowClass, _T("ComboBox") ) == 0 )
{
pmap = s_rgmapComboBoxMsgs;
}
else if ( lstrcmp( szWindowClass, _T("Edit") ) == 0 )
{
pmap = s_rgmapEditMsgs;
}
else if ( lstrcmp( szWindowClass, _T("ListBox")) == 0 )
{
pmap = s_rgmapListBoxMsgs;
}
else if ( lstrcmp(szWindowClass, _T("ScrollBar")) == 0 )
{
pmap = s_rgmapScrollBarMsgs;
}
else if ( lstrcmp(szWindowClass, _T("Static")) == 0 )
{
pmap = s_rgmapStaticMsgs;
}
else if ( lstrcmp(szWindowClass, WC_LISTVIEW) == 0 )
{
pmap = s_rgmapListViewMsgs;
}
else if ( lstrcmp(szWindowClass, WC_TREEVIEW) == 0 )
{
pmap = s_rgmapTreeViewMsgs;
}
else if ( lstrcmp(szWindowClass, WC_IPADDRESS) == 0 )
{
pmap = s_rgmapIPAddressMsgs;
}
else
{
pmap = NULL;
}
if ( pmap != NULL )
{
for ( ; pmap->pszName != NULL ; pmap++ )
{
if ( wNotifyCode == pmap->id )
{
ATLTRACE( _T(" (%s)"), pmap->pszName );
break;
} // if: code found
} // for: each code in the map
} // if: known control
ATLTRACE( _T("\n") );
bHandled = FALSE;
return 1;
} //*** DBG_OnCommand()
#endif // DBG && defined( _DBG_MSG_COMMAND )