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

对话框与窗口

开发平台:

Visual C++

  1. #ifndef _MULTILINE_CAPTION_H
  2. #define _MULTILINE_CAPTION_H
  3. ////////////////////////////////////////////////////////////////
  4. //
  5. // class CMultiLineCaption
  6. //
  7. // Multi-line auto-wrap caption painter. 
  8. //
  9. // To use:
  10. // - call Install from your frame's OnCreate function. 
  11. // - Set a custom CaptionBackground if desired
  12. // - Set custom TextAttributes if required
  13. //
  14. //   If you are drawing custom caption buttons, you must handle WM_NCLBUTTONDOWN & co.
  15. //   yourself. CMultiLineCaption does not handle the mouse for custom caption buttons. 
  16. //
  17. // Author: Dave Lorde (dlorde@cix.compulink.co.uk)
  18. //
  19. //          Copyright January 2000
  20. //
  21. //
  22. ////////////////////////////////////////////////////////////////
  23. //
  24. #include "Caption.h"
  25. class AFX_EXT_CLASS CMultiLineCaption : public CCaption 
  26. {
  27. public:
  28. CMultiLineCaption(int maxLines = 5);
  29. void SetMaxLines(int maxLines);
  30. int  GetMaxLines() const;
  31. virtual void Refresh();
  32. protected:
  33. DECLARE_DYNAMIC(CMultiLineCaption);
  34. void PaintText (CDC* pDC);
  35. CRect GetCaptionRect ();
  36. virtual LRESULT WindowProc(UINT msg, WPARAM wp, LPARAM lp);
  37. virtual LRESULT OnNcCalcSize (BOOL bCalcValidRects, LPNCCALCSIZE_PARAMS lpncsp);
  38. virtual void OnGetMinMaxInfo (MINMAXINFO FAR* lpMMI);
  39. virtual void OnWindowPosChanged( WINDOWPOS* lpwndpos );
  40. virtual void OnMDIActivate ();
  41. virtual void OnExitSizeMove ();
  42. virtual void OnSize ( UINT nType, int cx, int cy );
  43. virtual void OnNcPaint (HRGN hRgn);
  44. virtual void OnSetText (LPCTSTR lpText);
  45. virtual BOOL OnNcActivate (BOOL bActive);
  46. private:
  47. CRect CalcTextRect (int textFormat);  
  48. int GetCaptionHeight();
  49. LONG GetLineHeight (CDC* pDC);
  50. int GetChildOffset ();
  51. void Repaint();
  52. void AdjustHeight();
  53. int   m_MaxLines; // Maximum lines to wrap caption to
  54. bool  m_InitialShow; // Track first display of caption
  55. COLORREF m_ActiveSysColor; // Track colours to check for system changes
  56. COLORREF m_InactiveSysColor; // as MDI windows don't get explicit notification
  57. };
  58. #endif