Source code of Windows XP (NT5)
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.

773 lines
19 KiB

  1. /////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 1996-1999 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // AtlExtDll.h
  7. //
  8. // Implementation File:
  9. // AtlExtDll.cpp
  10. //
  11. // Description:
  12. // Definition of the Cluster Administrator extension classes.
  13. //
  14. // Author:
  15. // David Potter (davidp) May 31, 1996
  16. //
  17. // Revision History:
  18. //
  19. // Notes:
  20. //
  21. /////////////////////////////////////////////////////////////////////////////
  22. #ifndef __ATLEXTDLL_H_
  23. #define __ATLEXTDLL_H_
  24. // Required because of class names longer than 16 characters in lists.
  25. #pragma warning( disable : 4786 ) // identifier was truncated to '255' characters ni the browser information
  26. /////////////////////////////////////////////////////////////////////////////
  27. // Include Files
  28. /////////////////////////////////////////////////////////////////////////////
  29. #ifndef __cluadmex_h__
  30. #include <CluAdmEx.h> // for extension DLL definitions
  31. #endif
  32. #ifndef __cluadmexhostsvr_h__
  33. #include "CluAdmExHostSvr.h" // for CLSIDs
  34. #endif
  35. #ifndef __CLUADMEXDATAOBJ_H_
  36. #include "CluAdmExDataObj.h" // for CCluAdmExDataObject
  37. #endif
  38. //#ifndef _TRACETAG_H_
  39. //#include "TraceTag.h" // for CTraceTag, Trace
  40. //#endif
  41. #ifndef __ATLEXTMENU_H_
  42. #include "AtlExtMenu.h" // for CCluAdmExMenuItemList
  43. #endif
  44. #ifndef __ATLBASEPROPPAGE_H_
  45. #include "AtlBasePropPage.h" // for CBasePropertyPageImpl
  46. #endif
  47. #ifndef __ATLBASEWIZPAGE_H_
  48. #include "AtlBaseWizPage.h" // for CBaseWizardPageImpl
  49. #endif
  50. /////////////////////////////////////////////////////////////////////////////
  51. // Forward Class Declarations
  52. /////////////////////////////////////////////////////////////////////////////
  53. class CCluAdmExtensions;
  54. class CCluAdmExDll;
  55. class CCluAdmExPropPage;
  56. class CCluAdmExWizPage;
  57. class CCluAdmExWiz97Page;
  58. /////////////////////////////////////////////////////////////////////////////
  59. // External Class Declarations
  60. /////////////////////////////////////////////////////////////////////////////
  61. class CClusterObject;
  62. class CBaseSheetWindow;
  63. class CBasePropertySheetWindow;
  64. class CWizardWindow;
  65. /////////////////////////////////////////////////////////////////////////////
  66. // Type Definitions
  67. /////////////////////////////////////////////////////////////////////////////
  68. #define CAEXT_MENU_FIRST_ID 35000
  69. typedef CComObject< CCluAdmExDll > CComCluAdmExDll;
  70. typedef std::list< CComCluAdmExDll * > CCluAdmExDllList;
  71. typedef std::list< CString > CStringList;
  72. /////////////////////////////////////////////////////////////////////////////
  73. // Global Variable Definitions
  74. /////////////////////////////////////////////////////////////////////////////
  75. //#if DBG
  76. //extern CTraceTag g_tagExtDll;
  77. //extern CTraceTag g_tagExtDllRef;
  78. //#endif // DBG
  79. /////////////////////////////////////////////////////////////////////////////
  80. //++
  81. //
  82. // class CCluAdmExtensions
  83. //
  84. // Description:
  85. // Encapsulates access to a list of extension DLLs.
  86. //
  87. // Inheritance:
  88. // CCluAdmExtensions
  89. //
  90. //--
  91. /////////////////////////////////////////////////////////////////////////////
  92. class CCluAdmExtensions
  93. {
  94. friend class CCluAdmExDll;
  95. public:
  96. //
  97. // Construction.
  98. //
  99. // Default constructor
  100. CCluAdmExtensions( void )
  101. : m_pco( NULL )
  102. , m_hfont( NULL )
  103. , m_hicon( NULL )
  104. , m_pdoData( NULL )
  105. , m_plextdll( NULL )
  106. , m_psht( NULL )
  107. , m_pmenu( NULL )
  108. , m_plMenuItems( NULL )
  109. , m_nFirstCommandID( (ULONG) -1 )
  110. , m_nNextCommandID( (ULONG) -1 )
  111. , m_nFirstMenuID( (ULONG) -1 )
  112. , m_nNextMenuID( (ULONG) -1 )
  113. {
  114. } //*** CCluAdmExtensions()
  115. // Destructor
  116. virtual ~CCluAdmExtensions( void )
  117. {
  118. UnloadExtensions();
  119. } //*** ~CCluAdmExtensions()
  120. protected:
  121. // Initialize the list
  122. void Init(
  123. IN const CStringList & rlstrExtensions,
  124. IN OUT CClusterObject * pco,
  125. IN HFONT hfont,
  126. IN HICON hicon
  127. );
  128. // Unload all the extensions
  129. void UnloadExtensions( void );
  130. // Attributes
  131. private:
  132. const CStringList * m_plstrExtensions; // List of extensions.
  133. CClusterObject * m_pco; // Cluster item being administered.
  134. HFONT m_hfont; // Font for dialog text.
  135. HICON m_hicon; // Icon for upper left corner.
  136. protected:
  137. //
  138. // Accessor methods.
  139. //
  140. const CStringList * PlstrExtensions( void ) const { return m_plstrExtensions; }
  141. CClusterObject * Pco( void ) const { return m_pco; }
  142. HFONT Hfont( void ) const { return m_hfont; }
  143. HICON Hicon( void ) const { return m_hicon; }
  144. // Operations
  145. public:
  146. //
  147. // IWEExtendPropertySheet methods.
  148. //
  149. // Create extension property sheet pages
  150. void CreatePropertySheetPages(
  151. IN OUT CBasePropertySheetWindow * psht,
  152. IN const CStringList & rlstrExtensions,
  153. IN OUT CClusterObject * pco,
  154. IN HFONT hfont,
  155. IN HICON hicon
  156. );
  157. public:
  158. //
  159. // IWEExtendWizard methods.
  160. //
  161. // Create extension wizard pages
  162. void CreateWizardPages(
  163. IN OUT CWizardWindow * psht,
  164. IN const CStringList & rlstrExtensions,
  165. IN OUT CClusterObject * pco,
  166. IN HFONT hfont,
  167. IN HICON hicon
  168. );
  169. public:
  170. //
  171. // IWEExtendWizard97 methods.
  172. //
  173. // Create extension Wizard97 wizard pages
  174. void CreateWizard97Pages(
  175. IN OUT CWizardWindow * psht,
  176. IN const CStringList & rlstrExtensions,
  177. IN OUT CClusterObject * pco,
  178. IN HFONT hfont,
  179. IN HICON hicon
  180. );
  181. public:
  182. //
  183. // IWEExtendContextMenu methods.
  184. //
  185. // Add extension context menu items
  186. void AddContextMenuItems(
  187. IN OUT CMenu * pmenu,
  188. IN const CStringList & rlstrExtensions,
  189. IN OUT CClusterObject * pco
  190. );
  191. // Execute an extension context menu item
  192. BOOL BExecuteContextMenuItem( IN ULONG nCommandID );
  193. // Get a command string to display on the status bar
  194. BOOL BGetCommandString( IN ULONG nCommandID, OUT CString & rstrMessage );
  195. // Set the GetResNetName function pointer
  196. void SetPfGetResNetName( PFGETRESOURCENETWORKNAME pfGetResNetName, PVOID pvContext )
  197. {
  198. if ( Pdo() != NULL )
  199. {
  200. Pdo()->SetPfGetResNetName( pfGetResNetName, pvContext );
  201. } // if: data object specified
  202. } //*** SetPfGetResNetName()
  203. // Implementation
  204. private:
  205. CComObject< CCluAdmExDataObject > * m_pdoData; // Data object for exchanging data.
  206. CCluAdmExDllList * m_plextdll; // List of extension DLLs.
  207. CBaseSheetWindow * m_psht; // Property sheet for IWEExtendPropertySheet.
  208. CMenu * m_pmenu; // Menu for IWEExtendContextMenu.
  209. CCluAdmExMenuItemList * m_plMenuItems;
  210. ULONG m_nFirstCommandID;
  211. ULONG m_nNextCommandID;
  212. ULONG m_nFirstMenuID;
  213. ULONG m_nNextMenuID;
  214. protected:
  215. CComObject< CCluAdmExDataObject > * Pdo( void ) { return m_pdoData; }
  216. CCluAdmExDllList * Plextdll( void ) const { return m_plextdll; }
  217. CBaseSheetWindow * Psht( void ) const { return m_psht; }
  218. CMenu * Pmenu( void ) const { return m_pmenu; }
  219. CCluAdmExMenuItemList * PlMenuItems( void ) const { return m_plMenuItems; }
  220. CCluAdmExMenuItem * PemiFromCommandID( ULONG nCommandID ) const;
  221. #if DBG
  222. CCluAdmExMenuItem * PemiFromExtCommandID( ULONG nExtCommandID ) const;
  223. #endif // DBG
  224. ULONG NFirstCommandID( void ) const { return m_nFirstCommandID; }
  225. ULONG NNextCommandID( void ) const { return m_nNextCommandID; }
  226. ULONG NFirstMenuID( void ) const { return m_nFirstMenuID; }
  227. ULONG NNextMenuID( void ) const { return m_nNextMenuID; }
  228. // Get the wizard page pointer from an HPROPSHEETPAGE
  229. CWizardPageWindow * PwpPageFromHpage( IN HPROPSHEETPAGE hpage );
  230. public:
  231. // void OnUpdateCommand( CCmdUI * pCmdUI );
  232. // BOOL OnCmdMsg( UINT nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo );
  233. }; //*** class CCluAdmExtensions
  234. /////////////////////////////////////////////////////////////////////////////
  235. //++
  236. //
  237. // class CCluAdmExDll
  238. //
  239. // Description:
  240. // Encapsulates access to an extension DLL.
  241. //
  242. // Inheritance:
  243. // CCluAdmExDll
  244. // CComObjectRootEx<>, CComCoClass<>, <interface classes>
  245. //
  246. //--
  247. /////////////////////////////////////////////////////////////////////////////
  248. class ATL_NO_VTABLE CCluAdmExDll :
  249. public CComObjectRootEx< CComSingleThreadModel >,
  250. public CComCoClass< CCluAdmExDll, &CLSID_CoCluAdmExHostSvr >,
  251. public ISupportErrorInfo,
  252. public IWCPropertySheetCallback,
  253. public IWCWizardCallback,
  254. public IWCWizard97Callback,
  255. public IWCContextMenuCallback
  256. {
  257. friend class CCluAdmExtensions;
  258. public:
  259. //
  260. // Object construction and destruction.
  261. //
  262. // Default constructor
  263. CCluAdmExDll( void )
  264. : m_piExtendPropSheet( NULL )
  265. , m_piExtendWizard( NULL )
  266. , m_piExtendWizard97( NULL )
  267. , m_piExtendContextMenu( NULL )
  268. , m_piInvokeCommand( NULL )
  269. , m_pext( NULL )
  270. {
  271. } //*** CCluAdmExDll()
  272. // Destructor
  273. virtual ~CCluAdmExDll( void )
  274. {
  275. UnloadExtension();
  276. } //*** ~CCluAdmExDll()
  277. //
  278. // Map interfaces to this class.
  279. //
  280. BEGIN_COM_MAP( CCluAdmExDll )
  281. COM_INTERFACE_ENTRY( IWCPropertySheetCallback )
  282. COM_INTERFACE_ENTRY( IWCWizardCallback )
  283. COM_INTERFACE_ENTRY( IWCWizard97Callback )
  284. COM_INTERFACE_ENTRY( IWCContextMenuCallback )
  285. COM_INTERFACE_ENTRY( ISupportErrorInfo )
  286. END_COM_MAP()
  287. DECLARE_NO_REGISTRY()
  288. DECLARE_NOT_AGGREGATABLE( CCluAdmExDll )
  289. // Attributes
  290. private:
  291. CString m_strCLSID; // Name of extension DLL.
  292. protected:
  293. const CString & StrCLSID( void ) const { return m_strCLSID; }
  294. CClusterObject * Pco( void ) const { return Pext()->Pco(); }
  295. // Operations
  296. public:
  297. void Init(
  298. IN const CString & rstrExtension,
  299. IN OUT CCluAdmExtensions * pext
  300. );
  301. IUnknown * LoadInterface( IN const REFIID riid );
  302. void UnloadExtension( void );
  303. public:
  304. //
  305. // IWEExtendPropertySheet methods.
  306. //
  307. // Create extension property sheet pages
  308. void CreatePropertySheetPages( void );
  309. public:
  310. //
  311. // IWEExtendWizard methods.
  312. //
  313. // Create extension wizard pages
  314. void CreateWizardPages( void );
  315. public:
  316. //
  317. // IWEExtendWizard97 methods.
  318. //
  319. // Create extension wizard pages
  320. void CreateWizard97Pages( void );
  321. public:
  322. //
  323. // IWEExtendContextMenu methods.
  324. //
  325. // Add extension context menu items
  326. void AddContextMenuItems( void );
  327. public:
  328. //
  329. // ISupportsErrorInfo methods.
  330. //
  331. STDMETHOD( InterfaceSupportsErrorInfo )( REFIID riid );
  332. public:
  333. //
  334. // IWCPropertySheetCallback methods.
  335. //
  336. // Callback to add extension property sheet pages
  337. STDMETHOD( AddPropertySheetPage )(
  338. IN LONG * hpage // really should be HPROPSHEETPAGE
  339. );
  340. public:
  341. //
  342. // IWCWizardCallback methods.
  343. //
  344. // Callback to add extension wizard pages
  345. STDMETHOD( AddWizardPage )(
  346. IN LONG * hpage // really should be HPROPSHEETPAGE
  347. );
  348. public:
  349. //
  350. // IWCWizard97Callback methods.
  351. //
  352. // Callback to add extension wizard 97 pages
  353. STDMETHOD( AddWizard97Page )(
  354. IN LONG * hpage // really should be HPROPSHEETPAGE
  355. );
  356. public:
  357. //
  358. // IWCWizardCallback and IWCWizard97Callback methods.
  359. //
  360. // Callback to enable the next button
  361. STDMETHOD( EnableNext )(
  362. IN LONG * hpage,
  363. IN BOOL bEnable
  364. );
  365. public:
  366. //
  367. // IWCContextMenuCallback methods.
  368. //
  369. // Callback to add extension context menu items
  370. STDMETHOD( AddExtensionMenuItem )(
  371. IN BSTR lpszName,
  372. IN BSTR lpszStatusBarText,
  373. IN ULONG nCommandID,
  374. IN ULONG nSubmenuCommandID,
  375. IN ULONG uFlags
  376. );
  377. // Implementation
  378. private:
  379. CCluAdmExtensions * m_pext;
  380. CLSID m_clsid;
  381. IWEExtendPropertySheet * m_piExtendPropSheet; // Pointer to an IWEExtendPropertySheet interface.
  382. IWEExtendWizard * m_piExtendWizard; // Pointer to an IWEExtendWizard interface.
  383. IWEExtendWizard97 * m_piExtendWizard97; // Pointer to an IWEExtendWizard97 interface.
  384. IWEExtendContextMenu * m_piExtendContextMenu; // Pointer to an IWEExtendContextMenu interface.
  385. IWEInvokeCommand * m_piInvokeCommand; // Pointer to an IWEInvokeCommand interface.
  386. protected:
  387. CCluAdmExtensions * Pext( void ) const { ATLASSERT( m_pext != NULL ); return m_pext; }
  388. const CLSID & Rclsid( void ) const { return m_clsid; }
  389. IWEExtendPropertySheet * PiExtendPropSheet( void ) const { return m_piExtendPropSheet; }
  390. IWEExtendWizard * PiExtendWizard( void ) const { return m_piExtendWizard; }
  391. IWEExtendWizard97 * PiExtendWizard97( void ) const { return m_piExtendWizard97; }
  392. IWEExtendContextMenu * PiExtendContextMenu( void ) const { return m_piExtendContextMenu; }
  393. IWEInvokeCommand * PiInvokeCommand( void ) const { return m_piInvokeCommand; }
  394. CComObject< CCluAdmExDataObject > * Pdo( void ) const { return Pext()->Pdo(); }
  395. CBaseSheetWindow * Psht( void ) const { return Pext()->Psht(); }
  396. CMenu * Pmenu( void ) const { return Pext()->Pmenu(); }
  397. CCluAdmExMenuItemList * PlMenuItems( void ) const { return Pext()->PlMenuItems(); }
  398. ULONG NFirstCommandID( void ) const { return Pext()->NFirstCommandID(); }
  399. ULONG NNextCommandID( void ) const { return Pext()->NNextCommandID(); }
  400. ULONG NFirstMenuID( void ) const { return Pext()->NFirstMenuID(); }
  401. ULONG NNextMenuID( void ) const { return Pext()->NNextMenuID(); }
  402. void ReleaseInterface(
  403. IN OUT IUnknown ** ppi
  404. #if DBG
  405. , IN LPCTSTR szClassName
  406. #endif
  407. )
  408. {
  409. ATLASSERT( ppi != NULL );
  410. if ( *ppi != NULL )
  411. {
  412. #if DBG
  413. ULONG ulNewRefCount;
  414. // Trace( g_tagExtDllRef, _T("Releasing %s"), szClassName );
  415. ulNewRefCount =
  416. #endif // DBG
  417. (*ppi)->Release();
  418. *ppi = NULL;
  419. #if DBG
  420. // Trace( g_tagExtDllRef, _T(" Reference count = %d"), ulNewRefCount );
  421. // Trace( g_tagExtDllRef, _T("ReleaseInterface() - %s = %08.8x"), szClassName, *ppi );
  422. #endif // DBG
  423. } // if: interface specified
  424. } //*** ReleaseInterface( IUnknown )
  425. void ReleaseInterface( IN OUT IWEExtendPropertySheet ** ppi )
  426. {
  427. ReleaseInterface(
  428. (IUnknown **) ppi
  429. #if DBG
  430. , _T("IWEExtendPropertySheet")
  431. #endif // DBG
  432. );
  433. } //*** ReleaseInterface( IWEExtendPropertySheet )
  434. void ReleaseInterface( IN OUT IWEExtendWizard ** ppi )
  435. {
  436. ReleaseInterface(
  437. (IUnknown **) ppi
  438. #if DBG
  439. , _T("IWEExtendWizard")
  440. #endif // DBG
  441. );
  442. } //*** ReleaseInterface( IWEExtendWizard )
  443. void ReleaseInterface( IN OUT IWEExtendWizard97 ** ppi )
  444. {
  445. ReleaseInterface(
  446. (IUnknown **) ppi
  447. #if DBG
  448. , _T("IWEExtendWizard97")
  449. #endif // DBG
  450. );
  451. } //*** ReleaseInterface( IWEExtendWizard97 )
  452. void ReleaseInterface( IN OUT IWEExtendContextMenu ** ppi )
  453. {
  454. ReleaseInterface(
  455. (IUnknown **) ppi
  456. #if DBG
  457. , _T("IWEExtendContextMenu")
  458. #endif // DBG
  459. );
  460. } //*** ReleaseInterface( IWEExtendContextMenu )
  461. void ReleaseInterface( IN OUT IWEInvokeCommand ** ppi )
  462. {
  463. ReleaseInterface(
  464. (IUnknown **) ppi
  465. #if DBG
  466. , _T("IWEInvokeCommand")
  467. #endif // DBG
  468. );
  469. } //*** ReleaseInterface( IWEInvokeCommand )
  470. }; //*** class CCluAdmExDll
  471. /////////////////////////////////////////////////////////////////////////////
  472. //++
  473. //
  474. // class CCluAdmExPropPage
  475. //
  476. // Description:
  477. // Encapsulates an extension property page.
  478. //
  479. // Inheritance:
  480. // CCluAdmExPropPage
  481. // CExtensionPropertyPageImpl< CCluAdmExPropPage >
  482. // CBasePropertyPageImpl< CCluAdmExPropPage, CExtensionPropertyPageWindow >
  483. // CBasePageImpl< CCluAdmExPropPage, CExtensionPropertyPageWindow >
  484. // CPropertyPageImpl< CCluAdmExPropPage, CExtensionPropertyPageWindow >
  485. // CExtensionPropertyPageWindow
  486. // CDynamicPropertyPageWindow
  487. // CBasePropertyPageWindow
  488. // CBasePageWindow
  489. // CPropertyPageWindow
  490. //
  491. //--
  492. /////////////////////////////////////////////////////////////////////////////
  493. class CCluAdmExPropPage : public CExtensionPropertyPageImpl< CCluAdmExPropPage >
  494. {
  495. public:
  496. //
  497. // Construction.
  498. //
  499. // Standard constructor
  500. CCluAdmExPropPage(
  501. HPROPSHEETPAGE hpage
  502. )
  503. {
  504. ATLASSERT( hpage != NULL );
  505. m_hpage = hpage;
  506. } //*** CCluAdmExPropPage()
  507. enum { IDD = 0 };
  508. DECLARE_CLASS_NAME()
  509. // Return the help ID map
  510. static const DWORD * PidHelpMap( void )
  511. {
  512. static const DWORD s_aHelpIDs[] = { 0, 0 };
  513. return s_aHelpIDs;
  514. } //*** PidHelpMap()
  515. // Create the page
  516. DWORD ScCreatePage( void )
  517. {
  518. //
  519. // This method is required by CDynamicPropertyPageWindow.
  520. //
  521. return ERROR_SUCCESS;
  522. } //*** ScCreatePage()
  523. }; //*** class CCluAdmExPropPage
  524. /////////////////////////////////////////////////////////////////////////////
  525. //++
  526. //
  527. // class CCluAdmExWizPage
  528. //
  529. // Description:
  530. // Encapsulates an extension wizard page.
  531. //
  532. // Inheritance:
  533. // CCluAdmExWizPage
  534. // CExtensionWizardPageImpl< CCluAdmExWizPage >
  535. // CWizardPageImpl< CCluAdmExWizPage, CExtensionWizardWindow >
  536. // CBasePageImpl< CCluAdmExWizPage, CExtensionWizardWindow >
  537. // CPropertyPageImpl< CCluAdmExWizPage, CExtensionWizardWindow >
  538. // CExtensionWizardPageWindow
  539. // CDynamicWizardPageWindow
  540. // CWizardPageWindow
  541. // CBasePageWindow
  542. // CPropertyPageWindow
  543. //
  544. //--
  545. /////////////////////////////////////////////////////////////////////////////
  546. class CCluAdmExWizPage : public CExtensionWizardPageImpl< CCluAdmExWizPage >
  547. {
  548. public:
  549. //
  550. // Construction.
  551. //
  552. // Standard constructor
  553. CCluAdmExWizPage(
  554. HPROPSHEETPAGE hpage
  555. )
  556. {
  557. ATLASSERT( hpage != NULL );
  558. m_hpage = hpage;
  559. } //*** CCluAdmExWizPage()
  560. WIZARDPAGE_HEADERTITLEID( 0 )
  561. WIZARDPAGE_HEADERSUBTITLEID( 0 )
  562. enum { IDD = 0 };
  563. DECLARE_CLASS_NAME()
  564. // Return the help ID map
  565. static const DWORD * PidHelpMap( void )
  566. {
  567. static const DWORD s_aHelpIDs[] = { 0, 0 };
  568. return s_aHelpIDs;
  569. } //*** PidHelpMap()
  570. // Create the page
  571. DWORD ScCreatePage( void )
  572. {
  573. //
  574. // This method is required by CDynamicWizardPageWindow.
  575. //
  576. return ERROR_SUCCESS;
  577. } //*** ScCreatePage()
  578. }; //*** class CCluAdmExWizPage
  579. /////////////////////////////////////////////////////////////////////////////
  580. //++
  581. //
  582. // class CCluAdmExWiz97Page
  583. //
  584. // Description:
  585. // Encapsulates an extension Wizard 97 page.
  586. //
  587. // Inheritance:
  588. // CCluAdmExWiz97Page
  589. // CExtensionWizard97PageImpl< CCluAdmExWiz97Page >
  590. // CWizardPageImpl< CCluAdmExWiz97Page, CExtensionWizard97Window >
  591. // CBasePageImpl< CCluAdmExWiz97Page, CExtensionWizard97Window >
  592. // CPropertyPageImpl< CCluAdmExWiz97Page, CExtensionWizard97Window >
  593. // CExtensionWizard97PageWindow
  594. // CExtensionWizardPageWindow
  595. // CDynamicWizardPageWindow
  596. // CWizardPageWindow
  597. // CBasePageWindow
  598. // CPropertyPageWindow
  599. //
  600. //--
  601. /////////////////////////////////////////////////////////////////////////////
  602. class CCluAdmExWiz97Page : public CExtensionWizard97PageImpl< CCluAdmExWiz97Page >
  603. {
  604. public:
  605. //
  606. // Construction.
  607. //
  608. // Standard constructor
  609. CCluAdmExWiz97Page(
  610. HPROPSHEETPAGE hpage
  611. )
  612. {
  613. ATLASSERT( hpage != NULL );
  614. m_hpage = hpage;
  615. } //*** CCluAdmExWiz97Page()
  616. WIZARDPAGE_HEADERTITLEID( 0 )
  617. WIZARDPAGE_HEADERSUBTITLEID( 0 )
  618. enum { IDD = 0 };
  619. DECLARE_CLASS_NAME()
  620. // Return the help ID map
  621. static const DWORD * PidHelpMap( void )
  622. {
  623. static const DWORD s_aHelpIDs[] = { 0, 0 };
  624. return s_aHelpIDs;
  625. } //*** PidHelpMap()
  626. // Create the page
  627. DWORD ScCreatePage( void )
  628. {
  629. //
  630. // This method is required by CDynamicWizardPageWindow.
  631. //
  632. return ERROR_SUCCESS;
  633. } //*** ScCreatePage()
  634. }; //*** class CCluAdmExWiz97Page
  635. /////////////////////////////////////////////////////////////////////////////
  636. // Global Variables
  637. /////////////////////////////////////////////////////////////////////////////
  638. DEFINE_CLASS_NAME( CCluAdmExPropPage )
  639. DEFINE_CLASS_NAME( CCluAdmExWizPage )
  640. DEFINE_CLASS_NAME( CCluAdmExWiz97Page )
  641. /////////////////////////////////////////////////////////////////////////////
  642. #endif // __ATLEXTDLL_H_