Files
Sun1602/Server/SolarConsole/SolarConsole.h
T
2022-10-26 12:25:11 +08:00

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__