SystemCaptionFont.cpp
上传用户:kssdz899
上传日期:2007-01-08
资源大小:79k
文件大小:1k
源码类别:

钩子与API截获

开发平台:

Visual C++

  1. #include "StdAfx.h"
  2. #include "SystemCaptionFont.h"
  3. //////////////////////////////////////////////////////////////////////////////////////////
  4. // CSystemCaptionFont provides self-contained access to the default system caption font.
  5. //
  6. // operator() returns a CFont pointer to a font created on demand.
  7. //
  8. // The destructor deletes the font object attached to CSystemCaptionFont.
  9. //
  10. ///////////
  11. // Destructor deletes any font object associated with CFont member.
  12. //
  13. CSystemCaptionFont::~CSystemCaptionFont() 
  14. if (m_Font.m_hObject) 
  15. m_Font.DeleteObject(); 
  16. }
  17. /////////////
  18. // Returns a lazy-created CFont*
  19. //
  20. CFont* CSystemCaptionFont::operator()()
  21. {
  22. if (!m_Font.m_hObject)  
  23. CreateFont();
  24. return &m_Font;
  25. }
  26. /////////////////
  27. // Creates a caption font using the system caption defaults
  28. //
  29. void CSystemCaptionFont::CreateFont()
  30. {
  31. NONCLIENTMETRICS ncm;
  32.     memset(&ncm, 0, sizeof(ncm));
  33.     ncm.cbSize = sizeof(ncm);
  34.     SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);
  35. if (m_Font.m_hObject)
  36. m_Font.DeleteObject();
  37.     m_Font.CreateFontIndirect(&ncm.lfCaptionFont);