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

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

?? proppageframe.cpp

?? 《MFC窗口程序設(shè)計(jì)》書籍源碼 詳細(xì)講解MFC框架程序設(shè)計(jì)
?? CPP
字號(hào):

// PropPageFrame.cpp : implementation file
//
#include "stdafx.h"
#include "PropPageFrame.h"

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


// class CPropPageFrame

BEGIN_MESSAGE_MAP(CPropPageFrame, CWnd)
//{{AFX_MSG_MAP(CPropPageFrame)
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

CPropPageFrame::CPropPageFrame()
:	m_bShowCaption(FALSE),
	m_nCaptionHeight(0),
	m_hCaptionIcon(NULL),
	m_dwMsgFormat(DT_CENTER|DT_VCENTER|DT_NOPREFIX|DT_SINGLELINE)
{
}


CPropPageFrame::~CPropPageFrame()
{
	if (m_Images.GetSafeHandle())
		m_Images.DeleteImageList();
}


/////////////////////////////////////////////////////////////////////
// Operations

BOOL CPropPageFrame::Create(DWORD dwWindowStyle, const RECT &rect, CWnd *pwndParent, UINT nID)
{
	return CWnd::Create(
		AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW, AfxGetApp()->LoadStandardCursor(IDC_ARROW), GetSysColorBrush(COLOR_3DFACE)),
		_T("屬性頁(yè)框架"),
		dwWindowStyle, rect, pwndParent, nID);
}

void CPropPageFrame::ShowCaption(BOOL bEnable)
{
	m_bShowCaption = bEnable;
	SafeUpdateWindow(CalcCaptionArea());
}


BOOL CPropPageFrame::GetShowCaption() const
{
	return m_bShowCaption;
}


void CPropPageFrame::SetCaption(LPCTSTR lpszCaption, HICON hIcon /*= NULL*/)
{
	m_strCaption = lpszCaption;
	m_hCaptionIcon = hIcon;
	SafeUpdateWindow(CalcCaptionArea());

	//創(chuàng)建圖像列表
	if (m_Images.GetSafeHandle())
		m_Images.DeleteImageList();
	if (hIcon)
	{
		ICONINFO	ii;
		if (!GetIconInfo(hIcon, &ii))
			return;
		
		CBitmap	bmMask;
		bmMask.Attach(ii.hbmMask);
		if (ii.hbmColor) DeleteObject(ii.hbmColor);
		
		BITMAP	bm;
		bmMask.GetBitmap(&bm);
		
		if (!m_Images.Create(bm.bmWidth, bm.bmHeight, ILC_COLOR32|ILC_MASK, 0, 1))
			return;
		
		if (m_Images.Add(hIcon) == -1)
			m_Images.DeleteImageList();
	}
}


CString CPropPageFrame::GetCaption(HICON *pIcon /* = NULL */) const
{
	if (pIcon)
		*pIcon = m_hCaptionIcon;
	return m_strCaption;
}


void CPropPageFrame::SetCaptionHeight(int nCaptionHeight)
{
	m_nCaptionHeight = nCaptionHeight;
	SafeUpdateWindow(CalcCaptionArea());
}


int CPropPageFrame::GetCaptionHeight() const
{
	return m_nCaptionHeight;
}


void CPropPageFrame::SetMsgText(LPCTSTR lpszMsg)
{
	m_strMsg = lpszMsg;
	SafeUpdateWindow(CalcMsgArea());
}


CString CPropPageFrame::GetMsgText() const
{
	return m_strMsg;
}


void CPropPageFrame::SetMsgFormat(DWORD dwFormat)
{
	m_dwMsgFormat = dwFormat;
	SafeUpdateWindow(CalcMsgArea());
}


DWORD CPropPageFrame::GetMsgFormat() const
{
	return m_dwMsgFormat;
}


/////////////////////////////////////////////////////////////////////
// Overridable implementation helpers

