Files
2026-03-03 13:56:44 +08:00

137 lines
3.0 KiB
C++

#ifndef TRACE_SERVICE_HEAD_FILE
#define TRACE_SERVICE_HEAD_FILE
#pragma once
#include "KernelEngineHead.h"
//////////////////////////////////////////////////////////////////////////
//追踪服务
class KERNEL_ENGINE_CLASS CTraceService
{
//函数定义
protected:
//构造函数
CTraceService();
//服务配置
public:
//设置服务
static bool SetTraceService(IUnknownEx * pIUnknownEx);
//获取服务
static VOID * GetTraceService(const IID & Guid, DWORD dwQueryVer);
//获取服务
static VOID * GetTraceServiceManager(const IID & Guid, DWORD dwQueryVer);
//状态管理
public:
//追踪状态
static bool IsEnableTrace(enTraceLevel TraceLevel);
//追踪控制
static bool EnableTrace(enTraceLevel TraceLevel, bool bEnableTrace);
//全体追踪控制
static bool EnableAllTrace(bool bEnableTrace);
//功能函数
public:
//追踪信息
static bool TraceString(LPCTSTR pszString, enTraceLevel TraceLevel);
//格式化追踪信息
static bool TraceFormat( enTraceLevel TraceLevel, LPCTSTR pszFormat,... );
};
//////////////////////////////////////////////////////////////////////////
//追踪服务
class KERNEL_ENGINE_CLASS CTraceServiceControl : public CRichEditCtrl, public ITraceService
{
//辅助变量
protected:
LONG m_lMaxLineCount; //最大行数
LONG m_lReserveLineCount; //保留行数
BYTE m_cbBuffer[MAX_ASYNCHRONISM_DATA]; //临时对象
//组件变量
protected:
CWHDataQueue m_DataQueue; //数据队列
CCriticalSection m_CriticalSection; //同步对象
//函数定义
public:
//构造函数
CTraceServiceControl();
//析构函数
virtual ~CTraceServiceControl();
//基础接口
public:
//释放对象
virtual VOID Release() { return; }
//接口查询
virtual VOID * QueryInterface(const IID & Guid, DWORD dwQueryVer);
//信息接口
public:
//追踪信息
virtual bool TraceString(LPCTSTR pszString, enTraceLevel TraceLevel);
//重载函数
protected:
//绑定函数
virtual VOID PreSubclassWindow();
//功能函数
public:
//加载消息
bool LoadMessage(LPCTSTR pszFileName);
//保存信息
bool SaveMessage(LPCTSTR pszFileName);
//设置参数
bool SetParameter(LONG lMaxLineCount, LONG lReserveLineCount);
//辅助函数
private:
//配置服务
VOID InitializeService();
//获取颜色
COLORREF GetTraceColor(enTraceLevel TraceLevel);
//插入字串
bool InsertString(LPCTSTR pszString, CHARFORMAT2 & CharFormat);
//回调函数
private:
//加载回调
static DWORD CALLBACK LoadCallBack(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG * pcb);
//保存回调
static DWORD CALLBACK SaveCallBack(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG * pcb);
//菜单命令
protected:
//删除信息
VOID OnClearAll();
//全部选择
VOID OnSelectAll();
//拷贝字符
VOID OnCopyString();
//保存信息
VOID OnSaveString();
//删除字符
VOID OnDeleteString();
//消息映射
protected:
//建立消息
INT OnCreate(LPCREATESTRUCT lpCreateStruct);
//右键消息
VOID OnRButtonDown(UINT nFlags, CPoint point);
//窗口销毁
void OnDestroy();
//追踪消息
LRESULT OnTraceServiceMessage(WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()
};
//////////////////////////////////////////////////////////////////////////
#endif