Caption.h
上传用户:zhoushen
上传日期:2022-06-15
资源大小:84k
文件大小:3k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. #ifndef _CAPTION_H
  2. #define _CAPTION_H
  3. ////////////////////////////////////////////////////////////////
  4. //
  5. // class CCaption
  6. //
  7. // Generic caption painter. Handles WM_NCPAINT, WM_NCACTIVATE, etc. to
  8. // handle drawing custom captions. To use it:
  9. //
  10. // - call Install from your frame's OnCreate function. 
  11. // - Set a custom CaptionBackground if desired
  12. // - Set custom TextAttributes if required
  13. //
  14. //  Derive from this class for custom caption layouts.
  15. // 
  16. //   If you are drawing custom caption buttons, you must handle WM_NCLBUTTONDOWN & co.
  17. //   yourself. CCaption does not handle the mouse for custom caption buttons. 
  18. //
  19. // Author: Dave Lorde (dlorde@cix.compulink.co.uk)
  20. //
  21. //          Copyright January 2000
  22. //
  23. // - based on a 1997 Microsoft Systems Journal
  24. //            C++ Q&A article by Paul DiLascia. 
  25. //
  26. ////////////////////////////////////////////////////////////////
  27. //
  28. #include "Subclass.h"
  29. // forward declarations
  30. class CCaptionBackground;
  31. class CCaptionTextAttributes;
  32. class AFX_EXT_CLASS CCaption : public CSubclassWnd 
  33. {
  34. public:
  35. BOOL Install (CFrameWnd* pFrameWnd);
  36. void Uninstall ();
  37. void SetBackground (CCaptionBackground* pBackground);
  38. void SetTextAttributes (CCaptionTextAttributes* pTextAttributes);
  39. CCaptionBackground* GetBackground ();
  40. CCaptionTextAttributes* GetTextAttributes ();
  41. virtual void Refresh();
  42.  
  43. protected:
  44.   CCaption(); // Protected ctor makes class abstract
  45. virtual ~CCaption(); // Protected dtor makes class abstract
  46. CBitmap m_bmCaption[2]; // bitmaps for active/inactive captions 
  47. CSize m_szCaption; // size of caption rectangle
  48. BOOL m_bActive; // active/inactive state
  49. HICON m_hIcon;
  50. CCaptionBackground* m_pBackground;
  51. CCaptionTextAttributes* m_pTextAttributes;
  52. DECLARE_DYNAMIC(CCaption);
  53. // Helpers
  54. //
  55. void Invalidate ();
  56. CSize GetFrameSize () const;
  57. int GetLuminosity (COLORREF color) const;
  58. int GetIconWidth ();
  59. int GetButtonsWidth ();
  60. COLORREF GetTextColor (BOOL bActive);
  61. // Override these in derived classes if necessary
  62. //
  63. virtual void PaintCaption();
  64. virtual void PaintBitmap (CDC* pDC);
  65. virtual void PaintBackground (CDC* pDC);
  66. virtual int PaintIcon (CDC* pDC = 0);
  67. virtual int PaintButtons (CDC* pDC = 0);
  68. virtual void PaintText (CDC* pDC);
  69. virtual void PaintLowerBorder(CDC* pDC);
  70. virtual CRect GetCaptionRect ();
  71. virtual CFont* GetFont (BOOL bActive);
  72. virtual CRect GetTextRect ();
  73. // Paul DiLascia says:
  74. // "These are similar to, but NOT the same as the equivalent CWnd fns. Don't
  75. // override unless you're a guru, and even THEN I wouldn't recommend it."
  76. virtual LRESULT WindowProc (UINT msg, WPARAM wp, LPARAM lp);
  77. virtual void OnNcPaint (HRGN hUpdateRgn);
  78. virtual BOOL OnNcActivate (BOOL bActive);
  79. virtual void OnSetText (LPCTSTR lpText);
  80. virtual void OnColorChange ();
  81. };
  82. #endif