2023-06-20 05:35:59 +00:00
|
|
|
|
// DlgRange.cpp: 实现文件
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
#include "hgjson.h"
|
|
|
|
|
#include "DlgRange.h"
|
|
|
|
|
#include "afxdialogex.h"
|
|
|
|
|
|
|
|
|
|
#include "resource.h"
|
2023-09-13 04:45:10 +00:00
|
|
|
|
#include "DlgCondition.h"
|
2023-06-20 05:35:59 +00:00
|
|
|
|
|
|
|
|
|
// CDlgRange 对话框
|
|
|
|
|
|
|
|
|
|
IMPLEMENT_DYNAMIC(CDlgRange, CDialogEx)
|
|
|
|
|
|
2023-09-13 04:45:10 +00:00
|
|
|
|
CDlgRange::CDlgRange(const wchar_t* name, int type, CWnd* pParent /*=nullptr*/)
|
2023-06-20 05:35:59 +00:00
|
|
|
|
: CDialogEx(IDD_RANGE, pParent)
|
2023-09-13 04:45:10 +00:00
|
|
|
|
, name_(name ? name : L""), type_(type)
|
2023-06-20 05:35:59 +00:00
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CDlgRange::~CDlgRange()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
std::wstring CDlgRange::get_item_text(UINT id)
|
|
|
|
|
{
|
|
|
|
|
int l = GetDlgItem(id)->GetWindowTextLengthW();
|
|
|
|
|
wchar_t* buf = new wchar_t[l + 4];
|
|
|
|
|
|
|
|
|
|
l = GetDlgItem(id)->GetWindowTextW(buf, l + 2);
|
|
|
|
|
buf[l] = 0;
|
|
|
|
|
|
|
|
|
|
std::wstring ret(buf);
|
|
|
|
|
|
|
|
|
|
delete[] buf;
|
|
|
|
|
|
|
|
|
|
return std::move(ret);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CDlgRange::DoDataExchange(CDataExchange* pDX)
|
|
|
|
|
{
|
|
|
|
|
CDialogEx::DoDataExchange(pDX);
|
|
|
|
|
DDX_Control(pDX, IDC_LIST1, list_);
|
|
|
|
|
DDX_Control(pDX, IDC_COMBO_VAL, val_);
|
2023-09-13 04:45:10 +00:00
|
|
|
|
DDX_Control(pDX, IDC_COMBO_RANGE_FIELD, range_type_);
|
2023-06-20 05:35:59 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL CDlgRange::OnInitDialog()
|
|
|
|
|
{
|
|
|
|
|
CDialogEx::OnInitDialog();
|
|
|
|
|
|
|
|
|
|
// Set the icon for this dialog. The framework does this automatically
|
|
|
|
|
// when the application's main window is not a dialog
|
|
|
|
|
list_.SetExtendedStyle(list_.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_INFOTIP);
|
2023-09-13 04:45:10 +00:00
|
|
|
|
list_.InsertColumn(0, TEXT("Value lists"), 0, 150);
|
2023-09-14 03:27:07 +00:00
|
|
|
|
list_.InsertColumn(1, TEXT("Condition"), 0, 159);
|
2023-09-13 07:48:11 +00:00
|
|
|
|
//list_.InsertColumn(2, TEXT("Default"), 0, 48);
|
2023-06-20 05:35:59 +00:00
|
|
|
|
|
2023-09-13 04:45:10 +00:00
|
|
|
|
GetDlgItem(IDC_EDIT_VAL)->EnableWindow(type_ != TYPE_FIELDS);
|
|
|
|
|
list_.EnableWindow(type_ != TYPE_FIELDS);
|
|
|
|
|
GetDlgItem(IDC_BUTTON_ADD)->EnableWindow(type_ != TYPE_FIELDS);
|
2023-06-20 05:35:59 +00:00
|
|
|
|
|
|
|
|
|
GetDlgItem(IDC_EDIT_FROM)->EnableWindow(type_ == TYPE_RANGE);
|
|
|
|
|
GetDlgItem(IDC_EDIT_TO)->EnableWindow(type_ == TYPE_RANGE);
|
|
|
|
|
GetDlgItem(IDC_EDIT_STEP)->EnableWindow(type_ == TYPE_RANGE);
|
|
|
|
|
GetDlgItem(IDC_EDIT_INIT2)->EnableWindow(type_ == TYPE_RANGE);
|
2023-09-13 04:45:10 +00:00
|
|
|
|
range_type_.EnableWindow(type_ == TYPE_RANGE);
|
2023-06-20 05:35:59 +00:00
|
|
|
|
|
|
|
|
|
GetDlgItem(IDC_COMBO_FIELD)->EnableWindow(type_ == TYPE_FIELDS);
|
|
|
|
|
val_.EnableWindow(type_ == TYPE_FIELDS);
|
|
|
|
|
|
2023-09-13 07:48:11 +00:00
|
|
|
|
func_menu_.LoadMenu(IDR_MENU_RANGE_VALUE);
|
|
|
|
|
list_cur_sel_ = -1;
|
|
|
|
|
|
2023-10-16 07:49:01 +00:00
|
|
|
|
if (type_ == TYPE_LIST || type_ == TYPE_RANGE || type_ == TYPE_VISIBLE)
|
2023-06-20 05:35:59 +00:00
|
|
|
|
{
|
2023-09-13 04:45:10 +00:00
|
|
|
|
bool def = false;
|
2023-06-20 05:35:59 +00:00
|
|
|
|
for (auto& v: vals_)
|
|
|
|
|
{
|
2023-09-13 04:45:10 +00:00
|
|
|
|
int ind = list_.InsertItem(list_.GetItemCount(), v.val.c_str());
|
2023-09-13 07:48:11 +00:00
|
|
|
|
std::wstring cond(v.cond);
|
|
|
|
|
|
|
|
|
|
for (auto& init : init_)
|
2023-09-13 04:45:10 +00:00
|
|
|
|
{
|
2023-09-13 07:48:11 +00:00
|
|
|
|
if (v.val == init.val)
|
|
|
|
|
{
|
|
|
|
|
//list_.SetItemText(ind, 2, L"yes");
|
|
|
|
|
cond.insert(0, L"default:");
|
|
|
|
|
def = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
2023-09-13 04:45:10 +00:00
|
|
|
|
}
|
2023-09-13 07:48:11 +00:00
|
|
|
|
list_.SetItemText(ind, 1, cond.c_str());
|
2023-06-20 05:35:59 +00:00
|
|
|
|
}
|
|
|
|
|
|
2023-09-13 07:48:11 +00:00
|
|
|
|
if (!def && init_.size())
|
2023-09-13 04:45:10 +00:00
|
|
|
|
{
|
2023-09-13 07:48:11 +00:00
|
|
|
|
int ind = list_.InsertItem(list_.GetItemCount(), init_[0].val.c_str());
|
2023-09-13 04:45:10 +00:00
|
|
|
|
list_.SetItemText(ind, 1, L"default:");
|
|
|
|
|
}
|
2023-06-20 05:35:59 +00:00
|
|
|
|
}
|
2023-09-13 04:45:10 +00:00
|
|
|
|
//else if(type_ == TYPE_RANGE && vals_.size() == 3)
|
|
|
|
|
//{
|
|
|
|
|
// SetDlgItemTextW(IDC_EDIT_FROM, vals_[0].val.c_str());
|
|
|
|
|
// SetDlgItemTextW(IDC_EDIT_TO, vals_[1].val.c_str());
|
|
|
|
|
// SetDlgItemTextW(IDC_EDIT_STEP, vals_[2].val.c_str());
|
|
|
|
|
|
|
|
|
|
// SetDlgItemTextW(IDC_EDIT_INIT2, init_.c_str());
|
|
|
|
|
//}
|
2023-06-20 05:35:59 +00:00
|
|
|
|
else if (type_ == TYPE_FIELDS)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
2023-10-16 07:49:01 +00:00
|
|
|
|
|
|
|
|
|
if (type_ == TYPE_VISIBLE)
|
|
|
|
|
{
|
|
|
|
|
RECT r0 = { 0 }, r = { 0 };
|
|
|
|
|
CComboBox * box = (CComboBox*)GetDlgItem(IDC_COMBO_RANGE_FIELD);
|
|
|
|
|
|
|
|
|
|
GetDlgItem(IDC_EDIT_VAL)->ShowWindow(SW_HIDE);
|
|
|
|
|
GetDlgItem(IDC_EDIT_VAL)->GetWindowRect(&r0);
|
|
|
|
|
box->GetWindowRect(&r);
|
|
|
|
|
r.left = r0.left;
|
|
|
|
|
ScreenToClient(&r);
|
|
|
|
|
box->MoveWindow(&r);
|
|
|
|
|
box->EnableWindow(TRUE);
|
|
|
|
|
|
|
|
|
|
box->ResetContent();
|
|
|
|
|
for (auto& v : visible_)
|
|
|
|
|
box->AddString(v.c_str());
|
|
|
|
|
}
|
2023-06-20 05:35:59 +00:00
|
|
|
|
|
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CDlgRange, CDialogEx)
|
|
|
|
|
ON_BN_CLICKED(IDC_BUTTON_ADD, &CDlgRange::OnBnClickedButton1)
|
|
|
|
|
ON_BN_CLICKED(IDOK, &CDlgRange::OnBnClickedOk)
|
|
|
|
|
ON_NOTIFY(NM_DBLCLK, IDC_LIST1, &CDlgRange::OnNMDblclkList1)
|
|
|
|
|
ON_CBN_SELCHANGE(IDC_COMBO_FIELD, &CDlgRange::OnCbnSelchangeComboField)
|
2023-09-13 07:48:11 +00:00
|
|
|
|
ON_COMMAND(ID_RANGEVALUEMENU_DEFAULT, &CDlgRange::OnRangevaluemenuDefault)
|
|
|
|
|
ON_COMMAND(ID_RANGEVALUEMENU_DELETE, &CDlgRange::OnRangevaluemenuDelete)
|
|
|
|
|
ON_COMMAND(ID_RANGEVALUEMENU_SETCONDITION, &CDlgRange::OnRangevaluemenuSetcondition)
|
|
|
|
|
ON_NOTIFY(NM_RCLICK, IDC_LIST1, &CDlgRange::OnNMRClickList1)
|
2023-06-20 05:35:59 +00:00
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// CDlgRange 消息处理程序
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CDlgRange::OnBnClickedButton1()
|
|
|
|
|
{
|
|
|
|
|
// TODO: 在此添加控件通知处理程序代码
|
2023-09-13 04:45:10 +00:00
|
|
|
|
std::wstring val(get_item_text(IDC_EDIT_VAL)), range(get_item_text(IDC_COMBO_RANGE_FIELD));
|
2023-06-20 05:35:59 +00:00
|
|
|
|
int ind = -1;
|
|
|
|
|
|
2023-10-16 07:49:01 +00:00
|
|
|
|
if (type_ == TYPE_VISIBLE)
|
|
|
|
|
val = std::move(range);
|
|
|
|
|
|
2023-06-20 05:35:59 +00:00
|
|
|
|
if (val.empty())
|
|
|
|
|
{
|
|
|
|
|
MessageBox(TEXT("NO Input!"));
|
2023-09-13 04:45:10 +00:00
|
|
|
|
GotoDlgCtrl(GetDlgItem(IDC_EDIT_VAL));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (type_ == TYPE_RANGE && range.empty())
|
|
|
|
|
{
|
|
|
|
|
MessageBox(TEXT("Range value, must specify the role!"));
|
|
|
|
|
GotoDlgCtrl(GetDlgItem(IDC_COMBO_RANGE_FIELD));
|
2023-06-20 05:35:59 +00:00
|
|
|
|
return;
|
|
|
|
|
}
|
2023-09-15 01:26:32 +00:00
|
|
|
|
if (type_ == TYPE_LIST)
|
2023-06-20 05:35:59 +00:00
|
|
|
|
{
|
2023-09-15 01:26:32 +00:00
|
|
|
|
for (int i = 0; i < list_.GetItemCount(); ++i)
|
2023-06-20 05:35:59 +00:00
|
|
|
|
{
|
2023-09-15 01:26:32 +00:00
|
|
|
|
wchar_t buf[25] = { 0 };
|
|
|
|
|
list_.GetItemText(i, 0, buf, _countof(buf) - 1);
|
|
|
|
|
if (val == buf)
|
|
|
|
|
{
|
|
|
|
|
list_.SetItemState(i, LVIS_FOCUSED | LVIS_SELECTED | LVIS_ACTIVATING, LVIS_FOCUSED | LVIS_SELECTED | LVIS_ACTIVATING);
|
|
|
|
|
list_.SetSelectionMark(i);
|
|
|
|
|
ind = i;
|
|
|
|
|
break;
|
|
|
|
|
}
|
2023-06-20 05:35:59 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(ind == -1)
|
|
|
|
|
ind = list_.InsertItem(list_.GetItemCount(), val.c_str());
|
2023-09-13 04:45:10 +00:00
|
|
|
|
if (type_ == TYPE_RANGE)
|
|
|
|
|
list_.SetItemText(ind, 1, (range + L":").c_str());
|
2023-06-20 05:35:59 +00:00
|
|
|
|
list_.SetItemState(ind, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);
|
|
|
|
|
list_.SetSelectionMark(ind);
|
|
|
|
|
list_.EnsureVisible(ind, FALSE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2023-09-13 07:48:11 +00:00
|
|
|
|
void CDlgRange::OnNMDblclkList1(NMHDR* pNMHDR, LRESULT* pResult)
|
|
|
|
|
{
|
|
|
|
|
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
|
|
|
|
|
// TODO: 在此添加控件通知处理程序代码
|
|
|
|
|
*pResult = 0;
|
|
|
|
|
|
|
|
|
|
// move to context menu, nothing to do here
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
POINT pos = { 0 };
|
|
|
|
|
int item = -1;
|
|
|
|
|
|
|
|
|
|
GetCursorPos(&pos);
|
|
|
|
|
list_.ScreenToClient(&pos);
|
|
|
|
|
item = list_.HitTest(pos);
|
|
|
|
|
if (item != -1)
|
|
|
|
|
{
|
|
|
|
|
wchar_t buf[256] = { 0 };
|
|
|
|
|
int ret = 0;
|
|
|
|
|
|
|
|
|
|
list_.GetItemText(item, 0, buf, _countof(buf) - 1);
|
|
|
|
|
ret = ::MessageBoxW(m_hWnd, L"默认值、删除或者条件设置:\r\nYes: 是\r\nNo: 删除该项\r\nCancel: 设置条件", buf, MB_YESNOCANCEL);
|
|
|
|
|
if (ret == IDYES)
|
|
|
|
|
{
|
|
|
|
|
//init_ = buf;
|
|
|
|
|
//for (int i = 0; i < list_.GetItemCount(); ++i)
|
|
|
|
|
//{
|
|
|
|
|
// list_.SetItemText(i, 2, i == item ? L"yes" : L"");
|
|
|
|
|
//}
|
|
|
|
|
list_.SetItemText(item, 2, L"yes");
|
|
|
|
|
|
|
|
|
|
CONDVAL cv;
|
|
|
|
|
cv.val = buf;
|
|
|
|
|
list_.GetItemText(item, 1, buf, _countof(buf) - 1);
|
|
|
|
|
cv.cond = buf;
|
|
|
|
|
init_.push_back(cv);
|
|
|
|
|
}
|
|
|
|
|
else if (ret == IDNO)
|
|
|
|
|
{
|
|
|
|
|
list_.DeleteItem(item);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
CDlgCondition dlg(name_.c_str());
|
|
|
|
|
wchar_t buf[512] = { 0 }, * init = buf;
|
|
|
|
|
|
|
|
|
|
list_.GetItemText(item, 1, buf, _countof(buf) - 1);
|
|
|
|
|
if (type_ == TYPE_RANGE && wcsstr(buf, L":"))
|
|
|
|
|
{
|
|
|
|
|
init = wcsstr(buf, L":") + 1;
|
|
|
|
|
}
|
|
|
|
|
dlg.init_data(item_all_, item_val_, init);
|
|
|
|
|
if (dlg.DoModal() == IDOK)
|
|
|
|
|
{
|
|
|
|
|
if (type_ == TYPE_RANGE && wcsstr(buf, L":"))
|
|
|
|
|
{
|
|
|
|
|
wcsstr(buf, L":")[1] = 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
buf[0] = 0;
|
|
|
|
|
list_.SetItemText(item, 1, (buf + dlg.get_condition()).c_str());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CDlgRange::OnCbnSelchangeComboField()
|
|
|
|
|
{
|
|
|
|
|
// TODO: 在此添加控件通知处理程序代码
|
|
|
|
|
std::wstring field(get_item_text(IDC_COMBO_FIELD));
|
|
|
|
|
|
|
|
|
|
init_val_api_(field.c_str(), &val_);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CDlgRange::OnRangevaluemenuDefault()
|
|
|
|
|
{
|
|
|
|
|
// TODO: 在此添加命令处理程序代码
|
|
|
|
|
wchar_t buf[512] = { 0 };
|
|
|
|
|
bool def = false;
|
|
|
|
|
|
|
|
|
|
//list_.GetItemText(list_cur_sel_, 2, buf, _countof(buf) - 1);
|
|
|
|
|
//if (buf[0] == 0)
|
|
|
|
|
// wcscpy(buf, L"yes");
|
|
|
|
|
//else
|
|
|
|
|
// buf[0] = 0;
|
|
|
|
|
//list_.SetItemText(list_cur_sel_, 2, buf);
|
|
|
|
|
//def = wcscmp(buf, L"yes") == 0;
|
|
|
|
|
|
|
|
|
|
list_.GetItemText(list_cur_sel_, 1, buf, _countof(buf) - 1);
|
|
|
|
|
std::wstring cond(buf);
|
|
|
|
|
size_t pos = cond.find(L"default:");
|
|
|
|
|
|
|
|
|
|
if (pos == 0)
|
|
|
|
|
cond.erase(0, lstrlenW(L"default:"));
|
|
|
|
|
else
|
|
|
|
|
cond.insert(0, L"default:");
|
|
|
|
|
list_.SetItemText(list_cur_sel_, 1, cond.c_str());
|
|
|
|
|
|
|
|
|
|
list_cur_sel_ = -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CDlgRange::OnRangevaluemenuDelete()
|
|
|
|
|
{
|
|
|
|
|
// TODO: 在此添加命令处理程序代码
|
|
|
|
|
list_.DeleteItem(list_cur_sel_);
|
|
|
|
|
list_cur_sel_ = -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CDlgRange::OnRangevaluemenuSetcondition()
|
|
|
|
|
{
|
|
|
|
|
// TODO: 在此添加命令处理程序代码
|
|
|
|
|
CDlgCondition dlg(name_.c_str());
|
|
|
|
|
wchar_t buf[512] = { 0 }, * init = buf;
|
|
|
|
|
|
|
|
|
|
list_.GetItemText(list_cur_sel_, 1, buf, _countof(buf) - 1);
|
|
|
|
|
if (type_ == TYPE_RANGE && wcsstr(buf, L":"))
|
|
|
|
|
{
|
|
|
|
|
init = wcsstr(buf, L":") + 1;
|
|
|
|
|
}
|
|
|
|
|
dlg.init_data(item_all_, item_val_, init);
|
|
|
|
|
if (dlg.DoModal() == IDOK)
|
|
|
|
|
{
|
|
|
|
|
if (type_ == TYPE_RANGE && wcsstr(buf, L":"))
|
|
|
|
|
{
|
|
|
|
|
wcsstr(buf, L":")[1] = 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
buf[0] = 0;
|
|
|
|
|
list_.SetItemText(list_cur_sel_, 1, (buf + dlg.get_condition()).c_str());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
list_cur_sel_ = -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int get_list_sel(CListCtrl* lc)
|
|
|
|
|
{
|
|
|
|
|
POSITION pos = lc->GetFirstSelectedItemPosition();
|
|
|
|
|
int sel = lc->GetNextSelectedItem(pos);
|
|
|
|
|
|
|
|
|
|
return sel;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CDlgRange::OnNMRClickList1(NMHDR* pNMHDR, LRESULT* pResult)
|
|
|
|
|
{
|
|
|
|
|
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
|
|
|
|
|
// TODO: 在此添加控件通知处理程序代码
|
|
|
|
|
*pResult = 0;
|
|
|
|
|
POINT pt = { 0 };
|
|
|
|
|
|
|
|
|
|
list_cur_sel_ = get_list_sel(&list_);
|
|
|
|
|
|
|
|
|
|
//func_menu_.CheckMenuItem(ID_LISTMENU_TOOLTIPS, show_list_tooltips_ ? MF_CHECKED : MF_UNCHECKED);
|
|
|
|
|
if (list_cur_sel_ >= 0 && list_cur_sel_ < list_.GetItemCount())
|
|
|
|
|
{
|
|
|
|
|
wchar_t buf[80] = { 0 };
|
|
|
|
|
|
|
|
|
|
list_.GetItemText(list_cur_sel_, 1, buf, _countof(buf) - 1);
|
|
|
|
|
if (wcsstr(buf, L"min:") == buf || wcsstr(buf, L"max:") == buf || wcsstr(buf, L"step:") == buf)
|
|
|
|
|
func_menu_.EnableMenuItem(ID_RANGEVALUEMENU_DEFAULT, MF_DISABLED);
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
func_menu_.EnableMenuItem(ID_RANGEVALUEMENU_DEFAULT, MF_ENABLED);
|
|
|
|
|
}
|
|
|
|
|
list_.GetItemText(list_cur_sel_, 1, buf, _countof(buf) - 1);
|
|
|
|
|
func_menu_.CheckMenuItem(ID_RANGEVALUEMENU_DEFAULT, wcsstr(buf, L"default:") == buf ? MF_CHECKED : MF_UNCHECKED);
|
|
|
|
|
GetCursorPos(&pt);
|
|
|
|
|
func_menu_.GetSubMenu(0)->TrackPopupMenu(0, pt.x, pt.y, this);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2023-06-20 05:35:59 +00:00
|
|
|
|
void CDlgRange::OnBnClickedOk()
|
|
|
|
|
{
|
|
|
|
|
// TODO: 在此添加控件通知处理程序代码
|
|
|
|
|
vals_.clear();
|
2023-09-13 07:48:11 +00:00
|
|
|
|
init_.clear();
|
2023-10-16 07:49:01 +00:00
|
|
|
|
if (type_ == TYPE_LIST || type_ == TYPE_RANGE || type_ == TYPE_VISIBLE)
|
2023-06-20 05:35:59 +00:00
|
|
|
|
{
|
2023-09-13 04:45:10 +00:00
|
|
|
|
bool range = type_ == TYPE_RANGE, bl = false, bu = false, bs = false;
|
|
|
|
|
|
2023-06-20 05:35:59 +00:00
|
|
|
|
if(list_.GetItemCount() == 0)
|
|
|
|
|
{
|
2023-10-16 07:49:01 +00:00
|
|
|
|
if (type_ != TYPE_VISIBLE)
|
|
|
|
|
{
|
|
|
|
|
MessageBox(TEXT("没有输入有效的值列表"), TEXT("No Value"), MB_OK);
|
|
|
|
|
return;
|
|
|
|
|
}
|
2023-06-20 05:35:59 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < list_.GetItemCount(); ++i)
|
|
|
|
|
{
|
|
|
|
|
wchar_t buf[256] = { 0 };
|
2023-09-13 04:45:10 +00:00
|
|
|
|
CONDVAL val;
|
2023-06-20 05:35:59 +00:00
|
|
|
|
|
2023-09-13 04:45:10 +00:00
|
|
|
|
list_.GetItemText(i, 0, buf, _countof(buf) - 1);
|
|
|
|
|
val.val = buf;
|
|
|
|
|
list_.GetItemText(i, 1, buf, _countof(buf) - 1);
|
|
|
|
|
val.cond = buf;
|
2023-09-14 03:27:07 +00:00
|
|
|
|
if (val.cond.find(L"default:") == 0)
|
|
|
|
|
{
|
|
|
|
|
val.cond.erase(0, lstrlenW(L"default:"));
|
|
|
|
|
init_.push_back(val);
|
|
|
|
|
}
|
2023-09-13 04:45:10 +00:00
|
|
|
|
if (range)
|
|
|
|
|
{
|
|
|
|
|
if (val.cond.find(L"min:") == 0)
|
2023-09-14 03:27:07 +00:00
|
|
|
|
{
|
|
|
|
|
vals_.push_back(val);
|
2023-09-13 04:45:10 +00:00
|
|
|
|
bl = true;
|
2023-09-14 03:27:07 +00:00
|
|
|
|
}
|
2023-09-13 04:45:10 +00:00
|
|
|
|
else if (val.cond.find(L"max:") == 0)
|
2023-09-14 03:27:07 +00:00
|
|
|
|
{
|
|
|
|
|
vals_.push_back(val);
|
2023-09-13 04:45:10 +00:00
|
|
|
|
bu = true;
|
2023-09-14 03:27:07 +00:00
|
|
|
|
}
|
|
|
|
|
else if (val.cond.find(L"step:") == 0)
|
|
|
|
|
{
|
|
|
|
|
vals_.push_back(val);
|
2023-09-13 04:45:10 +00:00
|
|
|
|
bs = true;
|
2023-09-14 03:27:07 +00:00
|
|
|
|
}
|
2023-09-13 04:45:10 +00:00
|
|
|
|
}
|
2023-10-16 07:49:01 +00:00
|
|
|
|
else if(type_ == TYPE_LIST || type_ == TYPE_VISIBLE)
|
2023-09-13 07:48:11 +00:00
|
|
|
|
vals_.push_back(val);
|
2023-06-20 05:35:59 +00:00
|
|
|
|
}
|
|
|
|
|
|
2023-09-13 04:45:10 +00:00
|
|
|
|
if (range)
|
2023-06-20 05:35:59 +00:00
|
|
|
|
{
|
2023-09-13 04:45:10 +00:00
|
|
|
|
std::wstring no(L"");
|
|
|
|
|
if (!bl)
|
|
|
|
|
{
|
|
|
|
|
no = L"lower value";
|
|
|
|
|
}
|
|
|
|
|
else if (!bu)
|
|
|
|
|
{
|
|
|
|
|
no = L"upper value";
|
|
|
|
|
}
|
|
|
|
|
else if (!bs)
|
|
|
|
|
{
|
|
|
|
|
no = L"step value";
|
|
|
|
|
}
|
|
|
|
|
if (!no.empty())
|
|
|
|
|
{
|
|
|
|
|
MessageBox(TEXT("没有输入有效的值列表"), no.c_str(), MB_OK);
|
|
|
|
|
return;
|
|
|
|
|
}
|
2023-06-20 05:35:59 +00:00
|
|
|
|
}
|
2023-10-16 07:49:01 +00:00
|
|
|
|
if (init_.empty() && type_ != TYPE_VISIBLE)
|
2023-09-13 07:48:11 +00:00
|
|
|
|
{
|
|
|
|
|
MessageBox(TEXT("请确定默认值!右键列表中的某项进行选择。 "), TEXT("No Default"), MB_OK);
|
|
|
|
|
return;
|
|
|
|
|
}
|
2023-06-20 05:35:59 +00:00
|
|
|
|
}
|
2023-09-13 04:45:10 +00:00
|
|
|
|
else if(type_ == TYPE_RANGE)
|
|
|
|
|
{
|
|
|
|
|
//std::wstring val(get_item_text(IDC_EDIT_FROM));
|
|
|
|
|
//
|
|
|
|
|
//if (val.empty())
|
|
|
|
|
//{
|
|
|
|
|
// MessageBox(TEXT("没有输入有效初始值"), TEXT("No Value"), MB_OK);
|
|
|
|
|
// GotoDlgCtrl(GetDlgItem(IDC_EDIT_FROM));
|
|
|
|
|
// return;
|
|
|
|
|
//}
|
|
|
|
|
//vals_.push_back(val);
|
|
|
|
|
//
|
|
|
|
|
//val = get_item_text(IDC_EDIT_TO);
|
|
|
|
|
//if (val.empty())
|
|
|
|
|
//{
|
|
|
|
|
// MessageBox(TEXT("没有输入有效终止值"), TEXT("No Value"), MB_OK);
|
|
|
|
|
// GotoDlgCtrl(GetDlgItem(IDC_EDIT_TO));
|
|
|
|
|
// return;
|
|
|
|
|
//}
|
|
|
|
|
//vals_.push_back(val);
|
|
|
|
|
//
|
|
|
|
|
//val = get_item_text(IDC_EDIT_STEP);
|
|
|
|
|
//if (val.empty())
|
|
|
|
|
//{
|
|
|
|
|
// MessageBox(TEXT("没有输入有效步长值"), TEXT("No Value"), MB_OK);
|
|
|
|
|
// GotoDlgCtrl(GetDlgItem(IDC_EDIT_TO));
|
|
|
|
|
// return;
|
|
|
|
|
//}
|
|
|
|
|
//vals_.push_back(val);
|
|
|
|
|
//
|
|
|
|
|
//init_ = get_item_text(IDC_EDIT_INIT2);
|
|
|
|
|
//if (init_.empty())
|
|
|
|
|
//{
|
|
|
|
|
// MessageBox(TEXT("没有输入有效默认值"), TEXT("No Value"), MB_OK);
|
|
|
|
|
// GotoDlgCtrl(GetDlgItem(IDC_EDIT_INIT2));
|
|
|
|
|
// return;
|
|
|
|
|
//}
|
|
|
|
|
}
|
2023-06-20 05:35:59 +00:00
|
|
|
|
else if (type_ == TYPE_FIELDS)
|
|
|
|
|
{
|
|
|
|
|
std::wstring field(get_item_text(IDC_COMBO_FIELD));
|
|
|
|
|
|
|
|
|
|
vals_.clear();
|
|
|
|
|
vals_.push_back(field);
|
|
|
|
|
|
2023-09-13 07:48:11 +00:00
|
|
|
|
CONDVAL cv;
|
|
|
|
|
cv.val = get_item_text(IDC_COMBO_VAL);
|
|
|
|
|
if (cv.val.empty())
|
2023-06-20 05:35:59 +00:00
|
|
|
|
{
|
|
|
|
|
MessageBox(TEXT("没有输入有效值"), TEXT("No Value"), MB_OK);
|
|
|
|
|
GotoDlgCtrl(GetDlgItem(IDC_COMBO_VAL));
|
|
|
|
|
return;
|
|
|
|
|
}
|
2023-09-13 07:48:11 +00:00
|
|
|
|
init_.push_back(cv);
|
2023-06-20 05:35:59 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CDialogEx::OnOK();
|
|
|
|
|
}
|