123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290 |
- // DlgService.cpp: 实现文件
- //
- #include "stdafx.h"
- #include "SATHelper.h"
- #include "DlgService.h"
- #include "afxdialogex.h"
- #include "SATClient.h"
- //#include "SATProtocol.h"
- // CDlgService 对话框
- IMPLEMENT_DYNAMIC(CDlgService, CDialogEx)
- CDlgService::CDlgService(CWnd* pParent /*=nullptr*/)
- : CDialogEx(IDD_DLG_SERVICE, pParent)
- {
- }
- CDlgService::~CDlgService()
- {
- }
- void CDlgService::DoDataExchange(CDataExchange* pDX)
- {
- CDialogEx::DoDataExchange(pDX);
- DDX_Control(pDX, IDC_LIST_DEVICES, m_listDevices);
- DDX_Control(pDX, IDC_LIST_TASK, m_listTask);
- DDX_Control(pDX, BTN_MODIFY_RUNNER_NAME, m_btnModify);
- DDX_Control(pDX, BTN_ADD_ANDROID, m_btnAddAndroid);
- }
- BEGIN_MESSAGE_MAP(CDlgService, CDialogEx)
- ON_WM_PAINT()
- ON_WM_CTLCOLOR()
- ON_BN_CLICKED(BTN_MODIFY_RUNNER_NAME, &CDlgService::OnBnClickedModifyRunnerName)
- ON_BN_CLICKED(BTN_ADD_ANDROID, &CDlgService::OnBnClickedAddAndroid)
- ON_WM_TIMER()
- END_MESSAGE_MAP()
- // CDlgService 消息处理程序
- BOOL CDlgService::OnInitDialog()
- {
- CDialogEx::OnInitDialog();
- // TODO: 在此添加额外的初始化
- // 做为子窗口,这里设置透明度没有任何效果;
- // SetLayeredWindowAttributes(RGB(1, 2, 3), 0, LWA_COLORKEY/*|LWA_ALPHA*/);
- InitCtrl();
- FillData2Ctrl();
- #if 0
- // 5秒刷新一次;
- SetTimer(0, 5000, NULL);
- SetTimer(1, 10000, NULL);
- #else
- std::thread t([](CDlgService *p) {
- while (true)
- {
- std::this_thread::sleep_for(std::chrono::milliseconds(1500));
- {
- CSATClient::GetInstance()->TCPQueryDevices(FALSE);
- int nIndex = 0;
- TCHAR szValue[MAX_PATH] = { 0 };
- p->m_listDevices.DeleteAllItems();
- for (std::vector<SATPROTO::Device>::iterator it = SATData::devices.begin(); it != SATData::devices.end(); it++) {
- _itoa_s(nIndex, szValue, 10);
- p->m_listDevices.InsertItem(nIndex, szValue);
- if (it->nType == 0)
- p->m_listDevices.SetItemText(nIndex, 1, "虚拟");
- else if (it->nType == 1)
- p->m_listDevices.SetItemText(nIndex, 1, "USB");
- else if (it->nType == 2)
- p->m_listDevices.SetItemText(nIndex, 1, "网络");
- p->m_listDevices.SetItemText(nIndex, 2, it->szName);
- if (it->nStatus == 0)
- p->m_listDevices.SetItemText(nIndex, 3, "在线");
- else if (it->nStatus == 1)
- p->m_listDevices.SetItemText(nIndex, 3, "离线");
- else if ( it->nStatus == 2 )
- p->m_listDevices.SetItemText(nIndex, 3, "掉线");
- if (it->nUsageState == 0)
- p->m_listDevices.SetItemText(nIndex, 4, "空闲");
- else if (it->nUsageState == 1)
- p->m_listDevices.SetItemText(nIndex, 4, "繁忙");
- nIndex++;
- }
- }
-
- std::this_thread::sleep_for(std::chrono::milliseconds(1500));
- {
- CSATClient::GetInstance()->TCPQueryTasks(FALSE);
- int nIndex = 0;
- p->m_listTask.DeleteAllItems();
- TCHAR szValue[MAX_PATH] = { 0 };
- for (int i = 0; i < SATData::task_resp.nSize; i++) {
- // 任务No;
- _itoa_s(SATData::task_resp.ssTasks[i].nTaskId, szValue, 10);
- p->m_listTask.InsertItem(nIndex, szValue);
- p->m_listTask.SetItemText(nIndex, 1, SATData::task_resp.ssTasks[i].szTaskNo);
- p->m_listTask.SetItemText(nIndex, 2, SATData::task_resp.ssTasks[i].szTaskName);
- if (SATData::task_resp.ssTasks[i].nStatus == 0)
- p->m_listTask.SetItemText(nIndex, 3, "未执行");
- else if (SATData::task_resp.ssTasks[i].nStatus == 1)
- p->m_listTask.SetItemText(nIndex, 3, "执行中");
- else if (SATData::task_resp.ssTasks[i].nStatus == 2)
- p->m_listTask.SetItemText(nIndex, 3, "完成");
- nIndex++;
- }
- }
- }
- },this);
- t.detach();
- #endif
- return TRUE; // return TRUE unless you set the focus to a control
- // 异常: OCX 属性页应返回 FALSE
- }
- void CDlgService::OnPaint()
- {
- CPaintDC dc(this); // device context for painting
- // TODO: 在此处添加消息处理程序代码
- // 不为绘图消息调用 CDialogEx::OnPaint()
- CRect rc;
- GetClientRect(rc);
- CBrush brush;
- brush.CreateSolidBrush(0xFFEFD5);
- dc.FillRect(&rc, &brush);
- }
- HBRUSH CDlgService::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
- {
- HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
- // TODO: 在此更改 DC 的任何特性
- if (nCtlColor == CTLCOLOR_STATIC)
- {
- pDC->SetBkMode(TRANSPARENT);//设置背景透明
- //pDC->SetTextColor(RGB(255, 255, 0));//设置字体为黄色
- return (HBRUSH)::GetStockObject(NULL_BRUSH);
- }
- // TODO: 如果默认的不是所需画笔,则返回另一个画笔
- return hbr;
- }
- void CDlgService::InitCtrl()
- {
- // 初始化设备列表;
- m_listDevices.InsertColumn(0, "No");
- m_listDevices.SetColumnWidth(0, 25);
- m_listDevices.InsertColumn(1, "类型");
- m_listDevices.SetColumnWidth(1, 39);
- m_listDevices.InsertColumn(2, "名称");
- m_listDevices.SetColumnWidth(2, 125);
- m_listDevices.InsertColumn(3, "状态");
- m_listDevices.SetColumnWidth(3, 39);
- m_listDevices.InsertColumn(4, "使用");
- m_listDevices.SetColumnWidth(4, 39);
- m_listDevices.SetExtendedStyle(m_listDevices.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
- // 初始化任务列表;
- m_listTask.InsertColumn(0, "No");
- m_listTask.SetColumnWidth(0, 25);
- m_listTask.InsertColumn(1, "任务编号");
- m_listTask.SetColumnWidth(1, 130);
- m_listTask.InsertColumn(2, "任务名称");
- m_listTask.SetColumnWidth(2, 60);
- m_listTask.InsertColumn(3, "状态");
- m_listTask.SetColumnWidth(3, 55);
- m_listTask.SetExtendedStyle(m_listTask.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
- // 修改按钮默认样式;
- m_btnModify.m_bTransparent = FALSE;
- m_btnModify.m_bDontUseWinXPTheme = TRUE;
- // 设置背景色;
- m_btnModify.SetFaceColor(RGB(0x87,0xCE,0xFA), TRUE);
- // 消除单击时黑色内圈;
- m_btnModify.m_bDrawFocus = FALSE;
- // 设置按钮扁平样式;
- m_btnModify.m_nFlatStyle = CMFCButton::FlatStyle::BUTTONSTYLE_FLAT;
- // 设置鼠标形状;
- m_btnModify.SetMouseCursorHand();
- m_btnAddAndroid.m_bTransparent = FALSE;
- m_btnAddAndroid.m_bDontUseWinXPTheme = TRUE;
- // 设置背景色;
- m_btnAddAndroid.SetFaceColor(RGB(0x87, 0xCE, 0xFA), TRUE);
- // 消除单击时黑色内圈;
- m_btnAddAndroid.m_bDrawFocus = FALSE;
- // 设置按钮扁平样式;
- m_btnAddAndroid.m_nFlatStyle = CMFCButton::FlatStyle::BUTTONSTYLE_FLAT;
- // 设置鼠标形状;
- m_btnAddAndroid.SetMouseCursorHand();
- }
- void CDlgService::FillData2Ctrl()
- {
- SetDlgItemText(IDC_EDIT_RUNNER_NAME, Global::g_Config.strActuator.c_str());
- }
- void CDlgService::OnBnClickedModifyRunnerName()
- {
- // TODO: 在此添加控件通知处理程序代码
- CString strActuator;
- GetDlgItemText(IDC_EDIT_RUNNER_NAME, strActuator);
- Global::g_Config.strActuator = strActuator.GetString();
- WritePrivateProfileString(_T("SATService"), _T("Actuator"), strActuator, Global::g_szConfig);
- CSATClient::GetInstance()->TCPLogin(Global::g_Config.strSATUserName, Global::g_Config.strSATPassword, Global::g_Config.strActuator);
- }
- void CDlgService::OnBnClickedAddAndroid()
- {
- // TODO: 在此添加控件通知处理程序代码
- CIPAddressCtrl* pIP = (CIPAddressCtrl*)GetDlgItem(IDC_IP_ANDROID);
- // 获取IP地址;
- BYTE nf1, nf2, nf3, nf4;
- pIP->GetAddress(nf1, nf2, nf3, nf4);
- CString str;
- str.Format("%d.%d.%d.%d", nf1, nf2, nf3, nf4);//这里的nf得到的值是IP值了
- if (str.IsEmpty())
- return;
- CSATClient::GetInstance()->TCPAddDevice(str.GetString());
- }
- void CDlgService::OnTimer(UINT_PTR nIDEvent)
- {
- // TODO: 在此添加消息处理程序代码和/或调用默认值
- if (nIDEvent == 0)
- {
- CSATClient::GetInstance()->TCPQueryDevices(FALSE);
- int nIndex = 0;
- TCHAR szValue[MAX_PATH] = { 0 };
- m_listDevices.DeleteAllItems();
- for ( std::vector<SATPROTO::Device>::iterator it = SATData::devices.begin(); it != SATData::devices.end(); it++ ) {
- _itoa_s(nIndex, szValue, 10);
- m_listDevices.InsertItem(nIndex, szValue);
- if ( it->nType == 0 )
- m_listDevices.SetItemText(nIndex, 1, "虚拟");
- else if ( it->nType == 1 )
- m_listDevices.SetItemText(nIndex, 1, "USB");
- else if ( it->nType == 2 )
- m_listDevices.SetItemText(nIndex, 1, "网络");
- m_listDevices.SetItemText(nIndex, 2, it->szName);
- if ( it->nStatus == 0 )
- m_listDevices.SetItemText(nIndex, 3, "空闲");
- else
- m_listDevices.SetItemText(nIndex, 3, "繁忙");
- nIndex++;
- }
- }
- else if (nIDEvent == 1)
- {
- CSATClient::GetInstance()->TCPQueryTasks(FALSE);
- int nIndex = 0;
- m_listTask.DeleteAllItems();
- TCHAR szValue[MAX_PATH] = {0};
- for ( int i = 0; i < SATData::task_resp.nSize; i++ ) {
-
- // 任务No;
- _itoa_s(SATData::task_resp.ssTasks[i].nTaskId, szValue, 10);
- m_listTask.InsertItem(nIndex, szValue);
- m_listTask.SetItemText(nIndex, 1, SATData::task_resp.ssTasks[i].szTaskNo);
- m_listTask.SetItemText(nIndex, 2, SATData::task_resp.ssTasks[i].szTaskName);
- if (SATData::task_resp.ssTasks[i].nStatus == 0)
- m_listTask.SetItemText(nIndex, 3, "未执行");
- else if ( SATData::task_resp.ssTasks[i].nStatus == 1 )
- m_listTask.SetItemText(nIndex, 3, "执行中");
- else if (SATData::task_resp.ssTasks[i].nStatus == 2)
- m_listTask.SetItemText(nIndex, 3, "完成");
- nIndex++;
- }
- }
- CDialogEx::OnTimer(nIDEvent);
- }
|