⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 externalutils.cpp

📁 myie的源代码
💻 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 + -