ResizableSheet.h
上传用户:hjw22cn
上传日期:2007-01-11
资源大小:192k
文件大小:3k
源码类别:

Tab控件

开发平台:

Visual C++

  1. #if !defined(AFX_RESIZABLESHEET_H__INCLUDED_)
  2. #define AFX_RESIZABLESHEET_H__INCLUDED_
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. /////////////////////////////////////////////////////////////////////////////
  7. //
  8. // Copyright (C) 2000 by Paolo Messina
  9. // (ppescher@yahoo.com)
  10. //
  11. // Free for non-commercial use.
  12. // You may change the code to your needs,
  13. // provided that credits to the original 
  14. // author is given in the modified files.
  15. //  
  16. /////////////////////////////////////////////////////////////////////////////
  17. // ResizableSheet.h : header file
  18. //
  19. class CResizableSheet : public CPropertySheet
  20. {
  21. DECLARE_DYNAMIC(CResizableSheet)
  22. // Construction
  23. public:
  24. CResizableSheet();
  25. CResizableSheet(UINT nIDCaption, CWnd *pParentWnd = NULL, UINT iSelectPage = 0);
  26. CResizableSheet(LPCTSTR pszCaption, CWnd *pParentWnd = NULL, UINT iSelectPage = 0);
  27. // Attributes
  28. private:
  29. // flags
  30. BOOL m_bShowGrip;
  31. BOOL m_bUseMaxTrack;
  32. BOOL m_bUseMinTrack;
  33. BOOL m_bUseMaxRect;
  34. BOOL m_bEnableSaveRestore;
  35. BOOL m_bSavePage;
  36. // internal status
  37. CString m_sSection; // section name and
  38. CString m_sEntry; // entry for save/restore
  39. BOOL m_bInitDone; // if all internal vars initialized
  40. SIZE m_szGripSize; // set at construction time
  41. CRect m_rcGripRect; // current pos of grip
  42. POINT m_ptMinTrackSize; // min tracking size
  43. POINT m_ptMaxTrackSize; // max tracking size
  44. POINT m_ptMaxPos; // maximized position
  45. POINT m_ptMaxSize; // maximized size
  46. // layout variables
  47. SIZE m_szLayoutPage;
  48. SIZE m_szLayoutTabLine; // tab control or wizard line
  49. SIZE m_szLayoutButton[7]; // each index corresponds to a possible button
  50. // Operations
  51. public:
  52. // Overrides
  53. // ClassWizard generated virtual function overrides
  54. //{{AFX_VIRTUAL(CResizableSheet)
  55. public:
  56. virtual BOOL OnInitDialog();
  57. protected:
  58. //}}AFX_VIRTUAL
  59. // Implementation
  60. public:
  61. virtual ~CResizableSheet();
  62. // used internally
  63. private:
  64. void PresetLayout();
  65. void Construct();
  66. void LoadWindowRect();
  67. void SaveWindowRect();
  68. void ArrangeLayout();
  69. void UpdateGripPos();
  70. // callable from derived classes
  71. protected:
  72. void ShowSizeGrip(BOOL bShow); // show or hide the size grip
  73. void SetMaximizedRect(const CRect& rc); // set window rect when maximized
  74. void ResetMaximizedRect(); // reset to default maximized rect
  75. void SetMinTrackSize(const CSize& size); // set minimum tracking size
  76. void ResetMinTrackSize(); // reset to default minimum tracking size
  77. void SetMaxTrackSize(const CSize& size); // set maximum tracking size
  78. void ResetMaxTrackSize(); // reset to default maximum tracking size
  79. void EnableSaveRestore(LPCTSTR pszSection,
  80. LPCTSTR pszEntry, BOOL bWithPage = FALSE); // section and entry in app's profile
  81. int GetMinWidth(); // minimum width to display all buttons
  82. // Generated message map functions
  83. protected:
  84. //{{AFX_MSG(CResizableSheet)
  85. afx_msg void OnPaint();
  86. afx_msg UINT OnNcHitTest(CPoint point);
  87. afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI);
  88. afx_msg void OnSize(UINT nType, int cx, int cy);
  89. afx_msg void OnDestroy();
  90. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  91. //}}AFX_MSG
  92. afx_msg void OnPageChanged();
  93. DECLARE_MESSAGE_MAP()
  94. };
  95. /////////////////////////////////////////////////////////////////////////////
  96. #endif // AFX_RESIZABLESHEET_H__INCLUDED_