Files
wnmj-normal/Servers/服务器组件/协调服务器/CorrespondServerDlg.cpp
2026-03-03 13:56:44 +08:00

196 lines
3.8 KiB
C++

#include "Stdafx.h"
#include "Resource.h"
#include "CorrespondServerDlg.h"
#include "ServerCtrlDlg.h"
//////////////////////////////////////////////////////////////////////////////////
BEGIN_MESSAGE_MAP(CCorrespondServerDlg, CDialog)
ON_WM_QUERYENDSESSION()
ON_BN_CLICKED(IDC_STOP_SERVICE, OnBnClickedStopService)
ON_BN_CLICKED(IDC_START_SERVICE, OnBnClickedStartService)
ON_BN_CLICKED(IDC_SYSTEM_OPTION, OnBnClickedSystemOption)
END_MESSAGE_MAP()
//////////////////////////////////////////////////////////////////////////////////
//构造函数
CCorrespondServerDlg::CCorrespondServerDlg() : CDialog(IDD_DLG_CORRESPOND_SERVER)
{
}
//析构函数
CCorrespondServerDlg::~CCorrespondServerDlg()
{
}
//控件绑定
VOID CCorrespondServerDlg::DoDataExchange(CDataExchange * pDX)
{
__super::DoDataExchange(pDX);
DDX_Control(pDX, IDC_TRACE_MESSAGE, m_TraceServiceControl);
}
//初始化函数
BOOL CCorrespondServerDlg::OnInitDialog()
{
__super::OnInitDialog();
//设置标题
SetWindowText(TEXT("协调服务器 -- [ 停止 ]"));
//设置图标
HICON hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
SetIcon(hIcon,TRUE);
SetIcon(hIcon,FALSE);
//设置组件
m_ServiceUnits.SetServiceUnitsSink(this);
return TRUE;
}
//确定消息
VOID CCorrespondServerDlg::OnOK()
{
return;
}
//取消函数
VOID CCorrespondServerDlg::OnCancel()
{
//关闭询问
if (m_ServiceUnits.GetServiceStatus()!=ServiceStatus_Stop)
{
LPCTSTR pszQuestion=TEXT("协调服务器正在运行中,您确实要关闭服务器吗?");
if (AfxMessageBox(pszQuestion,MB_YESNO|MB_DEFBUTTON2|MB_ICONQUESTION)!=IDYES) return;
}
//停止服务
m_ServiceUnits.ConcludeService();
__super::OnCancel();
}
//消息解释
BOOL CCorrespondServerDlg::PreTranslateMessage(MSG * pMsg)
{
//按键过滤
if ((pMsg->message==WM_KEYDOWN)&&(pMsg->wParam==VK_ESCAPE))
{
return TRUE;
}
return __super::PreTranslateMessage(pMsg);
}
//服务状态
VOID CCorrespondServerDlg::OnServiceUnitsStatus(enServiceStatus ServiceStatus)
{
//状态设置
switch (ServiceStatus)
{
case ServiceStatus_Stop: //停止状态
{
//设置标题
SetWindowText(TEXT("协调服务器 -- [ 停止 ]"));
//设置按钮
GetDlgItem(IDC_STOP_SERVICE)->EnableWindow(FALSE);
GetDlgItem(IDC_START_SERVICE)->EnableWindow(TRUE);
//提示信息
LPCTSTR pszDescribe=TEXT("服务停止成功");
CTraceService::TraceString(pszDescribe,TraceLevel_Normal);
break;
}
case ServiceStatus_Config: //配置状态
{
//设置标题
SetWindowText(TEXT("协调服务器 -- [ 初始化 ]"));
//设置按钮
GetDlgItem(IDC_STOP_SERVICE)->EnableWindow(TRUE);
GetDlgItem(IDC_START_SERVICE)->EnableWindow(FALSE);
//提示信息
LPCTSTR pszDescribe=TEXT("正在初始化组件...");
CTraceService::TraceString(pszDescribe,TraceLevel_Normal);
break;
}
case ServiceStatus_Service: //服务状态
{
//设置标题
SetWindowText(TEXT("协调服务器 -- [ 运行 ]"));
//设置按钮
GetDlgItem(IDC_STOP_SERVICE)->EnableWindow(TRUE);
GetDlgItem(IDC_START_SERVICE)->EnableWindow(FALSE);
//提示信息
LPCTSTR pszDescribe=TEXT("服务启动成功");
CTraceService::TraceString(pszDescribe,TraceLevel_Normal);
break;
}
}
return;
}
//启动服务
VOID CCorrespondServerDlg::OnBnClickedStartService()
{
//启动服务
try
{
m_ServiceUnits.StartService();
}
catch (...)
{
ASSERT(FALSE);
}
return;
}
//停止服务
VOID CCorrespondServerDlg::OnBnClickedStopService()
{
//停止服务
try
{
m_ServiceUnits.ConcludeService();
}
catch (...)
{
ASSERT(FALSE);
}
return;
}
//系统配置;
VOID CCorrespondServerDlg::OnBnClickedSystemOption()
{
CServerCtrlDlg mDlg(this);
mDlg.DoModal();
}
//关闭询问
BOOL CCorrespondServerDlg::OnQueryEndSession()
{
//提示消息
if (m_ServiceUnits.GetServiceStatus()!=ServiceStatus_Stop)
{
CTraceService::TraceString(TEXT("服务正在运行中,系统要求注销回话请求失败"),TraceLevel_Warning);
return FALSE;
}
return TRUE;
}
//////////////////////////////////////////////////////////////////////////////////