⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trace.cpp

📁 cab文件压缩、解压程序源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------
// 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 + -