GradientTxtView.cpp
上传用户:aokegd
上传日期:2009-12-14
资源大小:1276k
文件大小:4k
源码类别:

书籍源码

开发平台:

Visual C++

  1. // GradientTxtView.cpp : implementation of the CGradientTxtView class
  2. //
  3. #include "stdafx.h"
  4. #include "GradientTxt.h"
  5. #include "GradientTxtDoc.h"
  6. #include "GradientTxtView.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CGradientTxtView
  14. IMPLEMENT_DYNCREATE(CGradientTxtView, CView)
  15. BEGIN_MESSAGE_MAP(CGradientTxtView, CView)
  16. //{{AFX_MSG_MAP(CGradientTxtView)
  17. // NOTE - the ClassWizard will add and remove mapping macros here.
  18. //    DO NOT EDIT what you see in these blocks of generated code!
  19. //}}AFX_MSG_MAP
  20. // Standard printing commands
  21. ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
  22. ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
  23. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
  24. END_MESSAGE_MAP()
  25. /////////////////////////////////////////////////////////////////////////////
  26. // CGradientTxtView construction/destruction
  27. CGradientTxtView::CGradientTxtView()
  28. {
  29. // TODO: add construction code here
  30. }
  31. CGradientTxtView::~CGradientTxtView()
  32. {
  33. }
  34. BOOL CGradientTxtView::PreCreateWindow(CREATESTRUCT& cs)
  35. {
  36. // TODO: Modify the Window class or styles here by modifying
  37. //  the CREATESTRUCT cs
  38. return CView::PreCreateWindow(cs);
  39. }
  40. /////////////////////////////////////////////////////////////////////////////
  41. // CGradientTxtView drawing
  42. void CGradientTxtView::OnDraw(CDC* pDC)
  43. {
  44. CGradientTxtDoc* pDoc = GetDocument();
  45. ASSERT_VALID(pDoc);
  46. //得到客户区的大小
  47. CRect rcClient;
  48. GetClientRect (rcClient);
  49. //创建输出字符串.
  50. CString str (_T ("oooo...I am rotating!"));
  51. //输出透明红色字体
  52. pDC->SetBkMode (TRANSPARENT);
  53. pDC->SetTextColor (RGB (255,0,0));
  54. CFont font;
  55. LOGFONT stFont; //字体定义结构
  56. //设置字体格式
  57. memset(&stFont, 0, sizeof(LOGFONT));
  58. stFont.lfHeight=MulDiv(14, -pDC->GetDeviceCaps(LOGPIXELSY), 72);
  59. stFont.lfWeight=FW_NORMAL;
  60. stFont.lfClipPrecision=CLIP_LH_ANGLES;
  61. strcpy (stFont.lfFaceName, "Arial");
  62. //每隔15度输出字符串
  63. for (int nAngle=0; nAngle<3600; nAngle+=150)
  64. {
  65. //设定新的旋转角度
  66. stFont.lfEscapement=nAngle;
  67. //创建字体并选进设备场景
  68. font.CreateFontIndirect(&stFont);
  69. CFont* pOldFont=pDC ->SelectObject(&font);
  70. //输出字体
  71. pDC->TextOut(rcClient.left + rcClient.Width()/2,rcClient.top + rcClient.Height()/2,str);
  72. //原来字体
  73. pDC->SelectObject(pOldFont);
  74. font.DeleteObject();
  75. }
  76. // TODO: add draw code for native data here
  77. }
  78. /////////////////////////////////////////////////////////////////////////////
  79. // CGradientTxtView printing
  80. BOOL CGradientTxtView::OnPreparePrinting(CPrintInfo* pInfo)
  81. {
  82. // default preparation
  83. return DoPreparePrinting(pInfo);
  84. }
  85. void CGradientTxtView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  86. {
  87. // TODO: add extra initialization before printing
  88. }
  89. void CGradientTxtView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  90. {
  91. // TODO: add cleanup after printing
  92. }
  93. /////////////////////////////////////////////////////////////////////////////
  94. // CGradientTxtView diagnostics
  95. #ifdef _DEBUG
  96. void CGradientTxtView::AssertValid() const
  97. {
  98. CView::AssertValid();
  99. }
  100. void CGradientTxtView::Dump(CDumpContext& dc) const
  101. {
  102. CView::Dump(dc);
  103. }
  104. CGradientTxtDoc* CGradientTxtView::GetDocument() // non-debug version is inline
  105. {
  106. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CGradientTxtDoc)));
  107. return (CGradientTxtDoc*)m_pDocument;
  108. }
  109. #endif //_DEBUG
  110. /////////////////////////////////////////////////////////////////////////////
  111. // CGradientTxtView message handlers