officexpmenuview.cpp

来自「c++系统开发实例精粹内附的80例源代码 环境:windows2000,c++」· C++ 代码 · 共 165 行

CPP
165
字号
// OfficeXPMenuView.cpp : implementation of the COfficeXPMenuView class
//
#include "stdafx.h"
#include "OfficeXPMenu.h"
#include "OfficeXPMenuDoc.h"
#include "OfficeXPMenuView.h"

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

/////////////////////////////////////////////////////////////////////////////
// COfficeXPMenuView
IMPLEMENT_DYNCREATE(COfficeXPMenuView, CFormView)

BEGIN_MESSAGE_MAP(COfficeXPMenuView, CFormView)
	//{{AFX_MSG_MAP(COfficeXPMenuView)
	ON_WM_ERASEBKGND()
	ON_WM_CTLCOLOR()
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// COfficeXPMenuView construction/destruction
COfficeXPMenuView::COfficeXPMenuView()
	: CFormView(COfficeXPMenuView::IDD)
{
	//{{AFX_DATA_INIT(COfficeXPMenuView)
	m_strText1 = _T("控件颜色设置");
	m_strText2 = _T("控件颜色设置");
	//}}AFX_DATA_INIT
	// TODO: add construction code here
}
COfficeXPMenuView::~COfficeXPMenuView()
{
}
void COfficeXPMenuView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(COfficeXPMenuView)
	DDX_Text(pDX, IDC_EDIT_TEXT1, m_strText1);
	DDX_Text(pDX, IDC_EDIT_TEXT2, m_strText2);
	//}}AFX_DATA_MAP
}
BOOL COfficeXPMenuView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CFormView::PreCreateWindow(cs);
}
void COfficeXPMenuView::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();
}

/////////////////////////////////////////////////////////////////////////////
// COfficeXPMenuView printing
BOOL COfficeXPMenuView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}
void COfficeXPMenuView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}
void COfficeXPMenuView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}
void COfficeXPMenuView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{
	// TODO: add customized printing code here
}

/////////////////////////////////////////////////////////////////////////////
// COfficeXPMenuView diagnostics
#ifdef _DEBUG
void COfficeXPMenuView::AssertValid() const
{
	CFormView::AssertValid();
}
void COfficeXPMenuView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
COfficeXPMenuDoc* COfficeXPMenuView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(COfficeXPMenuDoc)));
	return (COfficeXPMenuDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// COfficeXPMenuView message handlers
BOOL COfficeXPMenuView::OnEraseBkgnd(CDC* pDC) 
{
	// TODO: Add your message handler code here and/or call default
	// 本函数负责将COfficeXPMenuView对应的IDD_OfficeXPMenu_FORM的背景色设为白色,默认色为灰色
	// 创建白色画刷
	CBrush brush(RGB(255,255,255));
    CBrush* pOldBrush;
   
	// 选中新画刷,并返回原有画刷给pOldBrush 
    pOldBrush=pDC->SelectObject(&brush);

    // 得到要擦除并重绘的区域
    CRect rcClip;
    pDC->GetClipBox(&rcClip);

    // 重绘此区域
    pDC->PatBlt(rcClip.left,rcClip.top,rcClip.Width(),rcClip.Height(),PATCOPY);

    // 选中pOldBrush,恢复原有画刷
	if(pOldBrush)
	   pDC->SelectObject(pOldBrush);

    // Return nonzero to half fruther processing .
    return TRUE;

	// VC自动生成的代码,读者可以做个比较
	//return CFormView::OnEraseBkgnd(pDC);
}

HBRUSH COfficeXPMenuView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
	// TODO: Change any attributes of the DC here	
    if (pWnd->GetDlgCtrlID() == IDC_EDIT_TEXT1)
    {
        // 设置IDC_EDIT_TEXT1中文本为蓝色
        pDC->SetTextColor(RGB(0, 0, 255));
	    // 设置IDC_EDIT_TEXT1中文本背景色为青色
        pDC->SetBkColor(RGB(0,255,255));
        // 设置文本背景色为透明模式
        pDC->SetBkMode(TRANSPARENT);
	    // 设置IDC_EDIT_TEXT1颜色为白色
        CBrush brush(0x00FFFFFF);
        // 返回画刷,IDC_EDIT_TEXT1中的颜色将按上述指定的颜色绘制
        hbr = brush;
    }   
    if (pWnd->GetDlgCtrlID() == IDC_EDIT_TEXT2)
    {
        // 设置IDC_EDIT_TEXT2文本色为红色
        pDC->SetTextColor(RGB(255, 0, 0));
	    // 设置IDC_EDIT_TEXT2中文本背景色为黄色
        pDC->SetBkColor(RGB(255,255,0));
        // 设置IDC_EDIT_TEXT2颜色为绿色
        CBrush brush(0x0000FF00);
        //返回画刷,IDC_EDIT_TEXT2中的颜色将按上述指定的颜色绘制
        hbr = brush;
    }
	// TODO: Return a different brush if the default is not desired
	return hbr;
}

⌨️ 快捷键说明

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