亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? textprogressctrl.cpp.svn-base

?? wince c++ 下 開發(fā)的 rss 閱讀器源代碼
?? SVN-BASE
字號:
/**
 *  TextProgressCtrl.cpp
 *
 *  Copyright (C) 2008  David Andrs <pda@jasnapaka.com>
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

#include "../StdAfx.h"
#include "../prssr.h"
#include "../../share/UIHelper.h"
#include "TextProgressCtrl.h"

#include "../misc.h"
#include "../../share/helpers.h"

#ifdef MYDEBUG
#undef THIS_FILE
static TCHAR THIS_FILE[] = _T(__FILE__);
#include "../debug/crtdbg.h"
#define new MYDEBUG_NEW
#endif

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


//
// CTextProgressCtrl
//

CTextProgressCtrl::CTextProgressCtrl() {
	Lo = 0;
	Hi = 100;
	Step = 1;
	Pos = 0;

	RedrawTimer = 1;
//	RedrawPlanned = FALSE;

	ProgressRefreshTimer = 2;
}

#define TEXT_PROGRESS_CLASSNAME			_T("pRSSreader_TextProgress")

BOOL CTextProgressCtrl::Register() {
	WNDCLASS wc = { 0 };
	wc.lpfnWndProc = ::DefWindowProc;
	wc.hInstance = AfxGetInstanceHandle();
	wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);
	wc.lpszMenuName = NULL;
	wc.lpszClassName = TEXT_PROGRESS_CLASSNAME;
	if (!AfxRegisterClass(&wc))
		return FALSE;

	return TRUE;
}

BOOL CTextProgressCtrl::Create(DWORD dwStyle, CRect &rc, CWnd *parent, UINT nID) {
	BOOL ret = CWnd::Create(TEXT_PROGRESS_CLASSNAME, _T(""), dwStyle, rc, parent, nID);

	HGDIOBJ hSysFont = ::GetStockObject(SYSTEM_FONT);
	LOGFONT lf = { 0 };
	GetObject(hSysFont, sizeof(LOGFONT), &lf);

	lf.lfWeight = FW_NORMAL;
	lf.lfHeight = SCALEY(13);
	m_fntText.CreateFontIndirect(&lf);

	lf.lfHeight = SCALEY(12);
	m_fntSize.CreateFontIndirect(&lf);

	return ret;
}

void CTextProgressCtrl::OnDestroy() {
	KillTimer(RedrawTimer);
}

void CTextProgressCtrl::SetRange(int lo, int hi) {
	Lo = lo;
	Hi = hi;
}

void CTextProgressCtrl::GetRange(int &lo, int &hi) {
	lo = Lo;
	hi = Hi;
}

void CTextProgressCtrl::SetPos(int pos) {
	Pos = pos;
}

int CTextProgressCtrl::GetPos() {
	return Pos;
}

void CTextProgressCtrl::SetStep(int step) {
	Step = step;
}

void CTextProgressCtrl::StepIt() {
	Pos += Step;
}

//{{AFX_MSG_MAP(CTextProgressCtrl)
BEGIN_MESSAGE_MAP(CTextProgressCtrl, CWnd)
	ON_WM_PAINT()
	ON_WM_ERASEBKGND()
	ON_WM_TIMER()
	ON_WM_DESTROY()
END_MESSAGE_MAP()
//}}AFX_MSG_MAP

void CTextProgressCtrl::OnPaint() {
	CPaintDC dc(this); // device context for painting

	int saveDC = dc.SaveDC();

	CRect rcClient;
	GetClientRect(&rcClient);

	CBrush brHollow;
	brHollow.Attach(::GetStockObject(NULL_BRUSH));
	dc.SelectObject(&brHollow);

	// frame
	CPen pen(PS_SOLID, SCALEX(1), ::GetSysColor(COLOR_WINDOWFRAME));
	dc.SelectObject(&pen);
	HIDPI_BorderRectangle(dc.GetSafeHdc(), rcClient.left, rcClient.top, rcClient.right, rcClient.bottom);

	// inside
	rcClient.DeflateRect(SCALEX(1), SCALEY(1));

	int nWd = (Hi - Lo);
	double pos = (double) Pos / nWd;

	// bar
	int nPhysPos = (int) (rcClient.Width() * pos);
	COLORREF clrBar = ::GetSysColor(COLOR_HIGHLIGHT);
	CRect rcBar(rcClient.left, rcClient.top, rcClient.left + nPhysPos, rcClient.bottom);
	dc.FillSolidRect(&rcBar, clrBar);

	COLORREF clrBkgnd = ::GetSysColor(COLOR_3DSHADOW);
	CRect rcBack(rcClient.left + nPhysPos, rcClient.top, rcClient.right, rcClient.bottom);
	dc.FillSolidRect(&rcBack, clrBkgnd);

	// draw text over the progress bar
	rcClient.DeflateRect(SCALEX(4), -1, SCALEX(4), 1);

	dc.SetBkMode(TRANSPARENT);
	dc.SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));

	CRect rcSize(0, 0, 0, 0);
	if (!m_strSize.IsEmpty()) {
		dc.SelectObject(&m_fntSize);
		rcSize = rcClient;
		dc.DrawText(m_strSize, rcSize, DT_RIGHT | DT_BOTTOM | DT_SINGLELINE | DT_NOPREFIX | DT_CALCRECT);
		dc.DrawText(m_strSize, rcClient, DT_RIGHT | DT_BOTTOM | DT_SINGLELINE | DT_NOPREFIX);
	}

	dc.SelectObject(&m_fntText);
	CRect rcProgress = rcClient;
	rcProgress.right -= rcSize.Width() - SCALEX(6);
	DrawTextEndEllipsis(dc, m_strText, rcProgress, DT_LEFT | DT_BOTTOM | DT_SINGLELINE | DT_NOPREFIX);

	// validate
	GetClientRect(&rcClient);
	ValidateRect(rcClient);

	dc.RestoreDC(saveDC);
}

BOOL CTextProgressCtrl::OnEraseBkgnd(CDC *pDC) {
	return TRUE;
}

void CTextProgressCtrl::Reset() {
	m_strSize = _T("");
}

void CTextProgressCtrl::OnTimer(UINT nIDEvent) {
	if (nIDEvent == RedrawTimer) {
		FinishRedraw();
	}
	else if (nIDEvent == ProgressRefreshTimer) {
		if (Downloader != NULL) {
			if (Downloader->GetTotalFileSize() > 0) {
				SetRange(0, Downloader->GetTotalFileSize());
				SetPos(Downloader->GetDownloadedFileSize());

				CString sText;
				sText.Format(_T("%s / %s"),
					FormatFileSize(Downloader->GetDownloadedFileSize()),
					FormatFileSize(Downloader->GetTotalFileSize()));
				m_strSize = sText;
			}
			else {
				int newPos = (int) Downloader->GetDownloadedFileSize();
				if (newPos > Hi) {
					Hi *= 10;
					SetRange(0, Hi);
				}
				SetPos(newPos);
			}
			Redraw(FALSE);
		}
	}

	CWnd::OnTimer(nIDEvent);
}

void CTextProgressCtrl::FinishRedraw() {
	KillTimer(RedrawTimer);
	Invalidate();
	UpdateWindow();
}

void CTextProgressCtrl::Redraw(BOOL delayedPaint/* = FALSE*/) {
	if (delayedPaint) {
		KillTimer(RedrawTimer);
		SetTimer(RedrawTimer, 333, NULL);
	}
	else {
		FinishRedraw();
	}
}

void CTextProgressCtrl::SetText(const CString &text) {
	m_strText = text;
}

void CTextProgressCtrl::SetDownloader(CDownloader *downloader) {
	Downloader = downloader;
	if (downloader == NULL) {
		KillTimer(ProgressRefreshTimer);
		m_strSize = _T("");
	}
	else {
		SetTimer(ProgressRefreshTimer, 750, NULL);
		SetRange(0, 0xFFFFFF);
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久精品一区二区| 欧美三日本三级三级在线播放| 亚洲精品videosex极品| 日韩欧美国产精品一区| 一本久道中文字幕精品亚洲嫩| 久久成人羞羞网站| 亚洲综合图片区| 国产网站一区二区| 欧美一区二区三区四区久久| 99综合影院在线| 国产一区视频网站| 日本亚洲一区二区| 亚洲精品国产无套在线观| 久久久不卡网国产精品二区| 欧美丰满嫩嫩电影| 91官网在线免费观看| 成人av电影在线观看| 国产精品996| 久久精品国产精品亚洲综合| 午夜精品在线看| 亚洲麻豆国产自偷在线| 国产午夜久久久久| 91精品国产乱| 91国偷自产一区二区使用方法| 成人激情文学综合网| 国内精品视频一区二区三区八戒| 亚洲成av人综合在线观看| 中文字幕综合网| 中文字幕在线观看不卡| 国产色综合一区| 久久亚洲一区二区三区四区| 欧美大片日本大片免费观看| 欧美一区二区三级| 在线播放国产精品二区一二区四区 | 日韩小视频在线观看专区| 欧美顶级少妇做爰| 制服视频三区第一页精品| 欧美日韩免费不卡视频一区二区三区| 91色九色蝌蚪| 91色porny在线视频| 色哟哟一区二区在线观看| 91免费版在线| 欧美性色黄大片| 欧美色倩网站大全免费| 欧美日韩一二区| 91精品麻豆日日躁夜夜躁| 日韩久久精品一区| 久久精品一区二区三区不卡| 欧美精品一区二区三区在线播放 | 亚洲人妖av一区二区| 亚洲图片激情小说| 亚洲精品菠萝久久久久久久| 亚洲一区在线视频观看| 亚洲成人动漫一区| 国产成人精品综合在线观看| 欧美三区免费完整视频在线观看| 欧美日韩一区中文字幕| 91精品综合久久久久久| 欧美变态口味重另类| 亚洲精品一区二区三区香蕉| 国产精品视频你懂的| 亚洲精品国产无天堂网2021| 三级欧美韩日大片在线看| 美女视频网站黄色亚洲| 国产69精品一区二区亚洲孕妇| 99久久精品国产精品久久| 欧美唯美清纯偷拍| 日韩免费看的电影| 国产精品国模大尺度视频| 亚洲妇女屁股眼交7| 久久99久久精品| www.久久久久久久久| 欧美日韩国产一二三| 久久精品无码一区二区三区| 亚洲日本在线看| 久久精品国产精品青草| 波多野结衣亚洲一区| 6080午夜不卡| 国产精品美女久久久久av爽李琼| 亚洲一区二区在线免费看| 久久精品国产亚洲一区二区三区| 97精品久久久久中文字幕| 日韩欧美专区在线| 中文字幕一区二区5566日韩| 青青草国产精品97视觉盛宴| 国产1区2区3区精品美女| 欧美日韩综合色| 日本一区二区三区高清不卡| 亚洲成av人片在线观看无码| 国产.精品.日韩.另类.中文.在线.播放| 欧洲色大大久久| 国产亚洲一本大道中文在线| 亚洲成人精品影院| 成人av电影免费观看| 精品国产百合女同互慰| 亚洲福利一区二区三区| 成人av资源下载| 日韩写真欧美这视频| 亚洲资源中文字幕| 国产黄色精品视频| 欧美精品少妇一区二区三区| 日韩毛片视频在线看| 国产真实乱偷精品视频免| 欧美男人的天堂一二区| 亚洲图片激情小说| 国产成人综合网| 日韩视频一区二区三区| 亚洲自拍偷拍九九九| 成人av资源在线| 久久精品亚洲国产奇米99| 久久精品国产一区二区| 欧美日韩www| 亚洲精品成人天堂一二三| 成人免费视频国产在线观看| 精品美女在线播放| 日韩av电影天堂| 欧美视频在线观看一区| 1024国产精品| 成人精品免费视频| 久久久久久久综合| 精品在线免费观看| 精品国产乱子伦一区| 视频一区欧美日韩| 欧美精品123区| 亚洲h在线观看| 欧美中文字幕亚洲一区二区va在线| 最新热久久免费视频| www.久久久久久久久| 国产精品毛片久久久久久久| 国产高清不卡一区二区| 久久婷婷综合激情| 国内外成人在线| 久久久一区二区三区捆绑**| 国产毛片精品一区| 久久综合色8888| 国产精品影视天天线| 国产亚洲精品福利| 丁香婷婷深情五月亚洲| 国产欧美日韩不卡| 99久久夜色精品国产网站| 亚洲欧洲精品天堂一级| 91浏览器打开| 亚洲国产中文字幕在线视频综合| 欧美人与z0zoxxxx视频| 男人的天堂久久精品| 精品久久久久久久一区二区蜜臀| 狠狠久久亚洲欧美| 久久久久国产免费免费| 懂色av一区二区三区免费观看| 国产精品视频一区二区三区不卡| 97精品久久久午夜一区二区三区 | 精品久久久久久无| 波多野结衣的一区二区三区| 中文字幕亚洲区| 91网站最新地址| 亚洲成人免费av| 久久亚洲一区二区三区明星换脸 | 波多野结衣91| 亚洲国产日产av| 精品国产一区二区三区av性色| 国产高清亚洲一区| 亚洲三级小视频| 欧美片网站yy| 国产激情视频一区二区三区欧美 | 日本高清不卡视频| 午夜a成v人精品| 久久久噜噜噜久久中文字幕色伊伊| 国产91精品一区二区| 亚洲线精品一区二区三区| 欧美大片国产精品| 一本久久综合亚洲鲁鲁五月天| 水野朝阳av一区二区三区| 国产日韩高清在线| 欧美在线看片a免费观看| 久久99国产精品久久99 | 老司机精品视频一区二区三区| 日本一区二区三区四区| 欧美日韩一级视频| 国产成人aaa| 亚洲高清不卡在线观看| 国产色婷婷亚洲99精品小说| 在线观看视频一区二区欧美日韩| 国产一区二区三区黄视频| 亚洲激情在线激情| 欧美精品一区男女天堂| 欧美午夜视频网站| 成人黄色在线网站| 美日韩一区二区| 一级特黄大欧美久久久| 久久久一区二区| 欧美裸体bbwbbwbbw| 国产suv精品一区二区883| 亚洲成人免费av| 亚洲欧美综合在线精品| 欧美mv和日韩mv国产网站| 欧美性xxxxxxxx| 99在线精品一区二区三区| 韩国av一区二区三区在线观看| 亚洲国产另类精品专区| 国产精品久久网站|