www.pudn.com > TreePropSheetEx_Demo.zip > PropPageFrame.cpp
/******************************************************************** * * Copyright (c) 2002 Sven Wiegand* * You can use this and modify this in any way you want, * BUT LEAVE THIS HEADER INTACT. * * Redistribution is appreciated. * * $Workfile:$ * $Revision: 1.4 $ * $Modtime:$ * $Author: ytkaczyk $ * * Revision History: * $History:$ * *********************************************************************/ #include "stdafx.h" #include "PropPageFrame.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif namespace TreePropSheet { //------------------------------------------------------------------- // class CPropPageFrame //------------------------------------------------------------------- CPropPageFrame::CPropPageFrame() : m_bShowCaption(FALSE), m_nCaptionHeight(0), m_hCaptionIcon(NULL), m_dwMsgFormat(DT_CENTER|DT_VCENTER|DT_NOPREFIX|DT_SINGLELINE) { } CPropPageFrame::~CPropPageFrame() { } ///////////////////////////////////////////////////////////////////// // Operations 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()); } 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) { UNREFERENCED_PARAMETER(dwFormat); UNREFERENCED_PARAMETER(lpszMsg); CGdiObject* const pPrevFont = 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) { UNREFERENCED_PARAMETER(pDc); UNREFERENCED_PARAMETER(rect); UNREFERENCED_PARAMETER(lpszCaption); UNREFERENCED_PARAMETER(hIcon); // should be implemented by specialized classes } ///////////////////////////////////////////////////////////////////// // Implementation helpers void CPropPageFrame::SafeUpdateWindow(LPCRECT lpRect /* = NULL */) { if (!IsWindow(GetWnd()->GetSafeHwnd())) return; GetWnd()->InvalidateRect(lpRect, TRUE); } } //namespace TreePropSheet