Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

417 lines
9.5 KiB

  1. /////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 1996 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // BasePage.cpp
  7. //
  8. // Abstract:
  9. // Implementation of the CBasePage class.
  10. //
  11. // Author:
  12. // David Potter (davidp) May 15, 1996
  13. //
  14. // Revision History:
  15. //
  16. // Notes:
  17. //
  18. /////////////////////////////////////////////////////////////////////////////
  19. #include "stdafx.h"
  20. #include "BasePage.h"
  21. #include "resource.h"
  22. #ifdef _DEBUG
  23. #define new DEBUG_NEW
  24. #undef THIS_FILE
  25. static char THIS_FILE[] = __FILE__;
  26. #endif
  27. /////////////////////////////////////////////////////////////////////////////
  28. // CBasePage property page
  29. /////////////////////////////////////////////////////////////////////////////
  30. IMPLEMENT_DYNCREATE(CBasePage, CPropertyPage)
  31. /////////////////////////////////////////////////////////////////////////////
  32. // CBasePage Message Map
  33. BEGIN_MESSAGE_MAP(CBasePage, CPropertyPage)
  34. //{{AFX_MSG_MAP(CBasePage)
  35. ON_WM_HELPINFO()
  36. ON_WM_CONTEXTMENU()
  37. ON_MESSAGE(WM_COMMANDHELP, OnCommandHelp)
  38. //}}AFX_MSG_MAP
  39. END_MESSAGE_MAP()
  40. /////////////////////////////////////////////////////////////////////////////
  41. //++
  42. //
  43. // CBasePage::CBasePage
  44. //
  45. // Routine Description:
  46. // Default constructor.
  47. //
  48. // Arguments:
  49. // None.
  50. //
  51. // Return Value:
  52. // None.
  53. //
  54. //--
  55. /////////////////////////////////////////////////////////////////////////////
  56. CBasePage::CBasePage(void)
  57. {
  58. CommonConstruct();
  59. } //*** CBasePage::CBasePage()
  60. /////////////////////////////////////////////////////////////////////////////
  61. //++
  62. //
  63. // CBasePage::CBasePage
  64. //
  65. // Routine Description:
  66. // Constructor.
  67. //
  68. // Arguments:
  69. // idd [IN] Dialog template resource ID.
  70. // pdwHelpMap [IN] Control to help ID map.
  71. // nIDCaption [IN] Caption string resource ID.
  72. //
  73. // Return Value:
  74. // None.
  75. //
  76. //--
  77. /////////////////////////////////////////////////////////////////////////////
  78. CBasePage::CBasePage(
  79. IN UINT idd,
  80. IN const DWORD * pdwHelpMap,
  81. IN UINT nIDCaption
  82. )
  83. : CPropertyPage(idd, nIDCaption)
  84. , m_dlghelp(pdwHelpMap, idd)
  85. {
  86. //{{AFX_DATA_INIT(CBasePage)
  87. //}}AFX_DATA_INIT
  88. CommonConstruct();
  89. } //*** CBasePage::CBasePage(UINT, UINT)
  90. /////////////////////////////////////////////////////////////////////////////
  91. //++
  92. //
  93. // CBasePage::CommonConstruct
  94. //
  95. // Routine Description:
  96. // Common construction code.
  97. //
  98. // Arguments:
  99. // None.
  100. //
  101. // Return Value:
  102. // None.
  103. //
  104. //--
  105. /////////////////////////////////////////////////////////////////////////////
  106. void CBasePage::CommonConstruct(void)
  107. {
  108. m_bReadOnly = FALSE;
  109. } //*** CBasePage::CommonConstruct()
  110. /////////////////////////////////////////////////////////////////////////////
  111. //++
  112. //
  113. // CBasePage::BInit
  114. //
  115. // Routine Description:
  116. // Initialize the page.
  117. //
  118. // Arguments:
  119. // psht [IN OUT] Property sheet to which this page belongs.
  120. //
  121. // Return Value:
  122. // TRUE Page initialized successfully.
  123. // FALSE Page failed to initialize.
  124. //
  125. //--
  126. /////////////////////////////////////////////////////////////////////////////
  127. BOOL CBasePage::BInit(IN OUT CBaseSheet * psht)
  128. {
  129. ASSERT_VALID(psht);
  130. m_psht = psht;
  131. // Don't display a help button.
  132. m_psp.dwFlags &= ~PSP_HASHELP;
  133. return TRUE;
  134. } //*** CBasePage::BInit()
  135. /////////////////////////////////////////////////////////////////////////////
  136. //++
  137. //
  138. // CBasePage::DoDataExchange
  139. //
  140. // Routine Description:
  141. // Do data exchange between the dialog and the class.
  142. //
  143. // Arguments:
  144. // pDX [IN OUT] Data exchange object
  145. //
  146. // Return Value:
  147. // None.
  148. //
  149. //--
  150. /////////////////////////////////////////////////////////////////////////////
  151. void CBasePage::DoDataExchange(CDataExchange * pDX)
  152. {
  153. CPropertyPage::DoDataExchange(pDX);
  154. //{{AFX_DATA_MAP(CBasePage)
  155. //}}AFX_DATA_MAP
  156. DDX_Control(pDX, IDC_PP_ICON, m_staticIcon);
  157. DDX_Control(pDX, IDC_PP_TITLE, m_staticTitle);
  158. if (!pDX->m_bSaveAndValidate)
  159. {
  160. // Set the title.
  161. DDX_Text(pDX, IDC_PP_TITLE, (CString &) Psht()->StrObjTitle());
  162. } // if: not saving data
  163. } //*** CBasePage::DoDataExchange()
  164. /////////////////////////////////////////////////////////////////////////////
  165. //++
  166. //
  167. // CBasePage::OnInitDialog
  168. //
  169. // Routine Description:
  170. // Handler for the WM_INITDIALOG message.
  171. //
  172. // Arguments:
  173. // None.
  174. //
  175. // Return Value:
  176. // TRUE Focus not set yet.
  177. // FALSE Focus already set.
  178. //
  179. //--
  180. /////////////////////////////////////////////////////////////////////////////
  181. BOOL CBasePage::OnInitDialog(void)
  182. {
  183. BOOL bFocusNotSetYet;
  184. bFocusNotSetYet = CPropertyPage::OnInitDialog();
  185. // Display an icon for the object.
  186. if (Psht()->Hicon() != NULL)
  187. m_staticIcon.SetIcon(Psht()->Hicon());
  188. return bFocusNotSetYet; // return TRUE unless you set the focus to a control
  189. // EXCEPTION: OCX Property Pages should return FALSE
  190. } //*** CBasePage::OnInitDialog()
  191. /////////////////////////////////////////////////////////////////////////////
  192. //++
  193. //
  194. // CBasePage::OnSetActive
  195. //
  196. // Routine Description:
  197. // Handler for when the PSM_SETACTIVE message.
  198. //
  199. // Arguments:
  200. // None.
  201. //
  202. // Return Value:
  203. // TRUE Page successfully initialized.
  204. // FALSE Page not initialized.
  205. //
  206. //--
  207. /////////////////////////////////////////////////////////////////////////////
  208. BOOL CBasePage::OnSetActive(void)
  209. {
  210. return CPropertyPage::OnSetActive();
  211. } //*** CBasePage::OnSetActive()
  212. /////////////////////////////////////////////////////////////////////////////
  213. //++
  214. //
  215. // CBasePage::OnKillActive
  216. //
  217. // Routine Description:
  218. // Handler for the PSM_KILLACTIVE message.
  219. //
  220. // Arguments:
  221. // None.
  222. //
  223. // Return Value:
  224. // TRUE Page focus successfully killed.
  225. // FALSE Error killing page focus.
  226. //
  227. //--
  228. /////////////////////////////////////////////////////////////////////////////
  229. BOOL CBasePage::OnKillActive(void)
  230. {
  231. return CPropertyPage::OnKillActive();
  232. } //*** CBasePage::OnKillActive()
  233. /////////////////////////////////////////////////////////////////////////////
  234. //++
  235. //
  236. // CBasePage::OnApply
  237. //
  238. // Routine Description:
  239. // Handler for the PSM_APPLY message.
  240. //
  241. // Arguments:
  242. // None.
  243. //
  244. // Return Value:
  245. // TRUE Page successfully applied.
  246. // FALSE Error applying page.
  247. //
  248. //--
  249. /////////////////////////////////////////////////////////////////////////////
  250. BOOL CBasePage::OnApply(void)
  251. {
  252. ASSERT(!BReadOnly());
  253. return CPropertyPage::OnApply();
  254. } //*** CBasePage::OnApply()
  255. /////////////////////////////////////////////////////////////////////////////
  256. //++
  257. //
  258. // CBasePage::OnChangeCtrl
  259. //
  260. // Routine Description:
  261. // Handler for the messages sent when a control is changed. This
  262. // method can be specified in a message map if all that needs to be
  263. // done is enable the Apply button.
  264. //
  265. // Arguments:
  266. // None.
  267. //
  268. // Return Value:
  269. // None.
  270. //
  271. //--
  272. /////////////////////////////////////////////////////////////////////////////
  273. void CBasePage::OnChangeCtrl(void)
  274. {
  275. SetModified(TRUE);
  276. } //*** CBasePage::OnChangeCtrl()
  277. /////////////////////////////////////////////////////////////////////////////
  278. //++
  279. //
  280. // CBasePage::SetObjectTitle
  281. //
  282. // Routine Description:
  283. // Set the title control on the page.
  284. //
  285. // Arguments:
  286. // rstrTitle [IN] Title string.
  287. //
  288. // Return Value:
  289. // None.
  290. //
  291. //--
  292. /////////////////////////////////////////////////////////////////////////////
  293. void CBasePage::SetObjectTitle(IN const CString & rstrTitle)
  294. {
  295. Psht()->SetObjectTitle(rstrTitle);
  296. if (m_hWnd != NULL)
  297. m_staticTitle.SetWindowText(rstrTitle);
  298. } //*** CBasePage::SetObjectTitle()
  299. /////////////////////////////////////////////////////////////////////////////
  300. //++
  301. //
  302. // CBasePage::OnContextMenu
  303. //
  304. // Routine Description:
  305. // Handler for the WM_CONTEXTMENU message.
  306. //
  307. // Arguments:
  308. // pWnd Window in which user clicked the right mouse button.
  309. // point Position of the cursor, in screen coordinates.
  310. //
  311. // Return Value:
  312. // TRUE Help processed.
  313. // FALSE Help not processed.
  314. //
  315. //--
  316. /////////////////////////////////////////////////////////////////////////////
  317. void CBasePage::OnContextMenu(CWnd * pWnd, CPoint point)
  318. {
  319. m_dlghelp.OnContextMenu(pWnd, point);
  320. } //*** CBasePage::OnContextMenu()
  321. /////////////////////////////////////////////////////////////////////////////
  322. //++
  323. //
  324. // CBasePage::OnHelpInfo
  325. //
  326. // Routine Description:
  327. // Handler for the WM_HELPINFO message.
  328. //
  329. // Arguments:
  330. // pHelpInfo Structure containing info about displaying help.
  331. //
  332. // Return Value:
  333. // TRUE Help processed.
  334. // FALSE Help not processed.
  335. //
  336. //--
  337. /////////////////////////////////////////////////////////////////////////////
  338. BOOL CBasePage::OnHelpInfo(HELPINFO * pHelpInfo)
  339. {
  340. BOOL bProcessed;
  341. bProcessed = m_dlghelp.OnHelpInfo(pHelpInfo);
  342. if (!bProcessed)
  343. bProcessed = CPropertyPage::OnHelpInfo(pHelpInfo);
  344. return bProcessed;
  345. } //*** CBasePage::OnHelpInfo()
  346. /////////////////////////////////////////////////////////////////////////////
  347. //++
  348. //
  349. // CBasePage::OnCommandHelp
  350. //
  351. // Routine Description:
  352. // Handler for the WM_COMMANDHELP message.
  353. //
  354. // Arguments:
  355. // wParam [IN] WPARAM.
  356. // lParam [IN] LPARAM.
  357. //
  358. // Return Value:
  359. // TRUE Help processed.
  360. // FALSE Help not processed.
  361. //
  362. //--
  363. /////////////////////////////////////////////////////////////////////////////
  364. LRESULT CBasePage::OnCommandHelp(WPARAM wParam, LPARAM lParam)
  365. {
  366. LRESULT lProcessed;
  367. lProcessed = m_dlghelp.OnCommandHelp(wParam, lParam);
  368. if (!lProcessed)
  369. lProcessed = CPropertyPage::OnCommandHelp(wParam, lParam);
  370. return lProcessed;
  371. } //*** CBasePage::OnCommandHelp()