ex59View.cpp
上传用户:qdhmjx
上传日期:2022-07-11
资源大小:2226k
文件大小:3k
源码类别:

书籍源码

开发平台:

Visual C++

  1. // ex59View.cpp : implementation of the CEx59View class
  2. //
  3. #include "stdafx.h"
  4. #include "ex59.h"
  5. #include "ex59Doc.h"
  6. #include "ex59View.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CEx59View
  14. IMPLEMENT_DYNCREATE(CEx59View, CView)
  15. BEGIN_MESSAGE_MAP(CEx59View, CView)
  16. //{{AFX_MSG_MAP(CEx59View)
  17. ON_WM_RBUTTONDOWN()
  18. //}}AFX_MSG_MAP
  19. // Standard printing commands
  20. ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
  21. ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
  22. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
  23. END_MESSAGE_MAP()
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CEx59View construction/destruction
  26. CEx59View::CEx59View()
  27. {
  28. // TODO: add construction code here
  29. }
  30. CEx59View::~CEx59View()
  31. {
  32. }
  33. BOOL CEx59View::PreCreateWindow(CREATESTRUCT& cs)
  34. {
  35. // TODO: Modify the Window class or styles here by modifying
  36. //  the CREATESTRUCT cs
  37. return CView::PreCreateWindow(cs);
  38. }
  39. /////////////////////////////////////////////////////////////////////////////
  40. // CEx59View drawing
  41. void CEx59View::OnDraw(CDC* pDC)
  42. {
  43. CEx59Doc* pDoc = GetDocument();
  44. ASSERT_VALID(pDoc);
  45. // TODO: add draw code for native data here
  46. }
  47. /////////////////////////////////////////////////////////////////////////////
  48. // CEx59View printing
  49. BOOL CEx59View::OnPreparePrinting(CPrintInfo* pInfo)
  50. {
  51. // default preparation
  52. return DoPreparePrinting(pInfo);
  53. }
  54. void CEx59View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  55. {
  56. // TODO: add extra initialization before printing
  57. }
  58. void CEx59View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  59. {
  60. // TODO: add cleanup after printing
  61. }
  62. /////////////////////////////////////////////////////////////////////////////
  63. // CEx59View diagnostics
  64. #ifdef _DEBUG
  65. void CEx59View::AssertValid() const
  66. {
  67. CView::AssertValid();
  68. }
  69. void CEx59View::Dump(CDumpContext& dc) const
  70. {
  71. CView::Dump(dc);
  72. }
  73. CEx59Doc* CEx59View::GetDocument() // non-debug version is inline
  74. {
  75. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CEx59Doc)));
  76. return (CEx59Doc*)m_pDocument;
  77. }
  78. #endif //_DEBUG
  79. /////////////////////////////////////////////////////////////////////////////
  80. // CEx59View message handlers
  81. void CEx59View::OnRButtonDown(UINT nFlags, CPoint point) 
  82. {
  83. // TODO: Add your message handler code here and/or call default
  84. CDC *pDC=GetDC();
  85. CFont myfont; //定义CFont类
  86. CFont*oldfont; //定义CFont类的指针
  87. LOGFONT font; //定义逻辑字体
  88. memset(&font,0,sizeof(LOGFONT));
  89. //给font中的所有数据成员赋值为0
  90. font.lfHeight=-50;//指定字体高度为50
  91. font.lfWeight=FW_NORMAL;//指定字体粗细
  92. font. lfCharSet=GB2312_CHARSET;//字符集
  93. strcpy(font.lfFaceName,"楷体_GB2312");//指定字体
  94. myfont.CreateFontIndirect(&font); //非直接创建字体
  95. oldfont=pDC->SelectObject(&myfont);
  96. TEXTMETRIC tm;//定义TEXTMETRIC结构tm
  97. pDC->GetTextMetrics(&tm);//获取字体信息
  98. CString str;
  99. str.Format("字体的高度为%d",tm.tmHeight);
  100. //str中存放的内容是"字体的高度-50"
  101. pDC->TextOut(100,200," 第2种方法创建字体!");
  102. //用新字体输出字符串
  103. pDC->SelectObject(oldfont);//恢复设备环境中的旧字体
  104. pDC->SetTextColor(RGB(255,0,0));
  105. pDC->TextOut(100,100,str);//输出str字符串
  106. CView::OnRButtonDown(nFlags, point);
  107. }