123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726 |
- // 这段 MFC 示例源代码演示如何使用 MFC Microsoft Office Fluent 用户界面
- // (“Fluent UI”)。该示例仅供参考,
- // 用以补充《Microsoft 基础类参考》和
- // MFC C++ 库软件随附的相关电子文档。
- // 复制、使用或分发 Fluent UI 的许可条款是单独提供的。
- // 若要了解有关 Fluent UI 许可计划的详细信息,请访问
- // https://go.microsoft.com/fwlink/?LinkId=238214.
- //
- // 版权所有(C) Microsoft Corporation
- // 保留所有权利。
- #include "stdafx.h"
- #include "framework.h"
- #include "DevicesWnd.h"
- #include "Resource.h"
- #include "MainFrm.h"
- #include "SATHelper.h"
- #include <filehelper.h>
- #include "SATClient.h"
- #include "SVNProc.h"
- #ifdef _DEBUG
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #define new DEBUG_NEW
- #endif
- extern CMainFrame* g_pMainFrame;
- // 重启进程按钮id;
- #define ID_BUTTON_RESTART_PROC 4
- // 复制框控件id;
- #define ID_CHECKBOX_SIGNAL_TYPE 5
- // 下拉框控件id;
- #define ID_COMBOBOX_SIGNAL_FILE 6
- /////////////////////////////////////////////////////////////////////////////
- // CResourceViewBar
- CDevicesWnd::CDevicesWnd() noexcept
- {
- m_bEnd = FALSE;
- }
- int CDevicesWnd::InitCtrl()
- {
- CRect rectDummy(0, 0, 50, 23);
- m_lb_Actuator.Create(GlobalString::g_strActuator, SS_CENTER | SS_CENTERIMAGE | WS_CHILD | WS_VISIBLE, rectDummy, this, IDC_STATIC);
- m_lb_IP.Create(GlobalString::g_strActuatorTVIP, SS_CENTER | SS_CENTERIMAGE | WS_CHILD | WS_VISIBLE, rectDummy, this, IDC_STATIC);
- m_lb_TaskId.Create(GlobalString::g_strActuatorTaskID, SS_CENTER | SS_CENTERIMAGE | WS_CHILD | WS_VISIBLE, rectDummy, this, IDC_STATIC);
- m_lb_TaskStatus.Create(GlobalString::g_strActuatorTaskStatus, SS_CENTER | SS_CENTERIMAGE | WS_CHILD | WS_VISIBLE, rectDummy, this, IDC_STATIC);
- if (!m_edit_TaskId.Create(WS_BORDER | WS_CHILD | WS_VISIBLE | ES_READONLY | WS_TABSTOP, rectDummy, this, TX_TASKID))
- {
- return -1;
- }
- if (!m_edit_Actuator.Create(WS_BORDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, rectDummy, this, IDC_EDIT_RUNNER_NAME))
- {
- return -1;
- }
- if (!m_edit_TVIP.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP, CRect(0,0,135,23), this, LABLE_IP))
- {
- return -1;
- }
- if (!m_btnModify.Create(GlobalString::g_strActuatorModify, WS_CHILD | WS_VISIBLE | WS_TABSTOP, rectDummy, this, BTN_MODIFY_RUNNER_NAME))
- {
- return -1;
- }
-
- if (!m_btnAddAndroid.Create(GlobalString::g_strActuatorAddIP, WS_CHILD | WS_VISIBLE | WS_TABSTOP, rectDummy, this, BTN_ADD_ANDROID))
- {
- return -1;
- }
- if (!m_btnMIInit.Create(_T("mi Init"), WS_CHILD | WS_VISIBLE | WS_TABSTOP, rectDummy, this, BTN_MI_INIT))
- {
- return -1;
- }
- if (!m_btnSCBCInit.Create(_T("scbc Init"), WS_CHILD | WS_VISIBLE | WS_TABSTOP, rectDummy, this, BTN_SCBC_INIT))
- {
- return -1;
- }
- if (!m_btnSVNUpdate.Create(_T("SAT Update"), WS_CHILD | WS_VISIBLE | WS_TABSTOP, rectDummy, this, BTN_SVN_UPDATE))
- {
- return -1;
- }
- if (!m_listDevices.Create(WS_CHILD | WS_VISIBLE| LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP, rectDummy, this, IDC_LIST_DEVICES))
- {
- return -1;
- }
- if (!m_listTask.Create(WS_CHILD | WS_VISIBLE | LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP, rectDummy, this, IDC_LIST_TASK))
- {
- return -1;
- }
- SetDlgItemText(IDC_EDIT_RUNNER_NAME, Global::g_Config.strActuator.c_str());
- int nIndex = 0;
- // 初始化设备列表;
- m_listDevices.InsertColumn(nIndex, GlobalString::g_strListDeviceType);
- m_listDevices.SetColumnWidth(nIndex++, 39);
- m_listDevices.InsertColumn(nIndex, GlobalString::g_strListDeviceName);
- m_listDevices.SetColumnWidth(nIndex++, 115);
- m_listDevices.InsertColumn(nIndex, GlobalString::g_strListDeviceStatus);
- m_listDevices.SetColumnWidth(nIndex++, 50);
- m_listDevices.SetExtendedStyle(m_listDevices.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
- // 初始化任务列表;
- m_listTask.InsertColumn(0, GlobalString::g_strListTaskNo);
- m_listTask.SetColumnWidth(0, 30);
- m_listTask.InsertColumn(1, GlobalString::g_strListTaskScript);
- m_listTask.SetColumnWidth(1, 130);
- m_listTask.InsertColumn(2, GlobalString::g_strListTaskRunStatus);
- m_listTask.SetColumnWidth(2, 65);
- m_listTask.InsertColumn(3, GlobalString::g_strListTaskResult);
- m_listTask.SetColumnWidth(3, 60);
- m_listTask.InsertColumn(4, GlobalString::g_strListTaskLog);
- m_listTask.SetColumnWidth(4, 55);
- m_listTask.SetExtendedStyle(m_listTask.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
- COLORREF color = RGB(0x87, 0xCE, 0xFA);
- // 修改按钮默认样式;
- m_btnModify.m_bTransparent = FALSE;
- m_btnModify.m_bDontUseWinXPTheme = TRUE;
- // 设置背景色;
- m_btnModify.SetFaceColor(color, 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(color, TRUE);
- // 消除单击时黑色内圈;
- m_btnAddAndroid.m_bDrawFocus = FALSE;
- // 设置按钮扁平样式;
- m_btnAddAndroid.m_nFlatStyle = CMFCButton::FlatStyle::BUTTONSTYLE_FLAT;
- // 设置鼠标形状;
- m_btnAddAndroid.SetMouseCursorHand();
- //color = RGB(0x87, 0xCE, 0xFA);
- m_btnMIInit.m_bTransparent = FALSE;
- m_btnMIInit.m_bDontUseWinXPTheme = TRUE;
- // 设置背景色;
- m_btnMIInit.SetFaceColor(color, TRUE);
- // 消除单击时黑色内圈;
- m_btnMIInit.m_bDrawFocus = FALSE;
- // 设置按钮扁平样式;
- m_btnMIInit.m_nFlatStyle = CMFCButton::FlatStyle::BUTTONSTYLE_FLAT;
- // 设置鼠标形状;
- m_btnMIInit.SetMouseCursorHand();
- m_btnSCBCInit.m_bTransparent = FALSE;
- m_btnSCBCInit.m_bDontUseWinXPTheme = TRUE;
- // 设置背景色;
- m_btnSCBCInit.SetFaceColor(color, TRUE);
- // 消除单击时黑色内圈;
- m_btnSCBCInit.m_bDrawFocus = FALSE;
- // 设置按钮扁平样式;
- m_btnSCBCInit.m_nFlatStyle = CMFCButton::FlatStyle::BUTTONSTYLE_FLAT;
- // 设置鼠标形状;
- m_btnSCBCInit.SetMouseCursorHand();
- color = RGB(237, 28, 36);
- m_btnSVNUpdate.m_bTransparent = FALSE;
- m_btnSVNUpdate.m_bDontUseWinXPTheme = TRUE;
- // 设置背景色;
- m_btnSVNUpdate.SetFaceColor(color, TRUE);
- // 消除单击时黑色内圈;
- m_btnSVNUpdate.m_bDrawFocus = FALSE;
- // 设置按钮扁平样式;
- m_btnSVNUpdate.m_nFlatStyle = CMFCButton::FlatStyle::BUTTONSTYLE_FLAT;
- // 设置鼠标形状;
- m_btnSVNUpdate.SetMouseCursorHand();
- return 0;
- }
- CDevicesWnd::~CDevicesWnd()
- {
- RedRat::UnloadLibrary();
- }
- BEGIN_MESSAGE_MAP(CDevicesWnd, CDockablePane)
- ON_WM_CREATE()
- ON_WM_SIZE()
- // 按钮;
- ON_COMMAND(BTN_MODIFY_RUNNER_NAME, OnBtnActuatorClick)
- ON_UPDATE_COMMAND_UI(BTN_MODIFY_RUNNER_NAME, OnUpdateBtnActuator)
- ON_COMMAND(BTN_ADD_ANDROID, OnBtnAddTVIPClick)
- ON_UPDATE_COMMAND_UI(BTN_ADD_ANDROID, OnUpdateBtnAddTVIP)
- ON_COMMAND(BTN_MI_INIT, OnBtnMiInitClick)
- ON_UPDATE_COMMAND_UI(BTN_MI_INIT, OnUpdateBtnMiInit)
- ON_COMMAND(BTN_SCBC_INIT, OnBtnScbcInitClick)
- ON_UPDATE_COMMAND_UI(BTN_SCBC_INIT, OnUpdateBtnScbcInit)
- ON_COMMAND(BTN_SVN_UPDATE, OnBtnSATUpdateClick)
- ON_UPDATE_COMMAND_UI(BTN_SVN_UPDATE, OnUpdateBtnSATUpdate)
- // end
- ON_COMMAND(ID_EXPAND_ALL, OnExpandAllProperties)
- ON_UPDATE_COMMAND_UI(ID_EXPAND_ALL, OnUpdateExpandAllProperties)
- ON_COMMAND(ID_SORTPROPERTIES, OnSortProperties)
- ON_UPDATE_COMMAND_UI(ID_SORTPROPERTIES, OnUpdateSortProperties)
- ON_COMMAND(ID_PROPERTIES1, OnProperties1)
- ON_UPDATE_COMMAND_UI(ID_PROPERTIES1, OnUpdateProperties1)
- ON_COMMAND(ID_PROPERTIES2, OnProperties2)
- ON_UPDATE_COMMAND_UI(ID_PROPERTIES2, OnUpdateProperties2)
- ON_WM_SETFOCUS()
- ON_WM_SETTINGCHANGE()
- ON_WM_PAINT()
- ON_WM_CTLCOLOR()
- ON_WM_CONTEXTMENU()
- ON_COMMAND(ID_DEVICES_DEL, &CDevicesWnd::OnDevicesDel)
- ON_NOTIFY(NM_DBLCLK, IDC_LIST_TASK, &CDevicesWnd::OnNMDblclkListTask)
- ON_NOTIFY(NM_RCLICK, IDC_LIST_DEVICES, &CDlgService::OnNMRClickListDevices)
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CResourceViewBar 消息处理程序
- void CDevicesWnd::AdjustLayout()
- {
- if (GetSafeHwnd() == nullptr || (AfxGetMainWnd() != nullptr && AfxGetMainWnd()->IsIconic()))
- {
- return;
- }
- #if 0
- CRect rectClient;
- GetClientRect(rectClient);
- m_dlgService.SetWindowPos(nullptr, rectClient.left, rectClient.top, rectClient.Width() - 5, rectClient.Height(), SWP_NOACTIVATE);
- #else
- CRect rcCtrl;
- // 获取窗口大小;
- CRect rectClient;
- // 控件;
- GetClientRect(&rectClient);
- int nWidth = 0;
- const int dr = 3; // 行间距
- const int dc = 5; // 列间距;
- const int top = 10; // 离顶部距离;
- const int margin = 6;
- int nHeight = top;
- // 第一行;
- m_lb_Actuator.GetWindowRect(rcCtrl);
- ScreenToClient(&rcCtrl);
- m_lb_Actuator.SetWindowPos(nullptr, rectClient.left + margin, rectClient.top + top, rcCtrl.Width(), m_nNormalHeight, SWP_NOACTIVATE | SWP_NOZORDER);
- nWidth = rcCtrl.Width() + margin + dc;
- m_edit_Actuator.SetWindowPos(nullptr, nWidth, rectClient.top + top, (rectClient.Width() - nWidth - dc - margin) * 5 / 7, m_nNormalHeight, SWP_NOACTIVATE | SWP_NOZORDER);
- m_edit_Actuator.GetWindowRect(rcCtrl);
- nWidth += rcCtrl.Width() + dc;
- m_btnModify.GetWindowRect(rcCtrl);
- ScreenToClient(&rcCtrl);
- m_btnModify.SetWindowPos(nullptr, nWidth, rectClient.top + top, rectClient.Width() - nWidth - margin, m_nNormalHeight, SWP_NOACTIVATE | SWP_NOZORDER);
- nHeight += m_nNormalHeight + dr;
- // 第二行;
- m_lb_IP.GetWindowRect(rcCtrl);
- ScreenToClient(&rcCtrl);
- m_lb_IP.SetWindowPos(nullptr, rectClient.left + margin, rectClient.top + nHeight, rcCtrl.Width(), m_nNormalHeight, SWP_NOACTIVATE | SWP_NOZORDER);
- nWidth = rcCtrl.Width() + margin + dc;
- m_edit_TVIP.SetWindowPos(nullptr, nWidth, rectClient.top + nHeight, (rectClient.Width() - nWidth - dc - margin) * 5 / 7, m_nNormalHeight, SWP_NOACTIVATE | SWP_NOZORDER);
- m_edit_TVIP.GetWindowRect(rcCtrl);
- nWidth += rcCtrl.Width() + dc;
- m_btnAddAndroid.GetWindowRect(rcCtrl);
- ScreenToClient(&rcCtrl);
- m_btnAddAndroid.SetWindowPos(nullptr, nWidth, rectClient.top + nHeight, rectClient.Width() - nWidth - margin, m_nNormalHeight, SWP_NOACTIVATE | SWP_NOZORDER);
- nHeight += m_nNormalHeight + dr;
- // 第三行;
- m_listDevices.SetWindowPos(nullptr, rectClient.left + margin, rectClient.top + nHeight, rectClient.Width() - margin*2, 120, SWP_NOACTIVATE | SWP_NOZORDER);
- m_listDevices.GetWindowRect(rcCtrl);
- nHeight += 120 + dr;
- // 第四行;
- nWidth = (rectClient.Width() - margin * 2 - dc * 2) / 3;
- m_btnMIInit.GetWindowRect(rcCtrl);
- ScreenToClient(&rcCtrl);
- m_btnMIInit.SetWindowPos(nullptr, rectClient.left + margin, rectClient.top + nHeight, nWidth, rcCtrl.Height(), SWP_NOACTIVATE | SWP_NOZORDER);
- m_btnMIInit.GetWindowRect(rcCtrl);
- ScreenToClient(&rcCtrl);
- m_btnSCBCInit.SetWindowPos(nullptr, rectClient.left + margin + nWidth + dc, rectClient.top + nHeight, nWidth, rcCtrl.Height(), SWP_NOACTIVATE | SWP_NOZORDER);
- m_btnSCBCInit.GetWindowRect(rcCtrl);
- ScreenToClient(&rcCtrl);
- m_btnSVNUpdate.SetWindowPos(nullptr, rectClient.left + margin + nWidth * 2 + dc * 2, rectClient.top + nHeight, nWidth, rcCtrl.Height(), SWP_NOACTIVATE | SWP_NOZORDER);
- nHeight += rcCtrl.Height() + 30;
- // 第五行;
- m_lb_TaskId.GetWindowRect(rcCtrl);
- ScreenToClient(&rcCtrl);
- nWidth = rcCtrl.Width();
- m_lb_TaskId.SetWindowPos(nullptr, rectClient.left + margin, rectClient.top + nHeight, rcCtrl.Width(), m_nNormalHeight, SWP_NOACTIVATE | SWP_NOZORDER);
- m_edit_TaskId.SetWindowPos(nullptr, rcCtrl.right + dc, rectClient.top + nHeight, rectClient.Width() - 2 * nWidth - margin * 2 - dc * 2, m_nNormalHeight, SWP_NOACTIVATE | SWP_NOZORDER);
- m_edit_TaskId.GetWindowRect(rcCtrl);
- ScreenToClient(&rcCtrl);
- m_lb_TaskStatus.SetWindowPos(nullptr, rcCtrl.right + dc, rectClient.top + nHeight, nWidth, m_nNormalHeight, SWP_NOACTIVATE | SWP_NOZORDER);
- nHeight += rcCtrl.Height() + dr;
- // 第六行;
- m_listTask.GetWindowRect(rcCtrl);
- ScreenToClient(&rcCtrl);
- m_listTask.SetWindowPos(nullptr, rectClient.left + margin, rectClient.top + nHeight, rectClient.Width() - margin*2, rectClient.Height() - nHeight - 10, SWP_NOACTIVATE | SWP_NOZORDER);
- #endif
- }
- int CDevicesWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
- {
- if (CDockablePane::OnCreate(lpCreateStruct) == -1)
- return -1;
- CRect rectDummy;
- rectDummy.SetRectEmpty();
- // 创建组合:
- const DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST | WS_BORDER | CBS_SORT | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
- #if 0
- if (!m_dlgService.Create(IDD_DLG_SERVICE, this))
- {
- TRACE0("未能创建遥控器主窗口 \n");
- return -1; // 未能创建
- }
- m_dlgService.ShowWindow(SW_SHOW);
- #endif
- InitCtrl();
- // 设置最小窗体;
- SetMinSize((530, 260));
- // 校正布局;
- AdjustLayout();
- SetCtrlFont();
- std::thread t([](CDevicesWnd* p) {
- while (!p->m_bEnd)
- {
- std::this_thread::sleep_for(std::chrono::milliseconds(2500));
- {
- 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, 0, "虚拟");
- else if (it->nType == 1)
- p->m_listDevices.SetItemText(nIndex, 0, "USB");
- else if (it->nType == 2)
- p->m_listDevices.SetItemText(nIndex, 0, "网络");
- // 名称;
- p->m_listDevices.SetItemText(nIndex, 1, it->szName);
- if (it->nStatus == 0)
- p->m_listDevices.SetItemText(nIndex, 2, "在线");
- else if (it->nStatus == 1)
- p->m_listDevices.SetItemText(nIndex, 2, "离线");
- else if (it->nStatus == 2)
- p->m_listDevices.SetItemText(nIndex, 2, "掉线");
- else if (it->nStatus == 3)
- p->m_listDevices.SetItemText(nIndex, 2, "未认证");
- nIndex++;
- }
- }
- }
- OutputDebugString("退出刷新设备线程\n");
- }, this);
- t.detach();
- std::thread t2([](CDevicesWnd* p) {
- while (!p->m_bEnd)
- {
- std::this_thread::sleep_for(std::chrono::milliseconds(10000));
- {
- 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++) {
- // 任务编号;
- p->m_edit_TaskId.SetWindowText(_T(""));
- p->m_edit_TaskId.SetWindowText(SATData::task_resp.ssTasks[i].szTaskNo);
- // 任务状态;
- p->m_lb_TaskStatus.SetWindowText(_T(""));
- p->m_lb_TaskStatus.SetWindowText(SATData::task_resp.ssTasks[i].szStatus);
- if (SATData::task_resp.ssTasks[i].nCaseSize) {
- // 遍历出所有用例;
- TCHAR szIndex[8] = { 0 };
- // 脚本数量;
- int nSize = SATData::task_resp.ssTasks[i].nCaseSize;
- if (nSize > SATPROTO::MAX_CASES)
- nSize = SATPROTO::MAX_CASES;
- for (int k = 0; k < nSize; k++) {
- _itoa_s(k, szIndex, 10);
- SATPROTO::CaseInfo& caseInfo = SATData::task_resp.ssTasks[i].ssCases[k];
- p->m_listTask.InsertItem(nIndex, szIndex);
- p->m_listTask.SetItemText(nIndex, 1, caseInfo.szCaseName);
- p->m_listTask.SetItemText(nIndex, 2, caseInfo.szExecStatus);
- p->m_listTask.SetItemText(nIndex, 3, caseInfo.szResultStatus);
- p->m_listTask.SetItemText(nIndex, 4, caseInfo.szCaseLogPath);
- }
- }
- nIndex++;
- }
- }
- }
- OutputDebugString("退出刷新任务线程\n");
- }, this);
- t2.detach();
- return 0;
- }
- void CDevicesWnd::OnSize(UINT nType, int cx, int cy)
- {
- CDockablePane::OnSize(nType, cx, cy);
- TRACE2("坐标:%d,%d\n", cx, cy);
- AdjustLayout();
- }
- void CDevicesWnd::OnExpandAllProperties()
- {
- //m_wndPropList.ExpandAll();
- }
- void CDevicesWnd::OnUpdateExpandAllProperties(CCmdUI* /* pCmdUI */)
- {
- }
- void CDevicesWnd::OnSortProperties()
- {
- //m_wndPropList.SetAlphabeticMode(!m_wndPropList.IsAlphabeticMode());
- }
- void CDevicesWnd::OnUpdateSortProperties(CCmdUI* pCmdUI)
- {
- //pCmdUI->SetCheck(m_wndPropList.IsAlphabeticMode());
- }
- void CDevicesWnd::OnProperties1()
- {
- // TODO: 在此处添加命令处理程序代码
- }
- void CDevicesWnd::OnUpdateProperties1(CCmdUI* /*pCmdUI*/)
- {
- // TODO: 在此处添加命令更新 UI 处理程序代码
- }
- void CDevicesWnd::OnProperties2()
- {
- // TODO: 在此处添加命令处理程序代码
- }
- void CDevicesWnd::OnUpdateProperties2(CCmdUI* /*pCmdUI*/)
- {
- // TODO: 在此处添加命令更新 UI 处理程序代码
- }
- void CDevicesWnd::OnSetFocus(CWnd* pOldWnd)
- {
- CDockablePane::OnSetFocus(pOldWnd);
- }
- void CDevicesWnd::OnSettingChange(UINT uFlags, LPCTSTR lpszSection)
- {
- CDockablePane::OnSettingChange(uFlags, lpszSection);
- //SetPropListFont();
- }
- void CDevicesWnd::SetCtrlFont()
- {
- ::DeleteObject(m_fntPropList.Detach());
- LOGFONT lf;
- afxGlobalData.fontRegular.GetLogFont(&lf);
- NONCLIENTMETRICS info;
- info.cbSize = sizeof(info);
- afxGlobalData.GetNonClientMetrics(info);
- lf.lfHeight = info.lfMenuFont.lfHeight;
- lf.lfWeight = info.lfMenuFont.lfWeight;
- lf.lfItalic = info.lfMenuFont.lfItalic;
- m_fntPropList.CreateFontIndirect(&lf);
- //m_wndObjectCombo.SetFont(&m_fntPropList);
- m_lb_Actuator.SetFont(&m_fntPropList);
- m_lb_IP.SetFont(&m_fntPropList);
- m_edit_Actuator.SetFont(&m_fntPropList);
- m_edit_TVIP.SetFont(&m_fntPropList);
- m_btnModify.SetFont(&m_fntPropList);
- m_btnAddAndroid.SetFont(&m_fntPropList);
- m_listDevices.SetFont(&m_fntPropList);
- m_btnMIInit.SetFont(&m_fntPropList);
- m_btnSCBCInit.SetFont(&m_fntPropList);
- m_btnSVNUpdate.SetFont(&m_fntPropList);
- m_listTask.SetFont(&m_fntPropList);
- m_lb_TaskId.SetFont(&m_fntPropList);
- m_edit_TaskId.SetFont(&m_fntPropList);
- m_lb_TaskStatus.SetFont(&m_fntPropList);
- }
- // 如果CDockablePane无控件,改变大小时背景会刷新失败;
- // 所以要重载onpaint;
- void CDevicesWnd::OnPaint()
- {
- CPaintDC dc(this); // device context for painting
- // TODO: 在此处添加消息处理程序代码
- // 不为绘图消息调用 CDockablePane::OnPaint();
- CRect rc;
- GetClientRect(rc);
- CBrush brush;
- brush.CreateSolidBrush(0xFFEFD5);
- dc.FillRect(&rc, &brush);
- }
- void CDevicesWnd::OnContextMenu(CWnd* /*pWnd*/, CPoint /*point*/)
- {
- // TODO: 在此处添加消息处理程序代码
- }
- HBRUSH CDevicesWnd::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
- {
- HBRUSH hbr = CDockablePane::OnCtlColor(pDC, pWnd, nCtlColor);
- // TODO: 在此更改 DC 的任何特性
- if (nCtlColor == CTLCOLOR_STATIC || pWnd->GetDlgCtrlID() == IDC_STATIC) //静态文本颜色,并且指定控件ID号 && pWnd->GetDlgCtrlID() == IDC_STATIC
- {
- pDC->SetTextColor(RGB(255, 0, 0));
- //pDC->SetBkColor(RGB(191,219,255)); //静态控件的背景颜色设置,红字蓝底。
- pDC->SetBkMode(TRANSPARENT); //静态文本框背景设置为透明
- HBRUSH brush;
- brush = CreateSolidBrush(0xFFEFD5);//对话框的RGB值
- hbr = (HBRUSH)brush;
- }
- // TODO: 如果默认的不是所需画笔,则返回另一个画笔
- return hbr;
- }
- void CDevicesWnd::OnBtnActuatorClick()
- {
- 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 CDevicesWnd::OnUpdateBtnActuator(CCmdUI* pCmdUI)
- {
- }
- void CDevicesWnd::OnBtnAddTVIPClick()
- {
- // 获取IP地址;
- BYTE nf1, nf2, nf3, nf4;
- m_edit_TVIP.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 CDevicesWnd::OnUpdateBtnAddTVIP(CCmdUI* pCmdUI)
- {
- }
- void CDevicesWnd::OnBtnMiInitClick()
- {
- if (Global::g_Config.strMIInitBat.size())
- {
- //WinExec(Global::g_Config.strMIInitBat.c_str(), SW_HIDE);
- ShellExecute(NULL, _T("open"), Global::g_Config.strMIInitBat.c_str(), NULL, NULL, SW_SHOW);
- }
- }
- void CDevicesWnd::OnUpdateBtnMiInit(CCmdUI* pCmdUI)
- {
- }
- void CDevicesWnd::OnBtnScbcInitClick()
- {
- if (Global::g_Config.strSCBCInitBat.size())
- {
- // TODO: 在此添加控件通知处理程序代码
- //WinExec(Global::g_Config.strMIInitBat.c_str(), SW_HIDE);
- ShellExecute(NULL, _T("open"), Global::g_Config.strSCBCInitBat.c_str(), NULL, NULL, SW_SHOW);
- }
- }
- void CDevicesWnd::OnUpdateBtnScbcInit(CCmdUI* pCmdUI)
- {
- }
- void CDevicesWnd::OnBtnSATUpdateClick()
- {
- CSVNMgr::GetInstance()->Update();
- if (CSVNMgr::GetInstance()->HasNewVersion())
- {
- // 还要更新,则表示失败;
- MessageBox(_T("更新失败"), _T("更新结果:"), MB_OK | MB_ICONWARNING);
- }
- else
- {
- MessageBox(_T("更新成功,版本号为 ") + CSVNMgr::GetInstance()->GetVersion(), _T("更新结果:"), MB_OK);
- CString strVersionInfo;
- strVersionInfo.Format(_T("SATHelper 版本 %s, SAT 版本 %s"), Global::g_szVersion, CSVNMgr::GetInstance()->GetVersion());
- AfxGetMainWnd()->SetWindowText(strVersionInfo);
- CSVNMgr::GetInstance()->Store();
- }
- }
- void CDevicesWnd::OnUpdateBtnSATUpdate(CCmdUI* pCmdUI)
- {
- }
- void CDevicesWnd::OnNMRClickListDevices(NMHDR* pNMHDR, LRESULT* pResult)
- {
- LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
- // TODO: 在此添加控件通知处理程序代码
- NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
- if (pNMListView->iItem != -1)
- {
- CString strType = m_listDevices.GetItemText(pNMListView->iItem, 0);
- // 过滤掉虚拟设备;
- if (!strType.CompareNoCase(_T("虚拟")))
- return;
- DWORD dwPos = GetMessagePos();
- CPoint point(LOWORD(dwPos), HIWORD(dwPos));
- CMenu menu;
- //添加线程操作
- if (!menu.LoadMenu(IDR_POPUP_DEVICES)) //这里是我们在1中定义的MENU的文件名称
- return;
- CMenu* popup = menu.GetSubMenu(0);
- ASSERT(popup != NULL);
- popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);
- }
- *pResult = 0;
- }
- void CDevicesWnd::OnNMDblclkListTask(NMHDR* pNMHDR, LRESULT* pResult)
- {
- LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
- // TODO: 在此添加控件通知处理程序代码
- *pResult = 0;
- NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
- if (pNMListView->iItem != -1)
- {
- CString strLogPath = m_listTask.GetItemText(pNMListView->iItem, 4);
- // 路径不存在,退出;
- if (!PathFileExists(strLogPath))
- return;
- ShellExecute(NULL, _T("open"), strLogPath.GetString(), NULL, NULL, SW_SHOW);
- }
- }
- void CDevicesWnd::OnDevicesDel()
- {
- // TODO: 在此添加命令处理程序代码
- // 获取选中的设备;
- POSITION pos = m_listDevices.GetFirstSelectedItemPosition();
- if (pos != NULL)
- {
- int nSelCur = m_listDevices.GetNextSelectedItem(pos);
- if (nSelCur != -1)
- {
- CString strDeviceType = m_listDevices.GetItemText(nSelCur, 0);
- CString strDeviceName = m_listDevices.GetItemText(nSelCur, 1);
- if (!strDeviceName.IsEmpty() && strDeviceType.CompareNoCase(_T("虚拟")))
- {
- MessageBox(_T("即将删除设备:") + strDeviceName, _T("温馨提示!"), MB_ICONWARNING);
- CSATClient::GetInstance()->TCPDelDevice(strDeviceName.GetString());
- // 同时删除该项;
- m_listDevices.DeleteItem(nSelCur);
- }
- }
- }
- }
|