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

📄 dbgconsole.h

📁 小型的3D游戏引擎
💻 H
字号:
#ifndef _DBGCONSOLE_H_
#define _DBGCONSOLE_H_
#include <windows.h>
#include <cstdio>

//#define DEBUGMODE

class GcDebugConsole
{
	public:
		/*DebugConsole()
		{
		
		}*/
		
		GcDebugConsole( char * title )
		{
#ifdef DEBUGMODE
			AllocConsole();
			SetConsoleTitle(title);

			m_file = fopen("debug.txt", "w");
#endif
		}

		~GcDebugConsole()
		{
#ifdef DEBUGMODE		
			FreeConsole();
			if( m_file )
				fclose(m_file);
#endif
		}

		void Write( char * fmt, ... )
		{
#ifdef DEBUGMODE
			char s[300];
			va_list argptr;
			//int cnt;

			//va_start(argptr, fmt);
			//cnt = s(s, fmt, argptr);
			//va_end(argptr);

			va_start(argptr, fmt);
			vsprintf(s, fmt, argptr);
			va_end(argptr);

			strcat(s, "\n");

			DWORD CharsWritten;
				
			WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), s, strlen(s), &CharsWritten, NULL);

			
			if( m_file )
				fprintf(m_file, s);
#endif
		}

		void Clear()
		{
#ifdef DEBUGMODE			
			HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
			COORD coord = {0, 0};
			DWORD count;

			CONSOLE_SCREEN_BUFFER_INFO csbi;
			GetConsoleScreenBufferInfo(hStdOut, &csbi);

			FillConsoleOutputCharacter(hStdOut, ' ', csbi.dwSize.X * csbi.dwSize.Y, coord, &count);

			SetConsoleCursorPosition(hStdOut, coord);
#endif
		}

		void Move( int x, int y )
		{
#ifdef DEBUGMODE
			/*HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
			CONSOLE_SCREEN_BUFFER_INFO info;
			
			GetConsoleScreenBufferInfo(handle, &info);

			info.srWindow.Left = 0;
			info.srWindow.Top = 0;
			info.srWindow.Right = 50;
			info.srWindow.Bottom = 50;

			SetConsoleWindowInfo(handle, true, &info.srWindow);
			
			/*RECT rc = {0, 0, width, height};
			int centerX;
			int centerY;
  
			/* Adjust that to a size that includes the border, etc. 
			::AdjustWindowRectEx (&rc, WS_OVERLAPPEDWINDOW, ::GetMenu (m_hwnd) != NULL, 0);  /* Extended style of the main window 
  
			centerX = (::GetSystemMetrics (SM_CXFULLSCREEN) / 2) - (abs (rc.left) + rc.right) / 2; 
			centerY = (::GetSystemMetrics (SM_CYFULLSCREEN) / 2) - (abs (rc.top) + rc.bottom) / 2; 
			//centerX = width
  
			MoveWindow(m_hwnd, x, y, (rc.right - rc.left), (rc.bottom - rc.top), TRUE);*/
#endif
		}

	private:
		FILE * m_file;
};


#endif 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -