PropPageFrame.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:8k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /********************************************************************
  2. *
  3. * Copyright (c) 2002 Sven Wiegand <mail@sven-wiegand.de>
  4. *
  5. * You can use this and modify this in any way you want,
  6. * BUT LEAVE THIS HEADER INTACT.
  7. *
  8. * Redistribution is appreciated.
  9. *
  10. * $Workfile:$
  11. * $Revision: 1.2 $
  12. * $Modtime:$
  13. * $Author: gabest $
  14. *
  15. * Revision History:
  16. * $History:$
  17. *
  18. *********************************************************************/
  19. #if !defined(AFX_PROPPAGEFRAME_H__B968548B_F0B4_4C35_85DD_C44242A9D368__INCLUDED_)
  20. #define AFX_PROPPAGEFRAME_H__B968548B_F0B4_4C35_85DD_C44242A9D368__INCLUDED_
  21. #if _MSC_VER > 1000
  22. #pragma once
  23. #endif // _MSC_VER > 1000
  24. namespace TreePropSheet
  25. {
  26. /**
  27. An object of an CPropertyPageFrame-derived class is used by 
  28. CTreePropSheet to display a frame for the property pages.
  29. Derived classes have to implement at least the Create() and the 
  30. GetWnd() method, which
  31. returns a pointer to the CWnd-obect of the window, that has been
  32. created by the call to the Create() method. An implementation can
  33. provide the CWnd-object by using it as a property or by deriving
  34. from CWnd or a more specialiced class. This way has been choosen 
  35. instead of deriving CPropPageFrame from CWnd, to allow derived class
  36. to derive from more specialized classes than CWnd 
  37. (i.e. CStatic, etc.). From the WM_PAINT-handler of your derived class
  38. you have to call the Draw()-method.
  39. Most implementations will also implement the DrawCaption() and 
  40. DrawMsg() methods, to provide custom drawing functionality.
  41. @author Sven Wiegand
  42. */
  43. class /*AFX_EXT_CLASS*/ CPropPageFrame
  44. {
  45. // Construction/Destruction
  46. public:
  47. CPropPageFrame();
  48. virtual ~CPropPageFrame();
  49. // Operations
  50. public:
  51. /**
  52. Has to create a window with the specified properties.
  53. @param dwWindowStyle
  54. Standard window styles, to apply to the window to create.
  55. @param rect
  56. Position and size of the window to create.
  57. @param pwndParent
  58. Parent window. (Never be NULL).
  59. @param nID
  60. Window id.
  61. @return
  62. TRUE on success, FALSE otherwise.
  63. */
  64. virtual BOOL Create(DWORD dwWindowStyle, const RECT &rect, CWnd *pwndParent, UINT nID) = 0;
  65. /**
  66. Returns a pointer to the window object, that represents the frame.
  67. */
  68. virtual CWnd* GetWnd() = 0;
  69. /**
  70. Enables or disables page caption.
  71. This default implementation calls the SafeUpdateWindow() method
  72. with the caption rectangle, to force it to be redrawn.
  73. */
  74. virtual void ShowCaption(BOOL bEnable);
  75. /**
  76. Returns TRUE if captions are enabled, FALSE otherwise.
  77. */
  78. BOOL GetShowCaption() const;
  79. /**
  80. Sets the height of the caption in pixels. This value is ignored 
  81. until the caption is enabled by ShowCaption(TRUE).
  82. This default implementation calls the SafeUpdateWindow() method
  83. with the caption rectangle, to force it to be redrawn.
  84. */
  85. virtual void SetCaptionHeight(int nCaptionHeight);
  86. /**
  87. Returns the caption height, that has been most recently set by a
  88. call to the SetCaptionHeight() method.
  89. */
  90. int GetCaptionHeight() const;
  91. /**
  92. Sets caption text an icon.
  93. This default implementation calls the SafeUpdateWindow() method
  94. with the caption rectangle, to force it to be redrawn.
  95. @param lpszCaption
  96. Text to display for the caption.
  97. @param hIcon
  98. Icon to display for the caption.
  99. */
  100. virtual void SetCaption(LPCTSTR lpszCaption, HICON hIcon = NULL);
  101. /**
  102. Returns the caption, that has been set most recently using the
  103. SetCaption() method.
  104. @param pIcon
  105. Pointer to a HICON variable, that should receive the handle of
  106. the currently set icon or NULL, if there is no icon or a NULL
  107. pointer, if the caller is not interested in the icon.
  108. @return
  109. The text that has been set most recently using the SetCaption()
  110. method.
  111. */
  112. CString GetCaption(HICON *pIcon = NULL) const;
  113. /**
  114. Sets the text to display.
  115. This default implementation calls the SafeUpdateWindow() method
  116. with the message rectangle, to force it to be redrawn.
  117. */
  118. virtual void SetMsgText(LPCTSTR lpszMsg);
  119. /**
  120. Returns the text currently displayed.
  121. */
  122. CString GetMsgText() const;
  123. /**
  124. Specifies the format to draw the text with, set by SetMsgText().
  125. This default implementation calls the SafeUpdateWindow() method
  126. with the message rectangle, to force it to be redrawn.
  127. @param dwFormat
  128. Combination of the DT_* flags, specified by the Win32 function
  129. DrawText().
  130. */
  131. virtual void SetMsgFormat(DWORD dwFormat);
  132. /**
  133. Returns the format to draw the text with, set by SetMsgText().
  134. @see SetMsgFormat()
  135. */
  136. DWORD GetMsgFormat() const;
  137. // Overridable implementation helpers
  138. protected:
  139. /**
  140. Draws the whole frame including caption (if enabled) and message.
  141. This method calculates the rectangles for the message area and
  142. the caption area using the CalcMsgArea() and the CalcCaptionArea()
  143. methods, draws then the caption calling the DrawCaption() method
  144. (only if caption is enabled) and afterwards the message calling
  145. the DrawMsg() method.
  146. You should call this method from the WM_PAINT-handler of your
  147. derived class.
  148. @param pDc
  149. Device context to draw in.
  150. */
  151. virtual void Draw(CDC *pDc);
  152. /**
  153. Calculates the area, the message, set by SetMsgText() should be
  154. displayed in. The returned rectangle (client coordinates) will be
  155. passed to DrawMsg().
  156. This default implementation calls the CalcCaptionArea() method,
  157. substracts the returned rectangle from the client area and returns
  158. the result.
  159. */
  160. virtual CRect CalcMsgArea();
  161. /**
  162. Draws the message with the specified format.
  163. This default implementation draws the given msg using the specified
  164. properties.
  165. @param pDc
  166. Device context to draw in.
  167. @param rect
  168. Rectangle to draw the message in.
  169. @param lpszMsg
  170. Message to draw.
  171. @param dwFormat.
  172. Combination of the DT_* flags, specified by the Win32 function
  173. DrawText() to draw the message with.
  174. */
  175. virtual void DrawMsg(CDC *pDc, CRect rect, LPCTSTR lpszMsg, DWORD dwFormat);
  176. /**
  177. Calculates the caption area. The caption area is the rectangular
  178. range, the current page's caption should be drawn in.
  179. The caption can be enabled or disabled using the ShowCaption()
  180. method. This method should return an empty rect, if the caption
  181. is disabled. If the caption is enabled the height of the rect 
  182. should be as large, as specified by the latest call to the 
  183. SetCaptionHeight() method.
  184. The rectangle, returned by this method will be passed to the
  185. DrawCaption() method to draw the caption.
  186. If the caption is enabled currently, this default implementation
  187. returns a rectangle, that has the width of the client area and
  188. the height, specified by the latest call to SetCaptionHeight(),
  189. starting and y-position 0. If the caption is disabled at the 
  190. moment, this method returns an empty rectangle with the width of 
  191. the client area.
  192. */
  193. virtual CRect CalcCaptionArea();
  194. /**
  195. Draws the caption.
  196. This default implementation draws nothing.
  197. @param pDc
  198. Device context to draw in.
  199. @param rect
  200. Rectangle to draw the caption in.
  201. @param lpszCaption
  202. Text to display in the caption.
  203. @param hIcon
  204. Icon to display in the caption.
  205. */
  206. virtual void DrawCaption(CDC *pDc, CRect rect, LPCTSTR lpszCaption, HICON hIcon);
  207. // Implementation helpers
  208. protected:
  209. /**
  210. If the m_hWnd property of the CWnd-object returend by GetWnd() 
  211. specifies a valid window, this method will invalidate the specified
  212. rectangle, to schedule it for repaint, otherwise the method will
  213. return without doing anything.
  214. @param lpRect
  215. Pointer to the rectangular area, that should be marked for 
  216. repainting or NULL, if the whole client area should be marked
  217. for repainting.
  218. */
  219. void SafeUpdateWindow(LPCRECT lpRect = NULL);
  220. // Properties
  221. private:
  222. /** TRUE if the caption should be drawn, FALSE otherwise. */
  223. BOOL m_bShowCaption;
  224. /** Height of the caption in pixels, if it is enabled. */
  225. int m_nCaptionHeight;
  226. /** Text to display in the caption. */
  227. CString m_strCaption;
  228. /** 
  229. Icon to display in the caption or NULL if no icon should be 
  230. displayed.
  231. */
  232. HICON m_hCaptionIcon;
  233. /** Message text to display. */
  234. CString m_strMsg;
  235. /** Style to use when drawing the message text m_strMsg. */
  236. DWORD m_dwMsgFormat;
  237. };
  238. } //namespace TreePropSheet
  239. /////////////////////////////////////////////////////////////////////////////
  240. //{{AFX_INSERT_LOCATION}}
  241. // Microsoft Visual C++ f黦t unmittelbar vor der vorhergehenden Zeile zus鋞zliche Deklarationen ein.
  242. #endif // AFX_PROPPAGEFRAME_H__B968548B_F0B4_4C35_85DD_C44242A9D368__INCLUDED_