// CDialTaskManagerOffline.cpp : implementation file // #include "stdafx.h" #include "GeoMative.h" #include "DialTaskManagerOffline.h" #include "DialNew1DTask.h" #include "DialNew2DTask.h" #include "DialNew3DTask.h" #include "DialMeasureData.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif extern int g_UIOffset; extern int g_iUILanguage; extern CGeoMativeApp theApp; ///////////////////////////////////////////////////////////////////////////// // CDialTaskManagerOffline dialog CDialTaskManagerOffline::CDialTaskManagerOffline(CWnd* pParent /*=NULL*/) : CDialog(CDialTaskManagerOffline::IDD, pParent) { //{{AFX_DATA_INIT(CDialTaskManagerOffline) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_iSelTaskType = 0; m_iTestType = -1; m_uiDstDevID = 0; } void CDialTaskManagerOffline::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDialTaskManagerOffline) DDX_Control(pDX, IDC_LIST_TASK_ATTR, m_listTaskAttr); DDX_Control(pDX, IDC_LIST_TASK_DATA, m_listTaskData); DDX_Control(pDX, IDC_TAB_TASK_CHG, m_tabTaskChg); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CDialTaskManagerOffline, CDialog) //{{AFX_MSG_MAP(CDialTaskManagerOffline) ON_BN_CLICKED(IDC_BUTTON_CREATE_TASK, OnButtonCreateTask) ON_BN_CLICKED(IDC_BUTTON_DEL_TASK, OnButtonDelTask) ON_MESSAGE(WM_CLICK_TASK_TREE, OnClickTaskTree) ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_TASK_CHG, OnSelchangeTabTaskChg) // ON_BN_CLICKED(IDC_BUTTON_EXP_TASK, OnButtonExpTask) ON_BN_CLICKED(IDC_BUTTON_MEASURE_TASK, OnButtonMeasureTask) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDialTaskManagerOffline message handlers void CDialTaskManagerOffline::OnButtonCreateTask() { // TODO: Add your control notification handler code here int iRet = -1; int iTaskID = 0; CString strTdName = _T(""); m_taskOper.m_uiDevID = m_uiDstDevID; if (0 == m_iSelTaskType) { CDialNew1DTask dialNew1DTask(&m_taskOper); iRet = dialNew1DTask.DoModal(); iTaskID = dialNew1DTask.m_iNewTaskID; strTdName = dialNew1DTask.m_strTaskName; } else if (1 == m_iSelTaskType) { CDialNew2DTask dialNew2DTask(&m_taskOper); iRet = dialNew2DTask.DoModal(); iTaskID = dialNew2DTask.m_iNewTaskID; strTdName = dialNew2DTask.m_strTaskName; } else if (2 == m_iSelTaskType) { CDialNew3DTask dialNew3DTask(&m_taskOper); iRet = dialNew3DTask.DoModal(); iTaskID = dialNew3DTask.m_iNewTaskID; strTdName = dialNew3DTask.m_strTaskName; } else { CString strErr = _T(""); if (LANG_ZHCN == g_iUILanguage) { strErr.Format(_T("未知任务类型(%d)"), m_iSelTaskType); AfxMessageBox(strErr); } else { strErr.Format(_T("Unknow task type(%d)"), m_iSelTaskType); MessageBoxEx(NULL, strErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); } return; } if (IDOK == iRet) { HTREEITEM hRoot = m_dialTaskTreeOffline.m_treeTask.GetRootItem(); HTREEITEM hItem = m_dialTaskTreeOffline.m_treeTask.InsertItem(strTdName, hRoot); m_dialTaskTreeOffline.m_treeTask.SetItemData(hItem, iTaskID); m_dialTaskTreeOffline.m_treeTask.Invalidate(TRUE); } } void CDialTaskManagerOffline::OnButtonDelTask() { // TODO: Add your control notification handler code here HTREEITEM hItem = m_dialTaskTreeOffline.m_treeTask.GetSelectedItem(); if (NULL == hItem) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("请先选择数据")); else MessageBoxEx(NULL, _T("Please choose one task first"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } DWORD dwTaskID = 0; dwTaskID = m_dialTaskTreeOffline.m_treeTask.GetItemData(hItem); if (dwTaskID < 1) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("获取任务数据ID错误")); else MessageBoxEx(NULL, _T("Can not find the test task.please select the task firstly"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } if (m_taskOper.DeleteTask(dwTaskID)) { m_listTaskData.DeleteAllItems(); int iItemCnt = m_listTaskAttr.GetItemCount(); for (int i = 0; i < iItemCnt; i++) { m_listTaskAttr.SetItemText(i, 2, _T("")); } m_dialTaskTreeOffline.m_treeTask.DeleteItem(hItem); if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("删除任务成功")); else MessageBoxEx(NULL, _T("Delete task successful"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); } else { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("删除任务失败")); else MessageBoxEx(NULL, _T("Delete task failed"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); } } BOOL CDialTaskManagerOffline::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here m_tabTaskChg.InsertItem(0, _T("VES TASK")); m_tabTaskChg.InsertItem(1, _T("2D TASK")); m_tabTaskChg.InsertItem(2, _T("3D TASK")); m_iSelTaskType = 0; CRect rect; m_tabTaskChg.GetClientRect(&rect); rect.top += 2; rect.left += 2; rect.right -= 2; rect.bottom -= 23; m_dialTaskTreeOffline.Create(IDD_DIALOG_TASK_TREE, &m_tabTaskChg); m_dialTaskTreeOffline.RegisterWnd(this); m_dialTaskTreeOffline.MoveWindow(&rect); m_dialTaskTreeOffline.ShowWindow(SW_SHOW); m_dialTaskTreeOffline.SetSptType(m_iSelTaskType); //初始化任务属性 InitialTaskListAttr(); //初始化任务数据 m_listTaskData.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_ONECLICKACTIVATE | LVS_EX_GRIDLINES); InitialTaskListData(0); if (LANG_ENUS == g_iUILanguage) { GetDlgItem(IDC_STATIC_TASK_LIST)->SetWindowText("Task List:"); GetDlgItem(IDC_STATIC_LIST_ATTR)->SetWindowText("Task Attribute:"); GetDlgItem(IDC_STATIC_TASK_DATA)->SetWindowText("Task Data:"); GetDlgItem(IDC_BUTTON_CREATE_TASK)->SetWindowText("Create"); GetDlgItem(IDC_BUTTON_MEASURE_TASK)->SetWindowText("Measure"); GetDlgItem(IDC_BUTTON_DEL_TASK)->SetWindowText("Delete"); } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CDialTaskManagerOffline::InitialTaskListData(int iTestType) { if (iTestType == m_iTestType) { return; } m_listTaskData.DeleteAllItems(); int iColumnCount = m_listTaskData.GetHeaderCtrl()->GetItemCount(); for (int i = 0; i < iColumnCount; i++) { m_listTaskData.DeleteColumn(0); } m_iTestType = iTestType; int iColIndex = 0; m_listTaskData.InsertColumn(iColIndex++, _T("A"), LVCFMT_CENTER, 80); m_listTaskData.InsertColumn(iColIndex++, _T("B"), LVCFMT_CENTER, 80); m_listTaskData.InsertColumn(iColIndex++, _T("M"), LVCFMT_CENTER, 80); m_listTaskData.InsertColumn(iColIndex++, _T("N"), LVCFMT_CENTER, 80); m_listTaskData.InsertColumn(iColIndex++, _T("Stack"), LVCFMT_CENTER, 80); m_listTaskData.InsertColumn(iColIndex++, "K", LVCFMT_CENTER, 120); m_listTaskData.InsertColumn(iColIndex++, "V(mV)", LVCFMT_CENTER, 120); m_listTaskData.InsertColumn(iColIndex++, "I(mA)", LVCFMT_CENTER, 120); if (0 == iTestType) { m_listTaskData.InsertColumn(iColIndex++, "R(Ohm)", LVCFMT_CENTER, 120); } m_listTaskData.InsertColumn(iColIndex++, "R0(Ohm*m)", LVCFMT_CENTER, 120); m_listTaskData.InsertColumn(iColIndex++, "SP(mV)", LVCFMT_CENTER, 120); } void CDialTaskManagerOffline::InitialTaskListAttr() { CString strColTitle; m_listTaskAttr.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_ONECLICKACTIVATE | LVS_EX_GRIDLINES); m_listTaskAttr.InsertColumn(0, _T(""), LVCFMT_RIGHT, 1); if (LANG_ENUS == g_iUILanguage) { m_listTaskAttr.InsertColumn(1, _T("Attribute"), LVCFMT_RIGHT, 150); m_listTaskAttr.InsertColumn(2, _T("Value"), LVCFMT_LEFT, 400); } else { m_listTaskAttr.InsertColumn(1, _T("任务属性"), LVCFMT_RIGHT, 150); m_listTaskAttr.InsertColumn(2, _T("属性值"), LVCFMT_LEFT, 400); } int iItemIndex = 0; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_TDNAME + g_UIOffset); m_listTaskAttr.InsertItem(iItemIndex, _T("")); m_listTaskAttr.SetItemText(iItemIndex, 1, strColTitle); iItemIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_SCON_SNAME + g_UIOffset); m_listTaskAttr.InsertItem(iItemIndex, _T("")); m_listTaskAttr.SetItemText(iItemIndex, 1, strColTitle); iItemIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_SCON_STYPE + g_UIOffset); m_listTaskAttr.InsertItem(iItemIndex, _T("")); m_listTaskAttr.SetItemText(iItemIndex, 1, strColTitle); iItemIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_TMODE + g_UIOffset); m_listTaskAttr.InsertItem(iItemIndex, _T("")); m_listTaskAttr.SetItemText(iItemIndex, 1, strColTitle); iItemIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_ARRAY_TYPE + g_UIOffset); m_listTaskAttr.InsertItem(iItemIndex, _T("")); m_listTaskAttr.SetItemText(iItemIndex, 1, strColTitle); iItemIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_SCON_EAMOUNT + g_UIOffset); m_listTaskAttr.InsertItem(iItemIndex, _T("")); m_listTaskAttr.SetItemText(iItemIndex, 1, strColTitle); iItemIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_SCON_TPAMOUNT + g_UIOffset); m_listTaskAttr.InsertItem(iItemIndex, _T("")); m_listTaskAttr.SetItemText(iItemIndex, 1, strColTitle); iItemIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_SCRIPT_N + g_UIOffset); m_listTaskAttr.InsertItem(iItemIndex, _T("")); m_listTaskAttr.SetItemText(iItemIndex, 1, strColTitle); iItemIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_TRWAVE + g_UIOffset); m_listTaskAttr.InsertItem(iItemIndex, _T("")); m_listTaskAttr.SetItemText(iItemIndex, 1, strColTitle); iItemIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_TRFREQUENCY + g_UIOffset); m_listTaskAttr.InsertItem(iItemIndex, _T("")); m_listTaskAttr.SetItemText(iItemIndex, 1, strColTitle); iItemIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_CLAYOUT + g_UIOffset); m_listTaskAttr.InsertItem(iItemIndex, _T("")); m_listTaskAttr.SetItemText(iItemIndex, 1, strColTitle); iItemIndex++; strColTitle.Empty(); strColTitle.LoadString(IDS_DB_TD_EDISTANCE + g_UIOffset); m_listTaskAttr.InsertItem(iItemIndex, _T("")); m_listTaskAttr.SetItemText(iItemIndex, 1, strColTitle); } LRESULT CDialTaskManagerOffline::OnClickTaskTree(WPARAM wParam, LPARAM lParam) { DWORD dwTaskID = (DWORD)wParam; m_taskOper.QueryTdAttrToCtrl(m_listTaskAttr, dwTaskID); int iTtype = m_taskOper.GetCurSelTdTestType(); InitialTaskListData(iTtype); m_taskOper.QueryTdDataToCtrl(m_listTaskData, dwTaskID, m_iSelTaskType, iTtype); return 0; } void CDialTaskManagerOffline::OnSelchangeTabTaskChg(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here if (m_iSelTaskType == m_tabTaskChg.GetCurSel()) { return; } m_iSelTaskType = m_tabTaskChg.GetCurSel(); m_dialTaskTreeOffline.ShowTaskTree(m_iSelTaskType); *pResult = 0; } void CDialTaskManagerOffline::OnButtonMeasureTask() { // TODO: Add your control notification handler code here HTREEITEM hItem = m_dialTaskTreeOffline.m_treeTask.GetSelectedItem(); if (NULL == hItem || m_dialTaskTreeOffline.m_treeTask.GetRootItem() == hItem) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("请先选择任务")); else MessageBoxEx(NULL, _T("Please choose one task first"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); return; } DWORD dwTdID = m_dialTaskTreeOffline.m_treeTask.GetItemData(hItem); CDialMeasureData dialMeasuData; dialMeasuData.SetTaksID(dwTdID); dialMeasuData.SetDeviceID(m_uiDstDevID); dialMeasuData.DoModal(); m_taskOper.QueryTdDataToCtrl(m_listTaskData, dwTdID, m_iSelTaskType, m_iTestType); }