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

📄 muletoolbarctrl.cpp

📁 非常出名开源客户端下载的程序emule
💻 CPP
字号:
// MuleToolBarCtrl.cpp : implementation file
///////////////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "MuleToolbarCtrl.h"
#include "emule.h"

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


// CMuleToolbarCtrl

IMPLEMENT_DYNAMIC(CMuleToolbarCtrl, CToolBarCtrl)
CMuleToolbarCtrl::CMuleToolbarCtrl()
{
}

CMuleToolbarCtrl::~CMuleToolbarCtrl()
{
}


BEGIN_MESSAGE_MAP(CMuleToolbarCtrl, CToolBarCtrl)
	ON_WM_ERASEBKGND()
END_MESSAGE_MAP()



// CMuleToolbarCtrl message handlers
BOOL CMuleToolbarCtrl::OnEraseBkgnd(CDC* pDC)
{
#ifdef USE_TEXTRE	
	CRect r;
	GetClientRect(&r);
	
	CDC MemDC;
	MemDC.CreateCompatibleDC(pDC);
	CBitmap MemBMP;
	MemBMP.CreateCompatibleBitmap(pDC, r.Width(), r.Height() + 1);
	MemDC.SelectObject(&MemBMP);
	MemDC.FillRect(CRect(0,0,r.Width(),r.Height()+1), &m_cbBackBrush);
	pDC->BitBlt(r.left, r.top, r.Width(), r.Height(), &MemDC, 0, 1, SRCCOPY);
	MemBMP.DeleteObject();



	return TRUE;
#endif
#ifndef USE_TEXTURE
	return CToolBarCtrl::OnEraseBkgnd(pDC);
#endif
}

void CMuleToolbarCtrl::Init(void)
{
	ModifyStyle(0, TBSTYLE_FLAT );
	SetButtonSize(CSize(60,54));
	SetBitmapSize(CSize(32,35));
	
// add button-images:
#ifdef USE_TEXTURE	
	m_bmpBackground.LoadBitmap(IDB_TB_BACKGROUND);
	m_cbBackBrush.CreatePatternBrush(&m_bmpBackground);
#endif
#ifndef USE_TEXTURE	
	m_cbBackBrush.CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
#endif
	
	CImageList ImageList;
	CBitmap Bitmap, *pOldBitmap;
	CDC *pCtrlDC = GetDC(), TempDC;
	TempDC.CreateCompatibleDC(pCtrlDC);
	Bitmap.CreateCompatibleBitmap(pCtrlDC, 32 * 11, 35);
	pOldBitmap = TempDC.SelectObject(&Bitmap);
		
#ifdef USE_TEXTURE	
	TempDC.FillRect(CRect(0,0,32*11,35), &m_cbBackBrush);
#endif
#ifndef USE_TEXTURE	
	TempDC.FillSolidRect(0,0,32*11,35,RGB(255,0,255));
#endif

	TempDC.DrawIcon(CPoint(  0,3), theApp.LoadIcon(IDI_BN_CONNECT));
	TempDC.DrawIcon(CPoint( 32,3), theApp.LoadIcon(IDI_BN_SERVER));
	TempDC.DrawIcon(CPoint( 64,3), theApp.LoadIcon(IDI_BN_DOWNLOAD));
	TempDC.DrawIcon(CPoint( 96,3), theApp.LoadIcon(IDI_BN_SEARCH));
	TempDC.DrawIcon(CPoint(128,3), theApp.LoadIcon(IDI_BN_FILES));
	TempDC.DrawIcon(CPoint(160,3), theApp.LoadIcon(IDI_BN_MESSAGES));
	TempDC.DrawIcon(CPoint(192,3), theApp.LoadIcon(IDI_BN_IRC));
	TempDC.DrawIcon(CPoint(224,3), theApp.LoadIcon(IDI_BN_STATISTICS));
	TempDC.DrawIcon(CPoint(256,3), theApp.LoadIcon(IDI_BN_PREFERENCES));
	TempDC.DrawIcon(CPoint(288,3), theApp.LoadIcon(IDI_BN_DISCONNECT));
	TempDC.DrawIcon(CPoint(320,3), theApp.LoadIcon(IDI_BN_STOPCONNECTING));
	TempDC.SelectObject(pOldBitmap);
	
	ImageList.Create(32, 35, ILC_COLOR16 | ILC_MASK, 11, 1);
	ImageList.Add(&Bitmap, RGB(255,0,255));
	SetImageList(&ImageList);
	ImageList.Detach();
	Bitmap.DeleteObject();

// add button-text:				
	char cButtonStrings[] = "Connect\0Transfers\0Servers\0Search\0Files\0Messages\0Irc\0Statistics\0Preferences\0";
	AddStrings(cButtonStrings); // we just need some strings :)

// add buttons:	
	int i, j;
	TBBUTTON TBButtons[11];

	for(i = 0, j = 0; i < 11; i++, j++)
	{		
		TBButtons[i].fsState	= TBSTATE_ENABLED;
		TBButtons[i].fsStyle	= TBSTYLE_CHECKGROUP;
		TBButtons[i].iBitmap	= j;
		TBButtons[i].idCommand	= IDC_TOOLBARBUTTON + j;
		TBButtons[i].iString	= j;

		switch(i)
		{		
			case 0:
			case 10:
			TBButtons[i].fsStyle = TBSTYLE_BUTTON;
				break;
			case 1:
			case 9:
				TBButtons[i].fsStyle	= TBSTYLE_SEP;
			TBButtons[i].iBitmap	= -1;
			TBButtons[i].idCommand	= 0;
			TBButtons[i].iString	= -1;
				j--;
				break;
			case 2:
			TBButtons[i].fsState |= TBSTATE_CHECKED;
			default:
				break;
		}
	}
	
	AddButtons(11, TBButtons);

// recalc toolbar-size:	
	Localize();		// at first we have to localize the button-text!!!
	
	CRect rClient;
	GetClientRect(&rClient);
	rClient.DeflateRect(7,7);
	int iHeight = rClient.Height();
	rClient.left = rClient.right - iHeight * 2;

	CRect r;
	GetWindowRect(&r);
	OnSize(0,r.Width(),r.Height());
}

