📄 trace.cpp
字号:
//---------------------------------------------------------------------------
// Copyright (C) 1998, Interscope Ltd. All rights reserved.
// Reproduction or distribution of this program, or any portion of it,
// is permitted only if this header is kept as it is.
// For more information, contact:
//
// Interscope Ltd., 5 Culturii St., 5th floor, 4800 Baia Mare, Romania
// Phone/Fax: +40-62-215023
// E-mail: office@interscope.ro
//
// $Author: Levente Farkas $
// $Date: 5/12/98 11:50p $
// $Modtime: 4/27/98 6:51a $
// $Revision: 11 $
// $Archive: /Interscope/Thebe/InstallMaster/Trace.Cpp $
// $Workfile: Trace.Cpp $
//-----------------------------------------------------------------------
#ifdef __STDAFX__
#include "StdAfx.H"
#endif
#if defined(_DEBUG) || defined(__DEBUG__)
#include <StdIO.H>
#include <StdArg.H>
#include <TChar.H>
#ifdef __MFC__
#include <AfxPriv.H>
#endif
#include "AssertX.H"
#include "Trace.H"
//--- Debugee --------------------------------------------------------------
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#ifdef __MFC__
#define new DEBUG_NEW
#endif // __MFC__
#endif // _DEBUG
//--- Miscellaneous ------------------------------------------------------
#define MAX_TRACE_BUFF_SIZE 1024
//--- Current indent level -----------------------------------------------
#ifdef __cplusplus
int CTraceIndentLevel::m_nIndent =-1;
#endif
#if defined(_DEBUG) || defined(__DEBUG__)
//------------------------------------------------------------------------
// Pre :
// Post :
// Globals :
// I/O :
// Task : Format a printf style message and send it 2 the active debugger
//------------------------------------------------------------------------
void InterscopeTrace(LPCTSTR lpszFormat, ...)
{
int nBuf;
TCHAR szBuffer[MAX_TRACE_BUFF_SIZE];
va_list args;
va_start(args,lpszFormat);
nBuf =_vstprintf(szBuffer, lpszFormat, args);
ASSERTX(nBuf < sizeof(szBuffer));
va_end(args);
#ifdef __cplusplus
// Indenting stuff (only available in C++ code)
// Search 4 newlines and insert prefix before each one
static BOOL bStartNewLine =TRUE;
LPTSTR lpszNextLine;
for(LPTSTR lpszStart =szBuffer; *lpszStart; lpszStart =lpszNextLine+1)
{
if(bStartNewLine)
{
for(int i =0; i < CTraceIndentLevel::m_nIndent; i++)
OutputDebugString(_T(" "));
bStartNewLine =FALSE;
}
#ifndef _UNICODE
lpszNextLine =strchr(lpszStart,'\n');
#else
lpszNextLine =wcschr(lpszStart,'\n');
#endif
if(lpszNextLine)
{
// Terminate string at newline
*lpszNextLine ='\0';
bStartNewLine =TRUE;
}
OutputDebugString(lpszStart);
if(!lpszNextLine)
break;
OutputDebugString(_T("\n"));
}
#else
// Standard C trace code
_tprintf(szBuffer);
OutputDebugString(szBuffer);
#endif
}
#endif
#if defined(__MFC__) && (defined(_DEBUG) || defined(__DEBUG__))
//---------------------------------------------------------------------------
// Pre :
// Post :
// Globals :
// I/O :
// Task : Get window name in the form classname[HWND,title]
// Searches all the parents for a window with a title
//---------------------------------------------------------------------------
CString DebugName(CWnd *pWnd)
{
CString sTitle;
HWND hwnd =pWnd->GetSafeHwnd();
if(hwnd == NULL)
sTitle =_T("NULL");
else if(!::IsWindow(hwnd))
sTitle =_T("[bad window]");
else
{
sTitle =_T("[no title]");
for(CWnd *pw =pWnd; pw; pw =pw->GetParent())
{
if(pw->GetWindowTextLength() > 0)
{
pw->GetWindowText(sTitle);
break;
}
}
}
CString s;
s.Format(_T("%s[0x%04x,\"%s\"]"),
pWnd ? pWnd->GetRuntimeClass()->m_lpszClassName : _T("NULL"),
hwnd,
(LPCTSTR)sTitle);
return s;
}
#endif
#if defined(__MFC__) && (defined(_DEBUG) || defined(__DEBUG__))
// Human readable Windows message names
struct
{
UINT msg;
LPCTSTR name;
} MsgData[] =
{
{ WM_CREATE,_T("WM_CREATE") },
{ WM_DESTROY,_T("WM_DESTROY") },
{ WM_MOVE,_T("WM_MOVE") },
{ WM_SIZE,_T("WM_SIZE") },
{ WM_ACTIVATE,_T("WM_ACTIVATE") },
{ WM_SETFOCUS,_T("WM_SETFOCUS") },
{ WM_KILLFOCUS,_T("WM_KILLFOCUS") },
{ WM_ENABLE,_T("WM_ENABLE") },
{ WM_SETREDRAW,_T("WM_SETREDRAW") },
{ WM_SETTEXT,_T("WM_SETTEXT") },
{ WM_GETTEXT,_T("WM_GETTEXT") },
{ WM_GETTEXTLENGTH,_T("WM_GETTEXTLENGTH") },
{ WM_PAINT,_T("WM_PAINT") },
{ WM_CLOSE,_T("WM_CLOSE") },
{ WM_QUERYENDSESSION,_T("WM_QUERYENDSESSION") },
{ WM_QUIT,_T("WM_QUIT") },
{ WM_QUERYOPEN,_T("WM_QUERYOPEN") },
{ WM_ERASEBKGND,_T("WM_ERASEBKGND") },
{ WM_SYSCOLORCHANGE,_T("WM_SYSCOLORCHANGE") },
{ WM_ENDSESSION,_T("WM_ENDSESSION") },
{ WM_SHOWWINDOW,_T("WM_SHOWWINDOW") },
{ WM_WININICHANGE,_T("WM_WININICHANGE") },
{ WM_SETTINGCHANGE,_T("WM_SETTINGCHANGE") },
{ WM_DEVMODECHANGE,_T("WM_DEVMODECHANGE") },
{ WM_ACTIVATEAPP,_T("WM_ACTIVATEAPP") },
{ WM_FONTCHANGE,_T("WM_FONTCHANGE") },
{ WM_TIMECHANGE,_T("WM_TIMECHANGE") },
{ WM_CANCELMODE,_T("WM_CANCELMODE") },
{ WM_SETCURSOR,_T("WM_SETCURSOR") },
{ WM_MOUSEACTIVATE,_T("WM_MOUSEACTIVATE") },
{ WM_CHILDACTIVATE,_T("WM_CHILDACTIVATE") },
{ WM_QUEUESYNC,_T("WM_QUEUESYNC") },
{ WM_GETMINMAXINFO,_T("WM_GETMINMAXINFO") },
{ WM_PAINTICON,_T("WM_PAINTICON") },
{ WM_ICONERASEBKGND,_T("WM_ICONERASEBKGND") },
{ WM_NEXTDLGCTL,_T("WM_NEXTDLGCTL") },
{ WM_SPOOLERSTATUS,_T("WM_SPOOLERSTATUS") },
{ WM_DRAWITEM,_T("WM_DRAWITEM") },
{ WM_MEASUREITEM,_T("WM_MEASUREITEM") },
{ WM_DELETEITEM,_T("WM_DELETEITEM") },
{ WM_VKEYTOITEM,_T("WM_VKEYTOITEM") },
{ WM_CHARTOITEM,_T("WM_CHARTOITEM") },
{ WM_SETFONT,_T("WM_SETFONT") },
{ WM_GETFONT,_T("WM_GETFONT") },
{ WM_SETHOTKEY,_T("WM_SETHOTKEY") },
{ WM_GETHOTKEY,_T("WM_GETHOTKEY") },
{ WM_QUERYDRAGICON,_T("WM_QUERYDRAGICON") },
{ WM_COMPAREITEM,_T("WM_COMPAREITEM") },
{ WM_COMPACTING,_T("WM_COMPACTING") },
{ WM_COMMNOTIFY,_T("WM_COMMNOTIFY") },
{ WM_WINDOWPOSCHANGING,_T("WM_WINDOWPOSCHANGING") },
{ WM_WINDOWPOSCHANGED,_T("WM_WINDOWPOSCHANGED") },
{ WM_POWER,_T("WM_POWER") },
{ WM_COPYDATA,_T("WM_COPYDATA") },
{ WM_CANCELJOURNAL,_T("WM_CANCELJOURNAL") },
#if(WINVER >= 0x0400)
{ WM_NOTIFY,_T("WM_NOTIFY") },
{ WM_INPUTLANGCHANGEREQUEST,_T("WM_INPUTLANGCHANGEREQUEST") },
{ WM_INPUTLANGCHANGE,_T("WM_INPUTLANGCHANGE") },
{ WM_TCARD,_T("WM_TCARD") },
{ WM_HELP,_T("WM_HELP") },
{ WM_USERCHANGED,_T("WM_USERCHANGED") },
{ WM_NOTIFYFORMAT,_T("WM_NOTIFYFORMAT") },
{ WM_CONTEXTMENU,_T("WM_CONTEXTMENU") },
{ WM_STYLECHANGING,_T("WM_STYLECHANGING") },
{ WM_STYLECHANGED,_T("WM_STYLECHANGED") },
{ WM_DISPLAYCHANGE,_T("WM_DISPLAYCHANGE") },
{ WM_GETICON,_T("WM_GETICON") },
{ WM_SETICON,_T("WM_SETICON") },
#endif // WINVER >= 0x0400
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -