241 lines
6.3 KiB
C++
241 lines
6.3 KiB
C++
// ModifyIpCurveDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "geomative.h"
|
|
#include "ModifyIpCurveDlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
extern int g_iUILanguage;
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CModifyIpCurveDlg dialog
|
|
CModifyIpCurveDlg::CModifyIpCurveDlg(CTestingData *f_td, CWnd* pParent /*=NULL*/)
|
|
: CDialog(CModifyIpCurveDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CModifyIpCurveDlg)
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
//}}AFX_DATA_INIT
|
|
m_nPeriod = 0;
|
|
m_pTdType = f_td;
|
|
}
|
|
|
|
|
|
// CModifyIpCurveDlg::CModifyIpCurveDlg(CWnd* pParent /*=NULL*/)
|
|
// : CDialog(CModifyIpCurveDlg::IDD, pParent)
|
|
// {
|
|
// //{{AFX_DATA_INIT(CModifyIpCurveDlg)
|
|
// // NOTE: the ClassWizard will add member initialization here
|
|
// //}}AFX_DATA_INIT
|
|
// }
|
|
|
|
|
|
|
|
void CModifyIpCurveDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CModifyIpCurveDlg)
|
|
DDX_Control(pDX, IDC_EDIT, m_Edit);
|
|
DDX_Control(pDX, IDC_RANGE, m_CurveList);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CModifyIpCurveDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CModifyIpCurveDlg)
|
|
ON_NOTIFY(NM_DBLCLK, IDC_RANGE, OnDblclkRange)
|
|
ON_WM_LBUTTONDBLCLK()
|
|
ON_EN_KILLFOCUS(IDC_EDIT, OnKillfocusEdit)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CModifyIpCurveDlg message handlers
|
|
|
|
BOOL CModifyIpCurveDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
// TODO: Add extra initialization here
|
|
m_CurveList.SetExtendedStyle(m_CurveList.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
|
|
|
|
m_CurveList.InsertColumn(0,"Index", 70,72);
|
|
m_CurveList.InsertColumn(1,"Start", 70,72);
|
|
m_CurveList.InsertColumn(2,"Width", 70,72);
|
|
|
|
CString szTmp = _T("");
|
|
|
|
for (int n = 9; n >= 0; n--)
|
|
{
|
|
szTmp.Format("M%d", n);
|
|
m_CurveList.InsertItem(0, szTmp);
|
|
}
|
|
|
|
m_pTdType->GetTimeWindowList(m_CurveList);
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CModifyIpCurveDlg::OnOK()
|
|
{
|
|
// TODO: Add extra validation here
|
|
CStringArray szArray;
|
|
CString szTmp = _T("");
|
|
CString szData = _T("");
|
|
int nTWStart = 0, nTWWidth = 0;
|
|
bool bIsWidthEmpty = false;
|
|
for (int n = 0; n < 10; n++)
|
|
{
|
|
//取起始时间
|
|
szData = m_CurveList.GetItemText(n, 1);
|
|
nTWStart = atoi(szData.GetBuffer(0));
|
|
//取宽度
|
|
szData = m_CurveList.GetItemText(n, 2);
|
|
nTWWidth = atoi(szData.GetBuffer(0));
|
|
if (nTWStart < 0 || nTWWidth < 0)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("时窗配置错误!"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Config time windows info error!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
|
|
if ((nTWStart + nTWWidth) > m_nPeriod)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("时窗配置超长!"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Config time window is too long!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
if (0 == nTWWidth && nTWStart != 0)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("时窗配置错误!"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Config time window info error!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
|
|
//如果有配置宽度信息为0
|
|
if (0 == nTWWidth)
|
|
{
|
|
bIsWidthEmpty = true;
|
|
}
|
|
else
|
|
{
|
|
//如果在配置时窗宽度的时候,前面有配置过时窗宽度为0,那么此时将报错
|
|
if (bIsWidthEmpty)
|
|
{
|
|
if (LANG_ZHCN == g_iUILanguage)
|
|
AfxMessageBox(_T("时窗配置乱序!"));
|
|
else
|
|
MessageBoxEx(NULL, _T("Config time windows disorder!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
|
|
return;
|
|
}
|
|
}
|
|
|
|
szTmp.Empty();
|
|
szTmp.Format("M%dST = %d", n, nTWStart);
|
|
szArray.Add(szTmp);
|
|
|
|
szTmp.Empty();
|
|
szTmp.Format("M%dTW = %d", n, nTWWidth);
|
|
szArray.Add(szTmp);
|
|
|
|
}
|
|
|
|
szTmp.Empty();
|
|
szData.Empty();
|
|
|
|
CString szSql = _T("");
|
|
szSql = "update ac set ";
|
|
|
|
for (int i = 0; i < szArray.GetSize(); i++)
|
|
{
|
|
szSql += szArray.GetAt(i);
|
|
|
|
if (i != szArray.GetSize() - 1)
|
|
szSql += ",";
|
|
}
|
|
|
|
szTmp.Format(" where TDID = %d", m_pTdType->m_dwID);
|
|
|
|
szSql += szTmp;
|
|
|
|
m_pTdType->ExcuteSql(szSql);
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
void CModifyIpCurveDlg::OnDblclkRange(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
NM_LISTVIEW* pNMListView=(NM_LISTVIEW*)pNMHDR;
|
|
CRect rc;
|
|
if(pNMListView->iItem!=-1)
|
|
{
|
|
m_row=pNMListView->iItem;//m_row为被选中行的行序号(int类型成员变量)
|
|
m_column=pNMListView->iSubItem;//m_column为被选中行的列序号(int类型成员变量)
|
|
m_CurveList.GetSubItemRect(pNMListView->iItem, pNMListView->iSubItem,LVIR_LABEL,rc);//取得子项的矩形
|
|
|
|
rc.top+=14;
|
|
rc.left+=16;
|
|
rc.right+=16;
|
|
rc.bottom+=18;
|
|
|
|
CString szTmp = _T("");
|
|
szTmp = m_CurveList.GetItemText(pNMListView->iItem, pNMListView->iSubItem);
|
|
|
|
//编辑的表格必须要有内容,且第一列不能编辑
|
|
if (szTmp.GetLength() != 0 && szTmp.Left(1) != "M")
|
|
{
|
|
m_Edit.SetWindowText(szTmp);//将子项的内容显示到编辑框中
|
|
m_Edit.ShowWindow(SW_SHOW);//显示编辑框
|
|
m_Edit.MoveWindow(&rc);//将编辑框移动到子项上面,覆盖在子项上
|
|
m_Edit.SetFocus();//使编辑框取得焦点
|
|
m_Edit.CreateSolidCaret(1,rc.Height()-5);//创建一个光标
|
|
m_Edit.ShowCaret();//显示光标
|
|
m_Edit.SetSel(0, -1);//光标文字全选
|
|
// m_Edit.SetSel(-1);//使光标移到最后面
|
|
}
|
|
}
|
|
*pResult = 0;
|
|
}
|
|
|
|
void CModifyIpCurveDlg::OnKillfocusEdit()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
// TODO: Add your control notification handler code here
|
|
CString str;
|
|
m_Edit.GetWindowText(str);//取得编辑框的内容
|
|
|
|
if (str.GetLength() == 0)
|
|
{
|
|
str = _T("0");
|
|
}
|
|
|
|
m_CurveList.SetItemText(m_row,m_column,str);//将该内容更新到CListCtrl中
|
|
|
|
m_Edit.ShowWindow(SW_HIDE);//隐藏编辑框
|
|
}
|
|
|
|
BOOL CModifyIpCurveDlg::PreTranslateMessage(MSG* pMsg)
|
|
{
|
|
// TODO: Add your specialized code here and/or call the base class
|
|
|
|
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
return CDialog::PreTranslateMessage(pMsg);
|
|
}
|