void CMuleToolbarCtrl::Localize(void)
{	
	if(m_hWnd)
	{
		TBBUTTONINFO tbi;
		const UINT tbstrings[] = { IDS_EM_SERVER, IDS_EM_TRANS, IDS_EM_SEARCH, IDS_EM_FILES,
		                           IDS_EM_MESSAGES, IDS_IRC, IDS_EM_STATISTIC, IDS_EM_PREFS };

		tbi.dwMask = TBIF_TEXT;
		tbi.cbSize = sizeof (TBBUTTONINFO);
		CString buffer;

		CDC *pDC = GetDC();
		int iCalcSize = 0;
		for (int i = 0; i < sizeof (tbstrings) / sizeof (UINT); i++) {
			buffer = GetResString(tbstrings[i]);
			buffer.Remove('&');
			tbi.pszText = (LPTSTR) (LPCTSTR) buffer;
			SetButtonInfo(IDC_TOOLBARBUTTON + i + 1, &tbi);

			// calculate text width
			CSize size = pDC->GetTextExtent(tbi.pszText, _tcslen(tbi.pszText));
			if (size.cx > iCalcSize)
				iCalcSize = size.cx;
		}
		ReleaseDC(pDC);

		iCalcSize -= 10;

		CRect r;
		GetClientRect(&r);
		int iMaxPossible = (r.Width() - 10) / 9;

		// if the buttons are to big, reduce their size
		if(iCalcSize > iMaxPossible)
			iCalcSize = iMaxPossible;

		AutoSize();
		CSize bs = GetButtonSize();
		bs.cx = iCalcSize;
		bs.cy =54;
		SetButtonSize(bs);
	}
}

⌨️ 快捷键说明

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