📄 externalutils.cpp
字号:
// ExternalUtils.cpp : implementation file
//
#include "stdafx.h"
#include "MyIE.h"
#include "ExternalUtils.h"
#include "MainFrm.h"
#include "InputUtil.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#pragma optimize( "s", on)
/////////////////////////////////////////////////////////////////////////////
// CExternalUtils dialog
CExternalUtils::CExternalUtils(CWnd* pParent /*=NULL*/)
: CDialog(CExternalUtils::IDD, pParent)
{
//{{AFX_DATA_INIT(CExternalUtils)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CExternalUtils::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CExternalUtils)
DDX_Control(pDX, IDC_EXTERN_UTIL, m_UtilList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CExternalUtils, CDialog)
//{{AFX_MSG_MAP(CExternalUtils)
ON_BN_CLICKED(IDC_ADD_UTIL, OnAddUtil)
ON_BN_CLICKED(IDC_MOD_UTIL, OnModUtil)
ON_BN_CLICKED(IDC_DEL_UTIL, OnDelUtil)
ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN1, OnDeltaposSpin1)
ON_NOTIFY(LVN_ENDLABELEDIT, IDC_EXTERN_UTIL, OnEndlabeleditExternUtil)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_EXTERN_UTIL, OnItemchangedExternUtil)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CExternalUtils message handlers
BOOL CExternalUtils::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_UtilList.SetExtendedStyle(m_UtilList.GetExtendedStyle()|LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT);
int i=0;
CRect rect;
m_UtilList.InsertColumn(0,"Name");
m_UtilList.GetWindowRect(rect);
m_UtilList.SetColumnWidth(0, 70);
m_UtilList.InsertColumn(1,"Command");
m_UtilList.SetColumnWidth(1, rect.Width()-75);
m_ExternalList.Clone(&((CMainFrame*)pMainFrame)->m_ExternalUtilList);
m_bSkip = TRUE;
for (i=0;i <= m_ExternalList.m_UtilList.GetUpperBound();i++)
{
m_UtilList.InsertItem(i, m_ExternalList.m_UtilList.GetAt(i)->m_strUtilName);
m_UtilList.SetItemText(i, 1, m_ExternalList.m_UtilList.GetAt(i)->m_strUtilCmd);
if(m_ExternalList.m_UtilList.GetAt(i)->m_bUtilStart)
m_UtilList.SetCheck(i);
}
m_bSkip = FALSE;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CExternalUtils::OnOK()
{
// TODO: Add extra validation here
((CMainFrame*)pMainFrame)->m_ExternalUtilList.Clone(&m_ExternalList);
CDialog::OnOK();
}
void CExternalUtils::OnAddUtil()
{
// TODO: Add your control notification handler code here
CInputUtil dlg;
if(dlg.DoModal()==IDOK)
{
if(!dlg.m_Command.IsEmpty())
{
if(dlg.m_Name.IsEmpty())
dlg.m_Name = dlg.m_Command;
m_bSkip = TRUE;
int i = m_UtilList.GetItemCount();
i = m_UtilList.InsertItem(i, dlg.m_Name);
m_UtilList.SetItemText(i, 1, dlg.m_Command);
m_UtilList.SetCheck(i,dlg.m_bStartup);
CExternalUtilItem* eui = new CExternalUtilItem;
eui->m_strUtilName = dlg.m_Name;
eui->m_strUtilCmd = dlg.m_Command;
eui->m_bUtilStart = dlg.m_bStartup;
eui->m_bUtilClose = dlg.m_bClose;
eui->m_iProcess = 0;
m_ExternalList.m_UtilList.Add(eui);
m_bSkip = FALSE;
}
}
}
void CExternalUtils::OnModUtil()
{
// TODO: Add your control notification handler code here
POSITION pos = m_UtilList.GetFirstSelectedItemPosition();
int nItem;
CInputUtil dlg;
if(pos!=NULL)
{
nItem = m_UtilList.GetNextSelectedItem(pos);
dlg.m_Name = m_UtilList.GetItemText(nItem, 0);
dlg.m_Command = m_UtilList.GetItemText(nItem, 1);
dlg.m_bStartup = m_UtilList.GetCheck(nItem);
dlg.m_bClose = m_ExternalList.m_UtilList.GetAt(nItem)->m_bUtilClose;
}
else
return;
if(dlg.DoModal()==IDOK)
{
if(!dlg.m_Command.IsEmpty())
{
if(dlg.m_Name.IsEmpty())
dlg.m_Name = dlg.m_Command;
m_UtilList.SetItemText(nItem, 0, dlg.m_Name);
m_UtilList.SetItemText(nItem, 1, dlg.m_Command);
m_UtilList.SetCheck(nItem,dlg.m_bStartup);
CExternalUtilItem* eui = m_ExternalList.m_UtilList.GetAt(nItem);
eui->m_strUtilName = dlg.m_Name;
eui->m_strUtilCmd = dlg.m_Command;
eui->m_bUtilStart = dlg.m_bStartup;
eui->m_bUtilClose = dlg.m_bClose;
}
}
}
void CExternalUtils::OnDelUtil()
{
// TODO: Add your control notification handler code here
POSITION pos = m_UtilList.GetFirstSelectedItemPosition();
int nItem;
if(pos!=NULL)
{
nItem = m_UtilList.GetNextSelectedItem(pos);
m_UtilList.DeleteItem(nItem);
delete m_ExternalList.m_UtilList.GetAt(nItem);
m_ExternalList.m_UtilList.RemoveAt(nItem);
}
else
return;
}
void CExternalUtils::OnDeltaposSpin1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
// TODO: Add your control notification handler code here
POSITION pos = m_UtilList.GetFirstSelectedItemPosition();
int nItem = -1, newItem;
if(pos!=NULL)
{
nItem = m_UtilList.GetNextSelectedItem(pos);
if(pNMUpDown->iDelta<0)
newItem = nItem -1;
else
newItem = nItem + 1;
int n = m_UtilList.GetItemCount();
if(newItem>=0 && newItem<n)
{
CString str = m_UtilList.GetItemText(nItem,0);
CString str1 = m_UtilList.GetItemText(nItem,1);
BOOL bs = m_UtilList.GetCheck(nItem);
m_UtilList.DeleteItem(nItem);
m_UtilList.InsertItem(newItem, str);
m_UtilList.SetItemText(newItem, 1, str1);
m_UtilList.SetCheck(newItem, bs);
m_UtilList.SetItemState(newItem, LVIS_SELECTED, LVIS_SELECTED);
m_UtilList.EnsureVisible(newItem, FALSE);
CExternalUtilItem* eui = m_ExternalList.m_UtilList.GetAt(nItem);
m_ExternalList.m_UtilList.SetAt(nItem, m_ExternalList.m_UtilList.GetAt(newItem));
m_ExternalList.m_UtilList.SetAt(newItem, eui);
}
}
*pResult = 0;
}
void CExternalUtils::OnEndlabeleditExternUtil(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here
CString str;
m_UtilList.GetEditControl()->GetWindowText(str);
str.TrimLeft();
str.TrimRight();
m_UtilList.SetItemText(pDispInfo->item.iItem,0,str);
m_ExternalList.m_UtilList.GetAt(pDispInfo->item.iItem)->m_strUtilName = str;
*pResult = 0;
}
void CExternalUtils::OnItemchangedExternUtil(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
if(!m_bSkip)
m_ExternalList.m_UtilList.GetAt(pNMListView->iItem)->m_bUtilStart =
m_UtilList.GetCheck(pNMListView->iItem);
*pResult = 0;
}
#pragma optimize( "s", off)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -