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

📄 customizetoolbar.cpp

📁 myie的源代码
💻 CPP
字号:
// CustomizeToolbar.cpp : implementation file
//

#include "stdafx.h"
#include "myie.h"
#include "CustomizeToolbar.h"

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

#pragma optimize( "s", on )

/////////////////////////////////////////////////////////////////////////////
// CCustomizeToolbar dialog

extern  UINT toolbarbuttons[];
extern  UINT toolbarlabels[];
extern  UINT toolbarbuttonimgs[];


CCustomizeToolbar::CCustomizeToolbar(CWnd* pParent /*=NULL*/)
	: CDialog(CCustomizeToolbar::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCustomizeToolbar)
	m_bColorIcon = FALSE;
	m_nTextOpt = -1;
	m_bSmallToolBar = -1;
	//}}AFX_DATA_INIT
}


void CCustomizeToolbar::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCustomizeToolbar)
	DDX_Control(pDX, IDC_CURBTN, m_curbtn);
	DDX_Control(pDX, IDC_AVABTN, m_avabtn);
	DDX_Check(pDX, IDC_COLOR_ICON, m_bColorIcon);
	DDX_CBIndex(pDX, IDC_TEXT_OPT, m_nTextOpt);
	DDX_CBIndex(pDX, IDC_ICON_OPT, m_bSmallToolBar);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCustomizeToolbar, CDialog)
	//{{AFX_MSG_MAP(CCustomizeToolbar)
	ON_BN_CLICKED(IDC_MOVWDOWN, OnMovwdown)
	ON_BN_CLICKED(IDC_MOVEUP, OnMoveup)
	ON_BN_CLICKED(IDC_REMOVE, OnRemove)
	ON_BN_CLICKED(IDC_ADD, OnAdd)
	ON_NOTIFY(NM_DBLCLK, IDC_AVABTN, OnDblclkAvabtn)
	ON_NOTIFY(NM_DBLCLK, IDC_CURBTN, OnDblclkCurbtn)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCustomizeToolbar message handlers

BOOL CCustomizeToolbar::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	int nDefBtn = 39, nMaxBtn = nDefBtn;
	int n=0;
	// TODO: Add extra initialization here
	CImageList img;
//	CBitmap bitmap;
/*	img.Create(IDB_COLDTOOLBAR, 21, 0, RGB(255, 0, 255));
	m_avabtn.SetImageList(&img, LVSIL_SMALL);
	img.Detach();
*/
//	bitmap.LoadBitmap(IDB_COLDTOOLBAR);
	img.Create(21, 20, ILC_COLORDDB|ILC_MASK, 35, 1);
	HBITMAP hbmp = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_COLDTOOLBAR));
	ImageList_AddMasked(img.GetSafeHandle(), hbmp, RGB(255,0,255));

	m_avabtn.SetImageList(&img, LVSIL_SMALL);
	img.Detach();
//	bitmap.Detach();

	str.LoadString(IDS_SEPARATOR);
	CRect rect;
	m_avabtn.InsertColumn(0,"");
	m_avabtn.GetWindowRect(rect);
	m_avabtn.SetColumnWidth(0, rect.Width()-10);

	m_avabtn.InsertItem(0, str, -1);
	m_avabtn.SetItemData(0, 1);
	n=1;
	for(int i=0; i<nDefBtn; i++)
	{
		if(toolbarbuttons[i]!=0)
		{
			str.LoadString(toolbarlabels[i]);
			m_avabtn.InsertItem(n, str.Right(str.GetLength()-str.Find('\n')-1), toolbarbuttonimgs[i]);
			m_avabtn.SetItemData(n, i);
			n++;
		}
	}
	
	
/*	img.Create(IDB_COLDTOOLBAR, 21, 0, RGB(255, 0, 255));
	m_curbtn.SetImageList(&img, LVSIL_SMALL);
	img.Detach();
*/
//	bitmap.LoadBitmap(IDB_COLDTOOLBAR);
	img.Create(21, 20, ILC_COLORDDB|ILC_MASK, 35, 1);
	hbmp = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_COLDTOOLBAR));
	ImageList_AddMasked(img.GetSafeHandle(), hbmp, RGB(255,0,255));

	m_curbtn.SetImageList(&img, LVSIL_SMALL);
	img.Detach();
//	bitmap.Detach();

	m_curbtn.InsertColumn(0,"");
	m_curbtn.GetWindowRect(rect);
	m_curbtn.SetColumnWidth(0, rect.Width()-12);

	int ids[50], l=0, id, buttonum;
	char tmp[6]; tmp[0]='B'; 

	id = (int)AfxGetApp()->GetProfileInt("ToolBar", "B0", -5);
	if(id == -5)
	{
		//no toolbar configuration
		buttonum = nDefBtn;
	}
	else
		buttonum = 50;
	id=0;l=0;
	while(l<buttonum && id!=-1)
	{
		itoa(l,tmp+1,10);
		id = (int)AfxGetApp()->GetProfileInt("ToolBar", tmp, -5);
		if(id==-5)
		{
			ids[l] = l;
			buttonum=nDefBtn;
		}
		else
			ids[l]=id;

		l++;
	}
	LVFINDINFO info;
	int index;
	n=0;
	for(i=0; i<l; i++)
	{
		itoa(i,tmp+1,10);
		id = ids[i];
		if(id>=0 && id<nMaxBtn)
		{
			if(toolbarlabels[id]>0)
			{
				str.LoadString(toolbarlabels[id]);
				m_curbtn.InsertItem(n, str.Right(str.GetLength()-str.Find('\n')-1), toolbarbuttonimgs[id]);
				m_curbtn.SetItemData(n, id);
				//delete from available list
				info.flags = LVFI_PARAM;
				info.lParam = id;
				index=m_avabtn.FindItem(&info);
				if(index != -1)
				{
					m_avabtn.DeleteItem(index);
				}
			}
			else
			{
				str.LoadString(IDS_SEPARATOR);
				m_curbtn.InsertItem(n, str, -1);
				m_curbtn.SetItemData(n, 1);
			}
			n++;
		}
		else if(id>=nMaxBtn)
			continue;
		else
			break;
	}
	m_curbtn.InsertItem(n, "                 ", -1);
	m_curbtn.SetItemData(n, -1);
	m_curbtn.SetItemState(n, LVIS_SELECTED, LVIS_SELECTED);
	m_curbtn.EnsureVisible(n, TRUE);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CCustomizeToolbar::OnOK() 
{
	// TODO: Add extra validation here
	int id;
	char tmp[6]; tmp[0]='B'; 

	id=0;
	int n = m_curbtn.GetItemCount();
	for( int i=0; i<n; i++)
	{
		itoa(i,tmp+1,10);
		id = m_curbtn.GetItemData(i);
		AfxGetApp()->WriteProfileInt("ToolBar", tmp, id);
	}

	CDialog::OnOK();
}

void CCustomizeToolbar::OnMovwdown() 
{
	// TODO: Add your control notification handler code here
//	int j;
//	CString str;
	POSITION pos = m_curbtn.GetFirstSelectedItemPosition();
	if(pos!=NULL)
	{
		int i = m_curbtn.GetNextSelectedItem(pos);
		int id;
		id = m_curbtn.GetItemData(i);
		if(id>=0 && i<m_curbtn.GetItemCount()-2)
		{
			m_curbtn.DeleteItem(i);
			str.LoadString(toolbarlabels[id]);
			m_curbtn.InsertItem(i+1, str.Right(str.GetLength()-str.Find('\n')-1), toolbarbuttonimgs[id]);
			m_curbtn.SetItemData(i+1, id);
			m_curbtn.EnsureVisible(i+1, TRUE);
			m_curbtn.SetItemState(i+1, LVIS_SELECTED, LVIS_SELECTED);
			m_curbtn.SetFocus();
		}
	}		
}

void CCustomizeToolbar::OnMoveup() 
{
	// TODO: Add your control notification handler code here
//	int j;
//	CString str;
	POSITION pos = m_curbtn.GetFirstSelectedItemPosition();
	if(pos!=NULL)
	{
		int i = m_curbtn.GetNextSelectedItem(pos);
		int id;
		id = m_curbtn.GetItemData(i);
		if(id>=0 && i>0)
		{
			m_curbtn.DeleteItem(i);
			str.LoadString(toolbarlabels[id]);
			m_curbtn.InsertItem(i-1, str.Right(str.GetLength()-str.Find('\n')-1), toolbarbuttonimgs[id]);
			m_curbtn.SetItemData(i-1, id);
			m_curbtn.EnsureVisible(i-1, TRUE);
			m_curbtn.SetItemState(i-1, LVIS_SELECTED, LVIS_SELECTED);
			m_curbtn.SetFocus();
		}
	}		
}

void CCustomizeToolbar::OnRemove() 
{
	// TODO: Add your control notification handler code here
	int j;
//	CString str;
	POSITION pos = m_curbtn.GetFirstSelectedItemPosition();
	if(pos!=NULL)
	{
		int i = m_curbtn.GetNextSelectedItem(pos);
		int id;
		id = m_curbtn.GetItemData(i);
		if(id>=0)
		{
			j = m_avabtn.GetItemCount();
			if(id!=1) //not a separator
			{
				str.LoadString(toolbarlabels[id]);
				m_avabtn.InsertItem(j, str.Right(str.GetLength()-str.Find('\n')-1), toolbarbuttonimgs[id]);
				m_avabtn.SetItemData(j, id);
				m_curbtn.DeleteItem(i);
			}
			else
			{
				m_curbtn.DeleteItem(i);
			}
			m_curbtn.EnsureVisible(i, TRUE);
		}
	}	
}

void CCustomizeToolbar::OnAdd() 
{
	// TODO: Add your control notification handler code here
	int j;
//	CString str;
	POSITION pos = m_avabtn.GetFirstSelectedItemPosition();
	if(pos!=NULL)
	{
		int i = m_avabtn.GetNextSelectedItem(pos);
		int id;
		id = m_avabtn.GetItemData(i);
		//get current selected item in curbtns
		POSITION pos1 = m_curbtn.GetFirstSelectedItemPosition();
		if(pos1!=NULL)
		{
			j = m_curbtn.GetNextSelectedItem(pos1);
		}
		else
			j = m_curbtn.GetItemCount()-1;

		if(i>0)
		{
			str.LoadString(toolbarlabels[id]);
			m_curbtn.InsertItem(j, str.Right(str.GetLength()-str.Find('\n')-1), toolbarbuttonimgs[id]);
			m_curbtn.SetItemData(j, id);
			m_avabtn.DeleteItem(i);
		}
		else
		{
			str.LoadString(IDS_SEPARATOR);
			m_curbtn.InsertItem(j, str, -1);
			m_curbtn.SetItemData(j, 1);
		}
		m_curbtn.EnsureVisible(j, TRUE);
	}	
}

void CCustomizeToolbar::OnDblclkAvabtn(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	OnAdd();
	*pResult = 0;
}

void CCustomizeToolbar::OnDblclkCurbtn(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	OnRemove();
	*pResult = 0;
}

#pragma optimize( "s", off)

⌨️ 快捷键说明

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