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

钩子与API截获

开发平台:

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. void OnNcCalcSize (BOOL bCalcValidRects, LPNCCALCSIZE_PARAMS lpncsp);
  38. void OnShowWindow (BOOL bShow, UINT nStatus);
  39. void OnGetMinMaxInfo (MINMAXINFO FAR* lpMMI);
  40. void OnSetText (LPCTSTR lpText);
  41. void OnWindowPosChanged( WINDOWPOS* lpwndpos );
  42. void OnMDIActivate ();
  43. private:
  44. CRect CalcTextRect (int textFormat);  
  45. int GetCaptionHeight();
  46. LONG GetLineHeight (CDC* pDC);
  47. int GetChildOffset ();
  48. int   m_MaxLines; // Maximum lines to wrap caption to
  49. bool  m_InitialShow; // Track first display of caption
  50. };
  51. #endif