void CSplashScreen::DrawText(CDC *pDC)
{
	LOGFONT lf = {0};
	CFont font;
	CFont* pOldFont;
	CTextDC	textDC(pDC->GetSafeHdc(), RGB(255, 255, 255));

	CString strVer;
	strVer.Format(_T("V%u.%u.%u"), CGlobalVariable::m_nEasyMuleMjr, CGlobalVariable::m_nEasyMuleMin, CGlobalVariable::m_nEasyMuleUpd);
	
	lf.lfHeight = 18;
	lf.lfWeight = FW_BOLD;
	lf.lfQuality = ANTIALIASED_QUALITY;
	_tcscpy(lf.lfFaceName, _T("Arial"));
	font.CreateFontIndirect(&lf);
	pOldFont = pDC->SelectObject(&font);
	pDC->DrawText(strVer, &m_rtVersion, DT_CENTER | DT_NOPREFIX);
	pDC->SelectObject(pOldFont);
	font.DeleteObject();

	lf.lfHeight = 12;
	lf.lfWeight = FW_NORMAL;
	lf.lfQuality = ANTIALIASED_QUALITY;
	_tcscpy(lf.lfFaceName, _T("Arial"));
	font.CreateFontIndirect(&lf);
	pOldFont = pDC->SelectObject(&font);
	pDC->DrawText(_T("Copyright (C) 2002-2010 VeryCD"), &m_rtText, DT_CENTER | DT_NOPREFIX);
	pDC->SelectObject(pOldFont);
	font.DeleteObject();
}
int CHistoryWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CCJControlBar::OnCreate(lpCreateStruct) == -1)
		return -1;

	// create the bidding history panel
	RECT rect = { 0, 0, 0, 0 };
	if (!m_editBidding.Create(ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | WS_CHILD | WS_VSCROLL | WS_HSCROLL | WS_VISIBLE, rect, this, IDC_EDIT1))
		return -1;
	m_editBidding.ModifyStyleEx(0, WS_EX_CLIENTEDGE);

	// and the play history panel
	if (!m_editPlay.Create(ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | WS_CHILD | WS_VSCROLL | WS_HSCROLL | WS_VISIBLE, rect, this, IDC_EDIT2))
		return -1;
	m_editPlay.ModifyStyleEx(0, WS_EX_CLIENTEDGE);

	// subclass the edit controls
	wpOrigRichEditProc = (WNDPROC) SetWindowLong(m_editBidding.m_hWnd, GWL_WNDPROC, (LONG) RichEditSubclassProc);
	SetWindowLong(m_editPlay.m_hWnd, GWL_WNDPROC, (LONG) RichEditSubclassProc);

	// set font
	CFont* pFont = (CFont*) pMAINFRAME->GetValuePV(tpFontHistory);
	m_editBidding.SendMessage(WM_SETFONT, (LONG)pFont->m_hObject, FALSE);
	m_editPlay.SendMessage(WM_SETFONT, (LONG)pFont->m_hObject, FALSE);

	// get text metrics
	CWindowDC textDC(&m_editBidding);
	TEXTMETRIC tm;
	textDC.GetTextMetrics(&tm);
	m_nFontHeight = tm.tmHeight;

	// create static labels
	// first adjust rect then create
	CWindowDC dc(this);
	pFont = (CFont*) pMAINFRAME->GetValuePV(tpFontSmall);
	CFont* pOldFont = (CFont*) dc.SelectObject(pFont);
	CString strLabel = _T("Bidding History");
	CSize size = dc.GetTextExtent(strLabel, strLabel.GetLength());
	rect.right = size.cx;
	rect.bottom = size.cy;
	m_lblBidding.Create(strLabel, WS_CHILD | WS_VISIBLE, rect, this, IDC_STATIC1);

	// adjust rect again and create
	strLabel = _T("Play History");
	size = dc.GetTextExtent(strLabel, strLabel.GetLength());
	rect.right = size.cx;
	m_lblPlay.Create(strLabel, WS_CHILD | WS_VISIBLE, rect, this, IDC_STATIC2);

	// create the buttons
	m_btnBidding.Create(_T("Bidding"), WS_VISIBLE | BS_AUTOCHECKBOX | BS_PUSHLIKE, rect, this, IDC_CHECK1);
	m_btnPlay.Create(_T("Play"), WS_VISIBLE | BS_AUTOCHECKBOX | BS_PUSHLIKE, rect, this, IDC_CHECK2);

	// set check state
	m_btnBidding.SetCheck(m_bShowBidding);
	m_btnPlay.SetCheck(m_bShowPlay);

	// and set fonts
	m_btnBidding.SendMessage(WM_SETFONT, (UINT)GetStockObject(ANSI_VAR_FONT), 0L);
	m_btnPlay.SendMessage(WM_SETFONT, (UINT)GetStockObject(ANSI_VAR_FONT), 0L);

	// restore old font
	dc.SelectObject(pOldFont);

	// set fonts
	m_lblBidding.SendMessage(WM_SETFONT, (LONG)pFont->m_hObject, FALSE);
	m_lblPlay.SendMessage(WM_SETFONT, (LONG)pFont->m_hObject, FALSE);

	// create the popup menu
	m_menuPopup.LoadMenu(IDR_HISTORY_POPUP);

	// done
	m_bInitialized = TRUE;
	return 0;
}
void CToolBarCtrlZ::DrawItem(CDC *pDC, int iIndex, const CRect &rtItem, BOOL bHover)
{
	UINT			uItemId;
	UINT			uItemState;
	TBBUTTON		tbb;


	TCHAR			szText[1024];
	TBBUTTONINFO	tbi;
	CArray<CxImage*, CxImage*>	*parrImgs = NULL;
	CxImage			*pIconImg = NULL;		
	int				iIconTop;
	CRect			rtDraw;
	CRect			rtText;
	COLORREF		clrText;
	
	CClientRect		rtClient(this);
	rtDraw = rtItem;
	rtDraw.top = rtClient.top;
	rtDraw.bottom = rtClient.bottom;

	if (!GetButton(iIndex, &tbb))
		return;

	uItemId = tbb.idCommand;
	uItemState = GetState(uItemId);

	parrImgs = &m_arrImgs;
	if ( !IsButtonEnabled(uItemId) )
	{
		clrText = RGB(204, 128, 128);
		if (0 != m_arrDisableImgs.GetCount())
			parrImgs = &m_arrDisableImgs;
	}
	else
	{
		clrText = RGB(255, 254, 253);

		if (TBSTATE_PRESSED & uItemState/*IsButtonPressed(uItemId)*/)
			rtDraw.OffsetRect(1, 1);
		else if (bHover/*iIndex == GetHotItem()*/)
			rtDraw.OffsetRect(-1, -2);
	}


	ZeroMemory(&tbi, sizeof(TBBUTTONINFO));
	tbi.cbSize = sizeof(TBBUTTONINFO);
	tbi.dwMask = TBIF_TEXT | TBIF_IMAGE;
	tbi.pszText = szText;
	tbi.cchText = 1024;
	//if (GetButtonInfo(p->nmcd.dwItemSpec, &tbi))
	GetButtonInfo(uItemId, &tbi);
	{

		rtText = rtDraw;

		if (tbi.iImage < parrImgs->GetCount())
		{
			pIconImg = parrImgs->GetAt(tbi.iImage);
			if (NULL != pIconImg)
			{
				iIconTop = rtDraw.Height() - pIconImg->GetHeight();
				iIconTop /= 2;
				iIconTop += rtDraw.top;
				pIconImg->Draw(pDC->GetSafeHdc(), rtDraw.left, iIconTop);
				rtText.left += pIconImg->GetWidth() + 4;
			}
		}


		{
			CWndFontDC	fontDC(pDC->GetSafeHdc(), GetSafeHwnd());
			CTextDC		textDC(pDC->GetSafeHdc(), clrText);
			
			pDC->DrawText(tbi.pszText, -1, &rtText, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
		}
	}

}