void CPropPageFrame::Draw(CDC *pDc)
{
	if (GetShowCaption())
		DrawCaption(pDc, CalcCaptionArea(), m_strCaption, m_hCaptionIcon);
	DrawMsg(pDc, CalcMsgArea(), m_strMsg, m_dwMsgFormat);
}


CRect CPropPageFrame::CalcMsgArea()
{
	ASSERT(IsWindow(GetWnd()->GetSafeHwnd()));

	CRect	rectMsg;
	GetWnd()->GetClientRect(rectMsg);
	if (GetShowCaption())
		rectMsg.top+= GetCaptionHeight();

	return rectMsg;
}


void CPropPageFrame::DrawMsg(CDC *pDc, CRect rect, LPCTSTR lpszMsg, DWORD dwFormat) 
{
	CFont	*pPrevFont = dynamic_cast<CFont*>(pDc->SelectStockObject(DEFAULT_GUI_FONT));
	int		nPrevBkMode = pDc->SetBkMode(TRANSPARENT);

	pDc->DrawText(GetMsgText(), rect, GetMsgFormat());

	pDc->SetBkMode(nPrevBkMode);
	pDc->SelectObject(pPrevFont);
}


CRect	CPropPageFrame::CalcCaptionArea()
{
	ASSERT(IsWindow(GetWnd()->GetSafeHwnd()));

	CRect	rectCaption;
	GetWnd()->GetClientRect(rectCaption);
	if (!GetShowCaption())
		rectCaption.bottom = rectCaption.top;
	else
		rectCaption.bottom = rectCaption.top+GetCaptionHeight();

	return rectCaption;
}


void CPropPageFrame::DrawCaption(CDC *pDc, CRect rect, LPCTSTR lpszCaption, HICON hIcon) 
{
	COLORREF	clrLeft = GetSysColor(COLOR_INACTIVECAPTION);
	COLORREF	clrRight = pDc->GetPixel(rect.right-1, rect.top);
	FillGradientRectH(pDc, rect, clrLeft, clrRight);
	
	//繪制圖標(biāo)
	if (hIcon && m_Images.GetSafeHandle() && m_Images.GetImageCount() == 1)
	{
		IMAGEINFO	ii;
		m_Images.GetImageInfo(0, &ii);
		CPoint		pt(3, rect.CenterPoint().y - (ii.rcImage.bottom-ii.rcImage.top)/2);
		m_Images.Draw(pDc, 0, pt, ILD_TRANSPARENT);
		rect.left+= (ii.rcImage.right-ii.rcImage.left) + 3;
	}
	
	//繪制文本
	rect.left+= 2;
	
	COLORREF	clrPrev = pDc->SetTextColor(GetSysColor(COLOR_CAPTIONTEXT));
	int				nBkStyle = pDc->SetBkMode(TRANSPARENT);
	CFont			*pFont = (CFont*)pDc->SelectStockObject(SYSTEM_FONT);
	
	pDc->DrawText(lpszCaption, rect, DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS);
	
	pDc->SetTextColor(clrPrev);
	pDc->SetBkMode(nBkStyle);
	pDc->SelectObject(pFont);
}


/////////////////////////////////////////////////////////////////////
// Implementation helpers

void CPropPageFrame::SafeUpdateWindow(LPCRECT lpRect /* = NULL */)
{
	if (!IsWindow(GetWnd()->GetSafeHwnd()))
		return;

	GetWnd()->InvalidateRect(lpRect, TRUE);
}

CWnd* CPropPageFrame::GetWnd()
{
	return static_cast<CWnd*>(this);
}


void CPropPageFrame::FillGradientRectH(CDC *pDc, const RECT &rect, COLORREF clrLeft, COLORREF clrRight)
{
	//預(yù)計(jì)算
	int	nSteps = rect.right-rect.left;
	int	nRRange = GetRValue(clrRight)-GetRValue(clrLeft);
	int	nGRange = GetGValue(clrRight)-GetGValue(clrLeft);
	int	nBRange = GetBValue(clrRight)-GetBValue(clrLeft);
	
	double	dRStep = (double)nRRange/(double)nSteps;
	double	dGStep = (double)nGRange/(double)nSteps;
	double	dBStep = (double)nBRange/(double)nSteps;
	
	double	dR = (double)GetRValue(clrLeft);
	double	dG = (double)GetGValue(clrLeft);
	double	dB = (double)GetBValue(clrLeft);
	
	CPen	*pPrevPen = NULL;
	for (int x = rect.left; x <= rect.right; ++x)
	{
		CPen	Pen(PS_SOLID, 1, RGB((BYTE)dR, (BYTE)dG, (BYTE)dB));
		pPrevPen = pDc->SelectObject(&Pen);
		pDc->MoveTo(x, rect.top);
		pDc->LineTo(x, rect.bottom);
		pDc->SelectObject(pPrevPen);
		
		dR+= dRStep;
		dG+= dGStep;
		dB+= dBStep;
	}
}

void CPropPageFrame::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
	Draw(&dc);
	// Do not call CWnd::OnPaint() for painting messages
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线视频综合导航| 中文av字幕一区| 2024国产精品| 国产欧美视频一区二区三区| 日本一区二区三区四区在线视频| 国产精品美女www爽爽爽| 亚洲精品日韩综合观看成人91| 亚洲一二三四在线| 久久99深爱久久99精品| 粉嫩av亚洲一区二区图片| 99国产麻豆精品| 欧美卡1卡2卡| 中文字幕精品一区二区三区精品| 亚洲国产精品嫩草影院| 国产综合成人久久大片91| 在线免费观看日本一区| 欧美刺激脚交jootjob| 亚洲欧美另类小说视频| 精品系列免费在线观看| 91电影在线观看| 亚洲国产精品二十页| 日本va欧美va精品| 91麻豆文化传媒在线观看| 久久久国产精品不卡| 人人超碰91尤物精品国产| 色哟哟在线观看一区二区三区| 久久久高清一区二区三区| 日本最新不卡在线| 欧美无乱码久久久免费午夜一区| 亚洲国产高清在线| 国产一区二区福利| 欧美成人vr18sexvr| 免费在线观看视频一区| 欧美日韩亚洲综合一区二区三区 | 欧美日韩久久久| 亚洲精品成人精品456| 波多野结衣精品在线| 国产欧美日韩不卡免费| 国产在线精品免费av| 精品少妇一区二区三区免费观看| 七七婷婷婷婷精品国产| 日韩一区二区三区视频| 美洲天堂一区二卡三卡四卡视频| 欧美日韩精品电影| 日本系列欧美系列| 日韩免费福利电影在线观看| 精品亚洲成av人在线观看| 亚洲精品一区二区精华| 国产精品99精品久久免费| 欧美国产日韩一二三区| 粉嫩aⅴ一区二区三区四区五区| 国产精品免费久久| 91视频观看视频| 午夜视频一区二区三区| 日韩精品一区二区三区在线观看| 国产高清无密码一区二区三区| 久久亚区不卡日本| 一本久道久久综合中文字幕| 午夜精品久久久久久久蜜桃app| 欧美一级久久久久久久大片| 国产精品亚洲成人| 亚洲综合清纯丝袜自拍| 欧美mv日韩mv| 欧美欧美欧美欧美| 不卡一区在线观看| 日韩精品一级中文字幕精品视频免费观看 | 亚洲一级不卡视频| 国产视频一区二区在线观看| 一本到三区不卡视频| 国产乱码精品一区二区三区忘忧草 | 色综合 综合色| 国内精品在线播放| 亚洲国产成人91porn| 欧美激情在线观看视频免费| 日韩一区二区三区免费看 | 欧美精品三级在线观看| 丁香六月久久综合狠狠色| 日本特黄久久久高潮| 亚洲精品欧美二区三区中文字幕| 精品国产污网站| 欧美乱妇一区二区三区不卡视频| 99国产精品国产精品毛片| 国产在线不卡视频| 精品制服美女丁香| 久久精品99国产精品日本| 亚洲成人中文在线| 一区二区三区欧美激情| 中文字幕综合网| 专区另类欧美日韩| 亚洲视频一区在线| 亚洲品质自拍视频网站| 18欧美乱大交hd1984| 国产精品剧情在线亚洲| 国产日韩成人精品| 日本一区二区视频在线| 国产亚洲精品超碰| 国产欧美1区2区3区| 国产精品视频一二三区| 欧美高清在线视频| 亚洲视频在线一区观看| 亚洲人成网站在线| 亚洲午夜一区二区| 水野朝阳av一区二区三区| 青青青伊人色综合久久| 国内外成人在线| 成人精品在线视频观看| 色综合久久久久综合99| 欧美巨大另类极品videosbest| 日韩一区二区精品在线观看| 久久综合成人精品亚洲另类欧美 | av激情综合网| 精品视频一区三区九区| 精品久久久久av影院| 亚洲图片另类小说| 丝袜美腿亚洲色图| 国产精品白丝jk黑袜喷水| 92国产精品观看| 欧美一区二区播放| 亚洲欧美在线aaa| 看片的网站亚洲| 91视视频在线观看入口直接观看www | 亚洲人精品午夜| 免费观看日韩av| 欧美体内she精高潮| 国产网站一区二区三区| 日韩—二三区免费观看av| 91丝袜高跟美女视频| 日韩一区二区高清| 亚洲欧美另类久久久精品2019| 国产一区二区三区四区五区美女 | 国产日韩精品一区二区三区| 综合久久久久久| 不卡在线观看av| 久久久亚洲高清| 美洲天堂一区二卡三卡四卡视频| 一本一道久久a久久精品| 久久精品人人做人人综合| 五月天网站亚洲| 国产精品久久国产精麻豆99网站 | 国产美女在线观看一区| 在线综合视频播放| 五月激情综合婷婷| 欧美日韩免费一区二区三区视频| 亚洲欧美激情插| 91在线无精精品入口| 中文字幕色av一区二区三区| 成人午夜免费视频| 中文字幕av不卡| 成人国产电影网| 国产精品色哟哟| 99久久国产综合精品色伊| 一区精品在线播放| 99re视频精品| 亚洲国产中文字幕在线视频综合 | 久久久一区二区三区| 国产精品一二三| 51久久夜色精品国产麻豆| 亚洲伊人色欲综合网| 欧美日韩你懂得| 国产综合成人久久大片91| 国产拍欧美日韩视频二区| 成人成人成人在线视频| 精品福利二区三区| 国产高清视频一区| 欧美国产一区二区| 94-欧美-setu| 日韩中文字幕av电影| 日韩欧美在线不卡| 本田岬高潮一区二区三区| 国产精品自拍三区| 国产精品久久久久久久久免费丝袜| 北条麻妃一区二区三区| 亚洲国产日韩精品| 日韩欧美国产一区二区三区| 国产高清无密码一区二区三区| 中文字幕亚洲一区二区av在线 | 在线免费视频一区二区| 国产一区二三区| 亚洲欧美在线视频| 7777精品伊人久久久大香线蕉完整版 | 99re这里只有精品首页| 免费精品视频最新在线| 中文字幕日韩欧美一区二区三区| 欧美日韩视频在线第一区| 国产精品99久久久久久似苏梦涵| 亚洲另类在线视频| 久久伊人蜜桃av一区二区| 91一区二区在线| 久久99精品国产.久久久久| 自拍偷拍欧美精品| 国产日韩欧美麻豆| 欧美久久久一区| gogogo免费视频观看亚洲一| 国产在线精品一区在线观看麻豆| 一区二区三区色| 亚洲视频在线一区| 亚洲色图19p| 亚洲精品美国一| 一区二区中文视频| 亚洲欧洲精品天堂一级|