消除内存泄漏

This commit is contained in:
gb 2023-09-14 11:27:07 +08:00
parent ccba31637a
commit de688dfbe3
7 changed files with 121 additions and 27 deletions

View File

@ -115,6 +115,7 @@ void CDlgMain::insert_page(CDialogEx* page, const wchar_t* title)
BEGIN_MESSAGE_MAP(CDlgMain, CDialogEx)
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, &CDlgMain::OnTcnSelchangeTab1)
ON_NOTIFY(TCN_SELCHANGING, IDC_TAB1, &CDlgMain::OnTcnSelchangingTab1)
ON_WM_DESTROY()
END_MESSAGE_MAP()
@ -141,3 +142,20 @@ void CDlgMain::OnTcnSelchangingTab1(NMHDR* pNMHDR, LRESULT* pResult)
tab_.GetItem(tab_.GetCurSel(), &item);
((CWnd*)item.lParam)->ShowWindow(SW_HIDE);
}
void CDlgMain::OnDestroy()
{
CDialogEx::OnDestroy();
// TODO: 在此处添加消息处理程序代码
for (int i = 0; i < tab_.GetItemCount(); ++i)
{
TCITEM item = { 0 };
item.mask = TCIF_PARAM;
tab_.GetItem(i, &item);
delete (CDialogEx*)item.lParam;
}
}

View File

@ -27,4 +27,5 @@ public:
CTabCtrl tab_;
afx_msg void OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnTcnSelchangingTab1(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnDestroy();
};

View File

@ -118,7 +118,7 @@ BOOL CDlgCondition::OnInitDialog()
{
if (data->type != SANE_TYPE_GROUP)
{
int ind = items_.AddString(data->name.c_str());
int ind = items_.AddString(data->title.c_str());
items_.SetItemData(ind, (DWORD_PTR)data);
data = new OPTITEM;
}

File diff suppressed because one or more lines are too long

View File

@ -207,4 +207,5 @@ public:
afx_msg void OnSortGroup();
afx_msg void OnSortPosition();
afx_msg void OnBnClickedButtonShowui();
afx_msg void OnDestroy();
};

View File

@ -55,7 +55,7 @@ BOOL CDlgRange::OnInitDialog()
// when the application's main window is not a dialog
list_.SetExtendedStyle(list_.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_INFOTIP);
list_.InsertColumn(0, TEXT("Value lists"), 0, 150);
list_.InsertColumn(1, TEXT("Condition"), 0, 111);
list_.InsertColumn(1, TEXT("Condition"), 0, 159);
//list_.InsertColumn(2, TEXT("Default"), 0, 48);
GetDlgItem(IDC_EDIT_VAL)->EnableWindow(type_ != TYPE_FIELDS);
@ -372,22 +372,30 @@ void CDlgRange::OnBnClickedOk()
val.val = buf;
list_.GetItemText(i, 1, buf, _countof(buf) - 1);
val.cond = buf;
if (val.cond.find(L"default:") == 0)
{
val.cond.erase(0, lstrlenW(L"default:"));
init_.push_back(val);
}
if (range)
{
if (val.cond.find(L"min:") == 0)
{
vals_.push_back(val);
bl = true;
}
else if (val.cond.find(L"max:") == 0)
{
vals_.push_back(val);
bu = true;
else if(val.cond.find(L"step:") == 0)
}
else if (val.cond.find(L"step:") == 0)
{
vals_.push_back(val);
bs = true;
}
}
if (val.cond.find(L"default:") == 0)
{
init_.push_back(val);
val.cond.erase(0, lstrlenW(L"default:"));
}
if(type_ == TYPE_LIST)
else if(type_ == TYPE_LIST)
vals_.push_back(val);
}

Binary file not shown.