90 lines
2.5 KiB
C++
90 lines
2.5 KiB
C++
#ifndef __SOLAR_CONSOLE_H__
|
|
#define __SOLAR_CONSOLE_H__
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "isolarconsole.h"
|
|
#include "ISolarConsole_Define.h"
|
|
|
|
class SolarLog;
|
|
class ListControl;
|
|
class SolarConsole;
|
|
struct SOLAR_CONSOLE_DESC;
|
|
|
|
class SolarConsole : public ISolarConsole
|
|
{
|
|
public:
|
|
SolarConsole();
|
|
virtual ~SolarConsole();
|
|
|
|
/// Basic IUnknown Interface
|
|
virtual HRESULT __stdcall QueryInterface( const IID& iid, void ** ppv );
|
|
virtual ULONG __stdcall AddRef();
|
|
virtual ULONG __stdcall Release();
|
|
|
|
/// external Interface
|
|
virtual BOOL __stdcall CreateConsole( const SOLAR_CONSOLE_DESC & desc, HWND * hWndOut );
|
|
virtual VOID __stdcall DestroyConsole();
|
|
virtual VOID __stdcall OutputDisplay( char * szString );
|
|
virtual VOID __stdcall OutputDisplayEx( char * szString, DWORD color );
|
|
virtual VOID __stdcall OutputDisplayArg( char * szString, ... );
|
|
virtual VOID __stdcall OutputFile( char * szString );
|
|
virtual VOID __stdcall MessageLoop();
|
|
virtual BOOL __stdcall MessageUpdate();
|
|
|
|
/// internal public Interface
|
|
|
|
VOID InitInstance( HINSTANCE hInstance, LPLOGFONT pLogFont, char * pszConsoleTitle, int width, int height );
|
|
LRESULT CALLBACK WindowProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam );
|
|
LRESULT CALLBACK EditProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam );
|
|
|
|
private:
|
|
VOID ExecuteMenu( WORD idx );
|
|
VOID CreateListControl( HINSTANCE hInstance, LPLOGFONT pLogFont, int x, int y, int width, int height );
|
|
VOID CreateEditControl( HINSTANCE hInstance, int x, int y, int width, int height );
|
|
VOID AttachMenu();
|
|
BOOL IsRefreshTimeOut();
|
|
VOID DrawTimeoutUpdate();
|
|
VOID CallBackCommand( char * pmsg );
|
|
|
|
|
|
enum
|
|
{
|
|
EDITBOX_HEIGHT = 30,
|
|
MAX_NAME_LENGTH = 64,
|
|
MAX_CUSTOM_ID_LIMIT = 100,
|
|
MAX_OUTPUTDISPLAYBUFFER_LENGTH = 512,
|
|
};
|
|
struct MENU_INFO
|
|
{
|
|
char pszMenuName[MAX_NAME_LENGTH];
|
|
VOID (*cbMenuCommand)();
|
|
};
|
|
|
|
/// internal private Interface
|
|
MSG m_msg;
|
|
LONG m_cRef;
|
|
|
|
BOOL m_bInited;
|
|
|
|
WORD m_wMenuNum;
|
|
MENU_INFO * m_pMenuInfo;
|
|
DWORD m_dwRefreshLastCheckTime;
|
|
DWORD m_dwRefreshRateDelayTime;
|
|
DWORD m_dwNoMoreRefreshDelayTime;
|
|
DWORD m_dwConsoleStyle;
|
|
HANDLE m_hDrawingEvent;
|
|
fnCommandFunc m_fnCommand;
|
|
HWND m_hWnd;
|
|
HWND m_hEdit;
|
|
WNDPROC m_fnOldCmdEditProc;
|
|
ListControl * m_pListControl;
|
|
SolarLog * m_pSolarLog;
|
|
IUnknown * m_pUnkFTM;
|
|
|
|
};
|
|
|
|
extern SolarConsole * g_pConsole;
|
|
|
|
#endif // __SOLAR_CONSOLE_H__
|