63 lines
1.8 KiB
C++
63 lines
1.8 KiB
C++
#pragma once
|
||
#include "GdCPP_Exports.h"
|
||
#include "IpHelper.h"
|
||
|
||
struct GDCPP_API sApp
|
||
{
|
||
// 当前执行文件的完整路径
|
||
fs::path ExeFullPath;
|
||
|
||
// 当前执行exe所在目录
|
||
fs::path ExeDir;
|
||
|
||
// Exe文件名,可以根据不同名称执行不同的内容
|
||
std::wstring wstrExeName;
|
||
|
||
// 工作目录,是Log、Setting目录的主目录
|
||
// 初始化默认等于ExeDir。
|
||
// 如果exe所在目录是Debug或Release,ExeDir就上移一层,到x64
|
||
// 应用层可以另外指定工作目录
|
||
fs::path WorkDir;
|
||
|
||
// 参数目录,默认为WorkDir下的Setting。应用层可以另外指定
|
||
fs::path SettingDir;
|
||
// Log目录,默认为WorkDir下的Log。应用层可以另外指定
|
||
fs::path LogDir;
|
||
|
||
// exe文件的版本
|
||
std::wstring exeFileVerStr;
|
||
|
||
std::wstring exeProductVerStr;
|
||
|
||
// exe的HINSTANCE
|
||
HINSTANCE hInstance_Exe=0;
|
||
|
||
CAdapterList NetAdapter;
|
||
|
||
// @brief 跟具体应用关系不大的常规初始操作,与应用相关的放到init()。
|
||
// 初始化CTick,获取exe路径,设置工作目录、Log目录、Dump。在InitInstance()开头调用
|
||
// @return 是否有错。没错返回0;已知错误:
|
||
virtual int preInit();
|
||
|
||
// 与应用相关的初始化,每个应用相差很大,
|
||
// 继承类不需要调用sApp::init(),只是给个参考。
|
||
// 通常先调整工作目录,初始化Log,后面的操作都需要用到Log了
|
||
virtual int init();
|
||
|
||
virtual int deinit();
|
||
|
||
// 初始化gdi用到的变量,
|
||
// 保存下来用于在deinit()里判断是否初始化过gdi
|
||
ULONG_PTR m_gdiplusToken=0;
|
||
|
||
// 初始化socket用到的变量,
|
||
// 保存下来用于在deinit()里用判断是否初始化过socket
|
||
WSADATA wsaData={0,0};
|
||
|
||
void initGDI();
|
||
bool initSocket();
|
||
virtual void RestartWindows();
|
||
virtual void ShutdownWindows();
|
||
};
|
||
|