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

📄 orggroupdlg.cpp

📁 myie的源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// OrgGroupDlg.cpp : implementation file
//

#include "stdafx.h"
#include "myie.h"
#include "MainFrm.h"
#include "OrgGroupDlg.h"
#include "GroupUrlDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


#pragma optimize( "s", on )

/////////////////////////////////////////////////////////////////////////////
// COrgGroupDlg dialog


COrgGroupDlg::COrgGroupDlg(CWnd* pParent /*=NULL*/)
	: CDialog(COrgGroupDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(COrgGroupDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	m_pDragImage = NULL;

}


void COrgGroupDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(COrgGroupDlg)
	DDX_Control(pDX, IDC_INSERT, m_btnInsert);
	DDX_Control(pDX, IDC_URL_LIST, m_UrlList);
	DDX_Control(pDX, IDC_GROUP_LIST, m_GroupList);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(COrgGroupDlg, CDialog)
	//{{AFX_MSG_MAP(COrgGroupDlg)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_GROUP_LIST, OnSelChanging)
	ON_BN_CLICKED(IDC_NEW_GROUP, OnNewGroup)
	ON_BN_CLICKED(IDC_DEL_GROUP, OnDelGroup)
	ON_BN_CLICKED(IDC_DELETE, OnDelete)
	ON_NOTIFY(LVN_ENDLABELEDIT, IDC_GROUP_LIST, OnEndlabeleditGroupList)
	ON_BN_CLICKED(IDC_INSERT, OnInsert)
	ON_BN_CLICKED(IDC_UPDATE, OnUpdate)
	ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN2, OnDeltaposSpin2)
	ON_NOTIFY(NM_CLICK, IDC_GROUP_LIST, OnClickGroupList)
	ON_NOTIFY(LVN_BEGINDRAG, IDC_URL_LIST, OnBegindragUrlList)
	ON_WM_LBUTTONUP()
	ON_WM_MOUSEMOVE()
	ON_NOTIFY(NM_DBLCLK, IDC_URL_LIST, OnDblclkUrlList)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// COrgGroupDlg message handlers

BOOL COrgGroupDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	m_bInit = TRUE;
	
	// TODO: Add extra initialization here
	m_GroupList.SetExtendedStyle(m_GroupList.GetExtendedStyle()|LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT);

	//setup list ctrl
	CRect rect;
	int i=0;
	m_GroupList.InsertColumn(0,"");
	m_GroupList.GetWindowRect(rect);
	m_GroupList.SetColumnWidth(0, rect.Width()-10);

	m_UrlList.InsertColumn(0,"Name");
	m_UrlList.GetWindowRect(rect);
	m_UrlList.SetColumnWidth(0, 60);
	m_UrlList.InsertColumn(1,"URL");
	m_UrlList.SetColumnWidth(1, rect.Width()-73);

	//load group list
	m_strStartGroup = ((CMainFrame*)pMainFrame)->m_strStartGroup;
	if(((CMyIEApp*)AfxGetApp())->m_strGroupPath.Right(1) != "\\")
		((CMyIEApp*)AfxGetApp())->m_strGroupPath += "\\";
	CString psz = ((CMyIEApp*)AfxGetApp())->m_strGroupPath;

	WIN32_FIND_DATA wfd;
	HANDLE          h;
	psz += "*.cgp";
	
	CString strMenu;
	h = FindFirstFile(psz, &wfd);
	if(h != INVALID_HANDLE_VALUE)
	{
		do{
			strMenu = wfd.cFileName;
			strMenu = strMenu.Left(strMenu.GetLength()-4);
			m_GroupList.InsertItem(i, strMenu);
			if(strMenu == m_strStartGroup)
			{
				m_GroupList.SetCheck(i);
			}
			i++;
		}
		while(FindNextFile(h, &wfd));
	} 

	FindClose(h);

	m_GroupList.SetItemState(0, LVIS_SELECTED, LVIS_SELECTED);
	
	m_nLastSelItemID = -1;
	FillUrlList(0);
	if(i==0)
			m_btnInsert.EnableWindow(FALSE);

	m_bInit = FALSE;
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void COrgGroupDlg::FillUrlList(int index)
{
	if(m_nLastSelItemID == index)
		return;

	if(m_nLastSelItemID>=0)
		SaveUrlList(m_nLastSelItemID);

	m_nLastSelItemID = index;

	//remove all first
	m_UrlList.DeleteAllItems();
	m_UrlList.SetItemCount(0);

	if(index<0)
		return;

	CString filename;
	filename = m_GroupList.GetItemText(index, 0);

	filename = ((CMyIEApp*)AfxGetApp())->m_strGroupPath + filename+".cgp";

	char * valuepair = NULL;
	int nsize = 0;
	HANDLE hfile = INVALID_HANDLE_VALUE;
	try{
		hfile = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
		if(hfile == INVALID_HANDLE_VALUE)
			return;
		
		nsize = GetFileSize(hfile, NULL);
		CloseHandle(hfile);
		hfile = INVALID_HANDLE_VALUE;

		if(nsize>0)
		{
			nsize*=2;
			valuepair = new char[nsize+1];
			GetPrivateProfileSection("CaptorGroup", valuepair, nsize, filename);

			char * value, * tmp;
			int i =0;
			value = valuepair;
			while(value!=NULL && strlen(value)>0)
			{
				tmp = strchr(value, '=');
				*tmp = '\0';
				if(value!=NULL)
				{
					//value is name
					m_UrlList.InsertItem(i, value);
					value = tmp;
					value ++;
					m_UrlList.SetItemText(i, 1, value);
					i++;
				}
				value = strchr(value, '\0');
				value ++;
			}

			delete[] valuepair;
			valuepair = NULL;
		}
	}catch(...)
	{//?
		if(valuepair != NULL)
			delete[] valuepair;
		if(hfile!=INVALID_HANDLE_VALUE)
			CloseHandle(hfile);
	}
}

