SampleText.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:2k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // SampleText.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "FontCombo.h"
  5. #include "FontComboDlg.h"
  6. #include "SampleText.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CSampleText
  14. CSampleText::CSampleText()
  15. {
  16. m_cr = COLORREF_NULL;
  17. }
  18. CSampleText::~CSampleText()
  19. {
  20. }
  21. BEGIN_MESSAGE_MAP(CSampleText, CStatic)
  22. //{{AFX_MSG_MAP(CSampleText)
  23. ON_WM_PAINT()
  24. ON_WM_NCPAINT()
  25. //}}AFX_MSG_MAP
  26. END_MESSAGE_MAP()
  27. /////////////////////////////////////////////////////////////////////////////
  28. // CSampleText message handlers
  29. void CSampleText::UpdateFont(const CXTLogFont& lf, const COLORREF& cr)
  30. {
  31. m_cr = cr;
  32. m_lf = lf;
  33. if (::IsWindow(m_hWnd))
  34. RedrawWindow();
  35. }
  36. void CSampleText::OnPaint() 
  37. {
  38. CPaintDC dc(this); // device context for painting
  39. CXTPClientRect rClient(this);
  40. // Paint to a memory device context to help
  41. // eliminate screen flicker...
  42. CXTMemDC memDC(&dc, rClient, GetXtremeColor(COLOR_WINDOW));
  43. // create a font based on the current font selection.
  44. CFont font;
  45. font.CreateFontIndirect(&m_lf);
  46. // set the text color and font based on current selection
  47. CXTPFontDC fontDC(&memDC, &font);
  48. memDC.SetBkMode(TRANSPARENT);
  49. CString csWindowText;
  50. GetWindowText(csWindowText);
  51. // display the sample text.
  52. memDC.SetTextColor(m_cr);
  53. memDC.DrawText(csWindowText, &rClient, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
  54. }
  55. void CSampleText::OnNcPaint() 
  56. {
  57. CWindowDC dc(this);
  58. // convert to client coordinates
  59. CXTPWindowRect rWindow(this);
  60. ScreenToClient(rWindow);
  61. // exclude the client area from paint operation.
  62. CXTPClientRect rClient(this);
  63. rClient.OffsetRect(-rWindow.left, -rWindow.top);
  64. dc.ExcludeClipRect(rClient);
  65. rWindow.OffsetRect(-rWindow.left, -rWindow.top);
  66. // Paint to a memory device context to help
  67. // eliminate screen flicker...
  68. CXTMemDC memDC(&dc, rWindow, GetXtremeColor(COLOR_WINDOW));
  69. memDC.Draw3dRect(&rWindow, GetXtremeColor(XPCOLOR_HIGHLIGHT_BORDER), GetXtremeColor(XPCOLOR_HIGHLIGHT_BORDER));
  70. }