257 lines
7.9 KiB
C++
257 lines
7.9 KiB
C++
// SettingDlg.cpp : 实现文件
|
||
//
|
||
|
||
#include "stdafx.h"
|
||
#include "2015Remote.h"
|
||
#include "SettingDlg.h"
|
||
#include "afxdialogex.h"
|
||
#include "client/CursorInfo.h"
|
||
#include "common/location.h"
|
||
|
||
// CSettingDlg 对话框
|
||
|
||
IMPLEMENT_DYNAMIC(CSettingDlg, CDialog)
|
||
|
||
CSettingDlg::CSettingDlg(CWnd* pParent)
|
||
: CDialog(CSettingDlg::IDD, pParent)
|
||
, m_nListenPort("6543")
|
||
, m_nMax_Connect(0)
|
||
, m_sScreenCapture(_T("GDI"))
|
||
, m_sScreenCompress(_T("屏幕差异算法"))
|
||
, m_nReportInterval(5)
|
||
, m_sSoftwareDetect(_T("摄像头"))
|
||
, m_sPublicIP(_T(""))
|
||
, m_sUdpOption(_T(""))
|
||
, m_nFrpPort(7000)
|
||
, m_sFrpToken(_T(""))
|
||
{
|
||
}
|
||
|
||
CSettingDlg::~CSettingDlg()
|
||
{
|
||
}
|
||
|
||
void CSettingDlg::DoDataExchange(CDataExchange* pDX)
|
||
{
|
||
CDialog::DoDataExchange(pDX);
|
||
DDX_Text(pDX, IDC_EDIT_PORT, m_nListenPort);
|
||
DDV_MaxChars(pDX, m_nListenPort, 32);
|
||
DDX_Text(pDX, IDC_EDIT_MAX, m_nMax_Connect);
|
||
DDX_Control(pDX, IDC_BUTTON_SETTINGAPPLY, m_ApplyButton);
|
||
DDX_Control(pDX, IDC_COMBO_SCREEN_CAPTURE, m_ComboScreenCapture);
|
||
DDX_CBString(pDX, IDC_COMBO_SCREEN_CAPTURE, m_sScreenCapture);
|
||
DDV_MaxChars(pDX, m_sScreenCapture, 32);
|
||
DDX_Control(pDX, IDC_COMBO_SCREEN_COMPRESS, m_ComboScreenCompress);
|
||
DDX_CBString(pDX, IDC_COMBO_SCREEN_COMPRESS, m_sScreenCompress);
|
||
DDX_Control(pDX, IDC_EDIT_REPORTINTERVAL, m_EditReportInterval);
|
||
DDX_Text(pDX, IDC_EDIT_REPORTINTERVAL, m_nReportInterval);
|
||
DDV_MinMaxInt(pDX, m_nReportInterval, 0, 3600);
|
||
DDX_Control(pDX, IDC_COMBO_SOFTWAREDETECT, m_ComboSoftwareDetect);
|
||
DDX_CBString(pDX, IDC_COMBO_SOFTWAREDETECT, m_sSoftwareDetect);
|
||
DDV_MaxChars(pDX, m_sSoftwareDetect, 256);
|
||
DDX_Control(pDX, IDC_EDIT_PUBLIC_IP, m_EditPublicIP);
|
||
DDX_Text(pDX, IDC_EDIT_PUBLIC_IP, m_sPublicIP);
|
||
DDV_MaxChars(pDX, m_sPublicIP, 100);
|
||
DDX_Control(pDX, IDC_EDIT_UDP_OPTION, m_EditUdpOption);
|
||
DDX_Text(pDX, IDC_EDIT_UDP_OPTION, m_sUdpOption);
|
||
DDV_MaxChars(pDX, m_sUdpOption, 24);
|
||
DDX_Control(pDX, IDC_EDIT_FRP_PORT, m_EditFrpPort);
|
||
DDX_Text(pDX, IDC_EDIT_FRP_PORT, m_nFrpPort);
|
||
DDV_MinMaxInt(pDX, m_nFrpPort, 1, 65535);
|
||
DDX_Control(pDX, IDC_EDIT_FRP_TOKEN, m_EditFrpToken);
|
||
DDX_Text(pDX, IDC_EDIT_FRP_TOKEN, m_sFrpToken);
|
||
DDV_MaxChars(pDX, m_sFrpToken, 24);
|
||
DDX_Control(pDX, IDC_COMBO_VIDEO_WALL, m_ComboVideoWall);
|
||
}
|
||
|
||
BEGIN_MESSAGE_MAP(CSettingDlg, CDialog)
|
||
ON_BN_CLICKED(IDC_BUTTON_SETTINGAPPLY, &CSettingDlg::OnBnClickedButtonSettingapply)
|
||
ON_EN_CHANGE(IDC_EDIT_PORT, &CSettingDlg::OnEnChangeEditPort)
|
||
ON_EN_CHANGE(IDC_EDIT_MAX, &CSettingDlg::OnEnChangeEditMax)
|
||
ON_BN_CLICKED(IDC_RADIO_ALL_SCREEN, &CSettingDlg::OnBnClickedRadioAllScreen)
|
||
ON_BN_CLICKED(IDC_RADIO_MAIN_SCREEN, &CSettingDlg::OnBnClickedRadioMainScreen)
|
||
ON_BN_CLICKED(IDC_RADIO_FRP_OFF, &CSettingDlg::OnBnClickedRadioFrpOff)
|
||
ON_BN_CLICKED(IDC_RADIO_FRP_ON, &CSettingDlg::OnBnClickedRadioFrpOn)
|
||
END_MESSAGE_MAP()
|
||
|
||
|
||
// CSettingDlg 消息处理程序
|
||
|
||
|
||
BOOL CSettingDlg::OnInitDialog()
|
||
{
|
||
CDialog::OnInitDialog();
|
||
IPConverter cvt;
|
||
m_sPublicIP = THIS_CFG.GetStr("settings", "master", "").c_str();
|
||
m_sPublicIP = m_sPublicIP.IsEmpty() ? cvt.getPublicIP().c_str() : m_sPublicIP;
|
||
std::string nPort = THIS_CFG.GetStr("settings", "ghost", "6543");
|
||
m_sUdpOption = THIS_CFG.GetStr("settings", "UDPOption", "0").c_str();
|
||
|
||
int DXGI = THIS_CFG.GetInt("settings", "DXGI");
|
||
|
||
CString algo = THIS_CFG.GetStr("settings", "ScreenCompress", "").c_str();
|
||
|
||
m_nListenPort = nPort.c_str();
|
||
|
||
int n = algo.IsEmpty() ? ALGORITHM_DIFF : atoi(algo.GetString());
|
||
switch (n)
|
||
{
|
||
case ALGORITHM_GRAY:
|
||
m_sScreenCompress = "灰度图像传输";
|
||
break;
|
||
case ALGORITHM_DIFF:
|
||
m_sScreenCompress = "屏幕差异算法";
|
||
break;
|
||
case ALGORITHM_H264:
|
||
m_sScreenCompress = "H264压缩算法";
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
m_ComboScreenCompress.InsertString(ALGORITHM_GRAY, "灰度图像传输");
|
||
m_ComboScreenCompress.InsertString(ALGORITHM_DIFF, "屏幕差异算法");
|
||
m_ComboScreenCompress.InsertString(ALGORITHM_H264, "H264压缩算法");
|
||
|
||
m_ComboScreenCapture.InsertString(0, "GDI");
|
||
m_ComboScreenCapture.InsertString(1, "DXGI");
|
||
m_ComboScreenCapture.InsertString(2, "VIRTUAL");
|
||
m_sScreenCapture = DXGI==1 ? "DXGI" : (DXGI == 2 ? "VIRTUAL" : "GDI");
|
||
|
||
m_ComboSoftwareDetect.InsertString(SOFTWARE_CAMERA, "摄像头");
|
||
m_ComboSoftwareDetect.InsertString(SOFTWARE_TELEGRAM, "电报");
|
||
auto str = THIS_CFG.GetStr("settings", "ReportInterval", "5");
|
||
m_nReportInterval = atoi(str.c_str());
|
||
n = THIS_CFG.GetInt("settings", "SoftwareDetect");
|
||
switch (n)
|
||
{
|
||
case SOFTWARE_CAMERA:
|
||
m_sSoftwareDetect = "摄像头";
|
||
break;
|
||
case SOFTWARE_TELEGRAM:
|
||
m_sSoftwareDetect = "电报";
|
||
break;
|
||
default:
|
||
m_sSoftwareDetect = "摄像头";
|
||
break;
|
||
}
|
||
BOOL all = THIS_CFG.GetInt("settings", "MultiScreen");
|
||
((CButton*)GetDlgItem(IDC_RADIO_ALL_SCREEN))->SetCheck(!all);
|
||
((CButton*)GetDlgItem(IDC_RADIO_MAIN_SCREEN))->SetCheck(all);
|
||
|
||
BOOL frp = THIS_CFG.GetInt("frp", "UseFrp");
|
||
((CButton*)GetDlgItem(IDC_RADIO_FRP_OFF))->SetCheck(!frp);
|
||
((CButton*)GetDlgItem(IDC_RADIO_FRP_ON))->SetCheck(frp);
|
||
m_nFrpPort = THIS_CFG.GetInt("frp", "server_port", 7000);
|
||
m_sFrpToken = THIS_CFG.GetStr("frp", "token").c_str();
|
||
|
||
int size = THIS_CFG.GetInt("settings", "VideoWallSize");
|
||
m_ComboVideoWall.InsertString(0, "无");
|
||
m_ComboVideoWall.InsertString(1, "2 x 2");
|
||
m_ComboVideoWall.InsertString(2, "3 x 3");
|
||
m_ComboVideoWall.InsertString(3, "4 x 4");
|
||
m_ComboVideoWall.InsertString(4, "5 x 5");
|
||
if (size < 1 || size > 5) size = 1;
|
||
m_ComboVideoWall.SetCurSel(size-1);
|
||
|
||
UpdateData(FALSE);
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
|
||
void CSettingDlg::OnBnClickedButtonSettingapply()
|
||
{
|
||
UpdateData(TRUE);
|
||
THIS_CFG.SetStr("settings", "master", m_sPublicIP.GetBuffer());
|
||
THIS_CFG.SetStr("settings", "ghost", m_nListenPort.GetString());
|
||
THIS_CFG.SetStr("settings", "UDPOption", m_sUdpOption.GetString());
|
||
|
||
int n = m_ComboScreenCapture.GetCurSel();
|
||
THIS_CFG.SetInt("settings", "DXGI", n);
|
||
|
||
n = m_ComboScreenCompress.GetCurSel();
|
||
THIS_CFG.SetInt("settings", "ScreenCompress", n);
|
||
|
||
THIS_CFG.SetInt("settings", "ReportInterval", m_nReportInterval);
|
||
n = m_ComboSoftwareDetect.GetCurSel();
|
||
THIS_CFG.SetInt("settings", "SoftwareDetect", n);
|
||
|
||
BOOL all = ((CButton*)GetDlgItem(IDC_RADIO_MAIN_SCREEN))->GetCheck();
|
||
THIS_CFG.SetInt("settings", "MultiScreen", all);
|
||
|
||
BOOL frp = ((CButton*)GetDlgItem(IDC_RADIO_FRP_ON))->GetCheck();
|
||
THIS_CFG.SetInt("frp", "UseFrp", frp);
|
||
THIS_CFG.SetInt("frp", "server_port", m_nFrpPort);
|
||
THIS_CFG.SetStr("frp", "token", m_sFrpToken.GetString());
|
||
|
||
THIS_CFG.SetInt("settings", "VideoWallSize", m_ComboVideoWall.GetCurSel()+1);
|
||
|
||
m_ApplyButton.EnableWindow(FALSE);
|
||
m_ApplyButton.ShowWindow(SW_HIDE);
|
||
}
|
||
|
||
|
||
void CSettingDlg::OnEnChangeEditPort()
|
||
{
|
||
// TODO: 如果该控件是 RICHEDIT 控件,它将不
|
||
// 发送此通知,除非重写 CDialog::OnInitDialog()
|
||
// 函数并调用 CRichEditCtrl().SetEventMask(),
|
||
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
|
||
|
||
// TODO: 在此添加控件通知处理程序代码
|
||
|
||
// 给Button添加变量
|
||
m_ApplyButton.ShowWindow(SW_NORMAL);
|
||
m_ApplyButton.EnableWindow(TRUE);
|
||
}
|
||
|
||
void CSettingDlg::OnEnChangeEditMax()
|
||
{
|
||
// TODO: 如果该控件是 RICHEDIT 控件,它将不
|
||
// 发送此通知,除非重写 CDialog::OnInitDialog()
|
||
// 函数并调用 CRichEditCtrl().SetEventMask(),
|
||
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
|
||
|
||
// TODO: 在此添加控件通知处理程序代码
|
||
HWND hApplyButton = ::GetDlgItem(m_hWnd,IDC_BUTTON_SETTINGAPPLY);
|
||
|
||
::ShowWindow(hApplyButton,SW_NORMAL);
|
||
::EnableWindow(hApplyButton,TRUE);
|
||
}
|
||
|
||
|
||
void CSettingDlg::OnOK()
|
||
{
|
||
OnBnClickedButtonSettingapply();
|
||
|
||
CDialog::OnOK();
|
||
}
|
||
|
||
|
||
void CSettingDlg::OnBnClickedRadioAllScreen()
|
||
{
|
||
BOOL b = ((CButton*)GetDlgItem(IDC_RADIO_ALL_SCREEN))->GetCheck();
|
||
((CButton*)GetDlgItem(IDC_RADIO_MAIN_SCREEN))->SetCheck(!b);
|
||
}
|
||
|
||
|
||
void CSettingDlg::OnBnClickedRadioMainScreen()
|
||
{
|
||
BOOL b = ((CButton*)GetDlgItem(IDC_RADIO_MAIN_SCREEN))->GetCheck();
|
||
((CButton*)GetDlgItem(IDC_RADIO_ALL_SCREEN))->SetCheck(!b);
|
||
}
|
||
|
||
|
||
void CSettingDlg::OnBnClickedRadioFrpOff()
|
||
{
|
||
BOOL b = ((CButton*)GetDlgItem(IDC_RADIO_FRP_OFF))->GetCheck();
|
||
((CButton*)GetDlgItem(IDC_RADIO_FRP_ON))->SetCheck(!b);
|
||
}
|
||
|
||
|
||
void CSettingDlg::OnBnClickedRadioFrpOn()
|
||
{
|
||
BOOL b = ((CButton*)GetDlgItem(IDC_RADIO_FRP_ON))->GetCheck();
|
||
((CButton*)GetDlgItem(IDC_RADIO_FRP_OFF))->SetCheck(!b);
|
||
}
|