void COrgGroupDlg::SaveUrlList(int index)
{
	if(index<0)
		return;

	CString filename;
	filename = m_GroupList.GetItemText(index, 0);
	if(filename.IsEmpty())
		return;

	filename = ((CMyIEApp*)AfxGetApp())->m_strGroupPath + filename+".cgp";

	int n = m_UrlList.GetItemCount();
	WritePrivateProfileSection("CaptorGroup", NULL, filename);
	for( int i=0; i<n; i++)
	{
		WritePrivateProfileString("CaptorGroup", m_UrlList.GetItemText(i,0), m_UrlList.GetItemText(i,1), filename);
	}
	
}

void COrgGroupDlg::OnSelChanging(NMHDR* pNMHDR, LRESULT* pResult) 
{
	if(m_bInit)
		return;

	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	int i = m_GroupList.GetSelectedCount();
	if(i>0)
	{
		POSITION pos = m_GroupList.GetFirstSelectedItemPosition();
		int item = m_GroupList.GetNextSelectedItem(pos);
		FillUrlList(item);
		m_btnInsert.EnableWindow(1);
	}
	else
	{
		FillUrlList(-1);
		m_btnInsert.EnableWindow(0);
	}

	*pResult = 0;
}



void COrgGroupDlg::OnNewGroup() 
{
	// TODO: Add your control notification handler code here
	CString def = "New Group", str(def);
	
	char si[5]; int i=0;
	LVFINDINFO info;

	info.flags = LVFI_STRING;
	info.psz = str;
	
	while (m_GroupList.FindItem(&info) != -1)
	{
		i++;
		itoa(i, si, 10);
		str = def + " (";
		str += si;
		str += ")";
		info.psz = str;
	}
	
	i = m_GroupList.GetItemCount();
	m_GroupList.InsertItem(i, str);
	m_GroupList.SetFocus();
	m_GroupList.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);

	CString filename;
	filename = ((CMyIEApp*)AfxGetApp())->m_strGroupPath + str+".cgp";

	HANDLE hfile = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
	CloseHandle(hfile);

	m_GroupList.EnsureVisible(i,FALSE);
	m_GroupList.EditLabel(i);

}

void COrgGroupDlg::OnDelGroup() 
{
	// TODO: Add your control notification handler code here
	int i = m_GroupList.GetSelectedCount();
	if(i>0)
	{
		POSITION pos = m_GroupList.GetFirstSelectedItemPosition();
		int item = m_GroupList.GetNextSelectedItem(pos);
		if(AfxMessageBox(IDS_CONFIRM_DEL, MB_YESNO|MB_ICONSTOP) == IDYES)
		{
			BOOL rem = FALSE;
			CString filename;
			filename = m_GroupList.GetItemText(item, 0);
			if(filename == m_strStartGroup)
				rem = TRUE;

			filename = ((CMyIEApp*)AfxGetApp())->m_strGroupPath + filename+".cgp";

			if(DeleteFile(filename))
			{
				m_nLastSelItemID = -1;
				m_GroupList.DeleteItem(item);
				m_UrlList.DeleteAllItems();
				if(rem)
					m_strStartGroup = "";
			}
		}
	}
}

void COrgGroupDlg::OnEndlabeleditGroupList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
	// TODO: Add your control notification handler code here
	CString str;
	m_GroupList.GetEditControl()->GetWindowText(str);
	str.TrimLeft();
	str.TrimRight();

	//rename file
	CString filename;
	BOOL ren = FALSE;
	filename = m_GroupList.GetItemText(pDispInfo->item.iItem, 0);
	if(filename == m_strStartGroup)
		ren = TRUE;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -