📄 ch11demo4view.cpp
字号:
// Ch11Demo4View.cpp : implementation of the CCh11Demo4View class
//
#include "stdafx.h"
#include "Ch11Demo4.h"
#include "Ch11Demo4Doc.h"
#include "Ch11Demo4View.h"
#include "ColorDlg.h"
#include "GraphDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCh11Demo4View
IMPLEMENT_DYNCREATE(CCh11Demo4View, CView)
BEGIN_MESSAGE_MAP(CCh11Demo4View, CView)
//{{AFX_MSG_MAP(CCh11Demo4View)
ON_WM_RBUTTONDBLCLK()
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCh11Demo4View construction/destruction
CCh11Demo4View::CCh11Demo4View()
{
// TODO: add construction code here
m_r=m_g=0;
m_b=128;
m_type=0;
}
CCh11Demo4View::~CCh11Demo4View()
{
}
BOOL CCh11Demo4View::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CCh11Demo4View drawing
void CCh11Demo4View::OnDraw(CDC* pDC)
{
CCh11Demo4Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
pDC->TextOut(10,10,"双击鼠标右键,即可通过属性表对话框设置图形对象");
CBrush mybrush(RGB(m_r,m_g,m_b)); //生成刷子
CBrush *oldbrush; //生成刷子指针
oldbrush=pDC->SelectObject(&mybrush); //把刷子选入设备环境
switch (m_type)
{
case 0:
pDC->Rectangle(50,50,250,180);
break;
case 1:
pDC->Ellipse(50,50,250,180); //绘制椭圆
break;
}
pDC->SelectObject(oldbrush); //恢复原有刷子
}
/////////////////////////////////////////////////////////////////////////////
// CCh11Demo4View printing
BOOL CCh11Demo4View::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CCh11Demo4View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CCh11Demo4View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CCh11Demo4View diagnostics
#ifdef _DEBUG
void CCh11Demo4View::AssertValid() const
{
CView::AssertValid();
}
void CCh11Demo4View::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CCh11Demo4Doc* CCh11Demo4View::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCh11Demo4Doc)));
return (CCh11Demo4Doc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CCh11Demo4View message handlers
void CCh11Demo4View::OnRButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CPropertySheet propsheet("图形对象设置");//CPropertySheet类对象
CGraphDlg pageFirst; //图形属性页对象
CColorDlg pageSecond; //画刷色设置属性页对象
//将当前图形画刷信息赋给属性页
pageFirst.m_radio=m_type;
pageSecond.m_red=m_r;
pageSecond.m_green=m_g;
pageSecond.m_blue=m_b;
//添加属性页到CPropertySheet类对象
propsheet.AddPage(&pageFirst);
propsheet.AddPage(&pageSecond);
//创建模态属性表对话框
if (propsheet.DoModal() == IDOK)
{
//获取各属性页设置的值
m_type = pageFirst.m_radio;
m_r=pageSecond.m_red;
m_g=pageSecond.m_green;
m_b=pageSecond.m_blue;
Invalidate();//重绘客户窗口
}
CView::OnRButtonDblClk(nFlags, point);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -