Files
coco df489d5640 a
2026-07-03 16:05:30 +08:00

371 lines
12 KiB
C++

// 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);
}