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.

750 lines
21 KiB

  1. /**********************************************************************/
  2. /** Microsoft Windows/NT **/
  3. /** Copyright(c) Microsoft Corp., 1991 **/
  4. /**********************************************************************/
  5. /*
  6. PermDlg.hxx
  7. Permission Dialog class definitions
  8. The hierarchy of dialogs looks like:
  9. PERM_BASE_DLG
  10. resource name/type placement
  11. MAIN_PERM_BASE_DLG
  12. get/write permissions
  13. LM_AUDITTING_DLG
  14. MULTI_SUBJ_PERM_BASE_DLG
  15. MULTI_SUBJ_ACCESS_PERM_BASE_DLG
  16. OBJECT_ACCESS_PERMISSION_DLG
  17. NT_OBJECT_ACCESS_PERMISSION_DLG
  18. MULTI_SUBJ_CONT_ACCESS_PERM_BASE
  19. CONT_ACCESS_PERM_DLG
  20. NT_CONT_NO_OBJ_ACCESS_PERM_DLG
  21. NT_CONT_ACCESS_PERM_DLG
  22. MULTI_SUBJ_AUDIT_BASE
  23. OBJECT_AUDIT_DLG
  24. CONT_AUDIT_DLG
  25. SPECIAL_DIALOG
  26. NEW_OBJ_SPECIAL_DIALOG
  27. FILE HISTORY:
  28. Johnl 06-Aug-1991 Created
  29. beng 17-Oct-1991 Explicitly include sltplus
  30. Johnl 11-Jan-1992 Removed SLT_PLUS
  31. */
  32. #ifndef _PERMDLG_HXX_
  33. #define _PERMDLG_HXX_
  34. /* Control IDs used in the dialogs
  35. */
  36. #define CID_PERM_BASE 256
  37. #define SLT_RESOURCE_TYPE (CID_PERM_BASE+1)
  38. #define SLE_RESOURCE_NAME (CID_PERM_BASE+2)
  39. #define BUTTON_ADD (CID_PERM_BASE+3)
  40. #define BUTTON_REMOVE (CID_PERM_BASE+4)
  41. #define BUTTON_SPECIAL (CID_PERM_BASE+5)
  42. #define CB_PERM_NAME (CID_PERM_BASE+6)
  43. #define LB_SUBJECT_PERMISSIONS (CID_PERM_BASE+7)
  44. #define CHECK_APPLY_TO_CONT (CID_PERM_BASE+8)
  45. #define SLT_TREE_APPLY_HELP_TEXT (CID_PERM_BASE+9)
  46. #define SLE_OWNER (CID_PERM_BASE+10)
  47. #define SLT_PERM_NAME_TITLE (CID_PERM_BASE+11)
  48. #define CHECK_APPLY_TO_OBJ (CID_PERM_BASE+12)
  49. #define CID_PERM_LAST (CID_PERM_BASE+100)
  50. #define RESID_PERM_BASE (10000)
  51. #define IDD_SED_OBJECT_PERM 10002
  52. #define IDD_SED_NT_OBJECT_PERM 10003
  53. #define IDD_SED_LM_CONT_PERM 10004
  54. #define IDD_SED_NT_CONT_PERM 10005
  55. #define IDD_SPECIAL_PERM_DLG 10006
  56. #define IDD_SED_LM_SPECIAL_PERM_DLG 10007
  57. #define IDD_SED_NEW_OBJ_SPECIAL_PERM_DLG 10008
  58. #define IDD_SED_LM_AUDITING_DLG 10009
  59. #define IDD_SED_NT_CONT_AUDITING_DLG 10010
  60. #define IDD_SED_LM_ADD_DLG 10011
  61. #define IDD_SED_LM_ADD_PERM_DLG 10012
  62. #define IDD_SED_TAKE_OWNER 10013
  63. #define IDD_SED_NT_CONT_NEWOBJ_AUDITING_DLG 10014
  64. #define IDD_SED_NT_CONT_NEWOBJ_PERM_DLG 10015
  65. #ifndef RC_INVOKED
  66. #include "subjlb.hxx"
  67. /*************************************************************************
  68. NAME: PERM_BASE_DLG
  69. SYNOPSIS: This class is the base for the permission and auditting
  70. dialogs that will be used for permission editting.
  71. The Resource Type and Resource Name are positioned
  72. correctly based on the size of the field.
  73. INTERFACE: QueryResType - Returns the resource type ("File", "Directory")
  74. QueryResName - Returns the name ("C:\foobar")
  75. PARENT: DIALOG_WINDOW
  76. USES: SLE, SLE
  77. CAVEATS:
  78. NOTES: The OK button is here so it can get the default focus
  79. HISTORY:
  80. Johnl 06-Aug-1991 Created
  81. **************************************************************************/
  82. class PERM_BASE_DLG : public DIALOG_WINDOW
  83. {
  84. private:
  85. ULONG * _ahcDialogHelp ;
  86. const TCHAR * _pszHelpFileName ;
  87. NLS_STR _nlsResType ;
  88. NLS_STR _nlsResName ;
  89. protected:
  90. SLT _sltResourceType ;
  91. SLE _sleResourceName ;
  92. PUSH_BUTTON _buttonOK ;
  93. PUSH_BUTTON _buttonCancel ;
  94. PERM_BASE_DLG( const TCHAR * pszDialogName,
  95. HWND hwndParent,
  96. const TCHAR * pszDialogTitle,
  97. const TCHAR * pszResourceType,
  98. const TCHAR * pszResourceName,
  99. const TCHAR * pszHelpFileName,
  100. ULONG * ahcMainDialog ) ;
  101. virtual const TCHAR * QueryHelpFile( ULONG ulHelpContext ) ;
  102. virtual ULONG QueryHelpContext( void ) ;
  103. public:
  104. virtual ~PERM_BASE_DLG() ;
  105. APIERR QueryResType( NLS_STR * pnlsResType ) const
  106. { return pnlsResType->CopyFrom( _nlsResType ) ; }
  107. APIERR QueryResName( NLS_STR * pnlsResName ) const
  108. { return pnlsResName->CopyFrom( _nlsResName ) ; }
  109. const TCHAR * QueryResType( void ) const
  110. { return _nlsResType.QueryPch() ; }
  111. const TCHAR * QueryResName( void ) const
  112. { return _nlsResName.QueryPch() ; }
  113. const TCHAR * QueryHelpFileName( void ) const
  114. { return _pszHelpFileName ; }
  115. ULONG * QueryHelpArray( void )
  116. { return _ahcDialogHelp ; }
  117. }; // class PERM_BASE_DLG
  118. /*************************************************************************
  119. NAME: MAIN_PERM_BASE_DLG
  120. SYNOPSIS: This dialog is the base for the main windows. It will read
  121. and get the permissions and write them back out.
  122. INTERFACE:
  123. Initialize()
  124. Gets everything setup before Process is called (should be called
  125. before process). If Initialize returns an error, then Process
  126. should not be called, or if the user quit, then process should
  127. not be called.
  128. pfUserQuit - Set to TRUE if the user pressed cancel
  129. fAccessPerms - Should be set to TRUE if access permissions
  130. should be retrieved, otherwise audit permissions
  131. will be retrieved.
  132. GetPermissions()
  133. Attempts to read the permissions using the _accperm member.
  134. Handles displaying errors etc. etc. If the return code
  135. is NERR_Success, then the fUserQuit flag should be checked
  136. in case the user decided to bail. If an error is returned,
  137. then the client is responsible for displaying the error code.
  138. WritePermissions()
  139. Attempts to write the permissions using the _accperm member.
  140. All error handling is contained in this method, including
  141. displaying error codes to the user. If the return code
  142. is TRUE, then the permissions were successfully written and
  143. the dialog should be dismissed, otherwise an error occurred,
  144. and the dialog should not be dismissed. The client does *not*
  145. need to display an hour class before calling this method.
  146. PARENT:
  147. USES:
  148. CAVEATS:
  149. NOTES:
  150. HISTORY:
  151. Johnl 06-Aug-1991 Created
  152. **************************************************************************/
  153. class MAIN_PERM_BASE_DLG : public PERM_BASE_DLG
  154. {
  155. protected:
  156. ACCPERM _accperm ;
  157. virtual BOOL OnOK( void ) ;
  158. MAIN_PERM_BASE_DLG( const TCHAR * pszDialogName,
  159. HWND hwndParent,
  160. const TCHAR * pszDialogTitle,
  161. ACL_TO_PERM_CONVERTER * paclconv,
  162. const TCHAR * pszResourceType,
  163. const TCHAR * pszResourceName,
  164. const TCHAR * pszHelpFileName,
  165. ULONG * ahcMainDialog ) ;
  166. virtual BOOL MayRun( void ) ;
  167. public:
  168. virtual ~MAIN_PERM_BASE_DLG() ;
  169. APIERR GetPermissions( BOOL * pfUserQuit, BOOL fAccessPerms ) ;
  170. BOOL WritePermissions( BOOL fApplyToExistingCont,
  171. BOOL fApplyToNewObj,
  172. enum TREE_APPLY_FLAGS applyflags = TREEAPPLY_ACCESS_PERMS ) ;
  173. virtual APIERR Initialize( BOOL * pfUserQuit, BOOL fAccessPerms ) ;
  174. ACL_TO_PERM_CONVERTER * QueryAclConverter( void ) const
  175. { return _accperm.QueryAclConverter() ; }
  176. BOOL IsReadOnly( void ) const
  177. { return QueryAclConverter()->IsReadOnly() ; }
  178. BOOL IsNT( void ) const
  179. { return QueryAclConverter()->IsNT() ; }
  180. MASK_MAP * QueryAccessMap( void ) const
  181. { return QueryAclConverter()->QueryAccessMap() ; }
  182. MASK_MAP * QueryAuditMap( void ) const
  183. { return QueryAclConverter()->QueryAuditMap() ; }
  184. }; // class MAIN_PERM_BASE_DLG
  185. /*************************************************************************
  186. NAME: MULTI_SUBJ_PERM_BASE
  187. SYNOPSIS: This dialog adds the ability to Add/Remove subjects from
  188. the listbox displayed in this dialog
  189. INTERFACE:
  190. PARENT:
  191. USES:
  192. CAVEATS:
  193. NOTES:
  194. HISTORY:
  195. Johnl 27-Sep-1991 Created
  196. **************************************************************************/
  197. class MULTI_SUBJ_PERM_BASE_DLG : public MAIN_PERM_BASE_DLG
  198. {
  199. private:
  200. PUSH_BUTTON _buttonAdd ;
  201. PUSH_BUTTON _buttonRemove ;
  202. ULONG _hcAddDialog ;
  203. protected:
  204. virtual BOOL OnCommand( const CONTROL_EVENT & e );
  205. /* Add/Delete User/group buttons
  206. */
  207. virtual APIERR OnAddSubject( void ) ;
  208. virtual void OnDeleteSubject( void ) ;
  209. MULTI_SUBJ_PERM_BASE_DLG( const TCHAR * pszDialogName,
  210. HWND hwndParent,
  211. const TCHAR * pszDialogTitle,
  212. ACL_TO_PERM_CONVERTER * paclconv,
  213. const TCHAR * pszResourceType,
  214. const TCHAR * pszResourceName,
  215. const TCHAR * pszHelpFileName,
  216. ULONG * ahcMainDialog ) ;
  217. ULONG QueryAddDialogHelp( void )
  218. { return QueryHelpArray()[HC_SPECIAL_ACCESS_DLG] ; }
  219. public:
  220. virtual ~MULTI_SUBJ_PERM_BASE_DLG() ;
  221. PUSH_BUTTON * QueryRemoveButton( void )
  222. { return &_buttonRemove ; }
  223. PUSH_BUTTON * QueryAddButton( void )
  224. { return &_buttonAdd ; }
  225. };
  226. /*************************************************************************
  227. NAME: MULTI_SUBJ_ACCESS_PERM_BASE_DLG
  228. SYNOPSIS: Dialog where access permissions are set.
  229. INTERFACE:
  230. PARENT:
  231. USES:
  232. CAVEATS:
  233. NOTES: We take pointers to the listbox and group since the children
  234. may use their own specialized listbox or group.
  235. We add the "Special Access..." string to the combobox (this
  236. string must match the string passed to the SUBJECT_LISTBOX).
  237. HISTORY:
  238. Johnl 06-Aug-1991 Created
  239. **************************************************************************/
  240. class MULTI_SUBJ_ACCESS_PERM_BASE_DLG : public MULTI_SUBJ_PERM_BASE_DLG
  241. {
  242. private:
  243. COMBOBOX _cbPermissionName ;
  244. SLT _sltCBTitle ;
  245. SUBJECT_PERM_LISTBOX *_plbPermissionList ;
  246. SUBJ_LB_GROUP *_psubjlbGroup ;
  247. const TCHAR * _pszDefaultPermName ;
  248. protected:
  249. /* These do real work
  250. */
  251. virtual void OnDeleteSubject( void ) ;
  252. virtual APIERR OnAddSubject( void ) ;
  253. BOOL OnCommand( const CONTROL_EVENT & e ) ;
  254. MULTI_SUBJ_ACCESS_PERM_BASE_DLG( const TCHAR * pszDialogName,
  255. HWND hwndParent,
  256. const TCHAR * pszDialogTitle,
  257. ACL_TO_PERM_CONVERTER * paclconv,
  258. const TCHAR * pszResourceType,
  259. const TCHAR * pszResourceName,
  260. const TCHAR * pszHelpFileName,
  261. SUBJECT_PERM_LISTBOX * plbPermissionList,
  262. SUBJ_LB_GROUP * psubjlbGroup,
  263. const TCHAR * pszSpecialAccessName,
  264. const TCHAR * pszDefaultPermName,
  265. ULONG * ahcMainDialog ) ;
  266. public:
  267. virtual ~MULTI_SUBJ_ACCESS_PERM_BASE_DLG() ;
  268. virtual APIERR Initialize( BOOL * pfUserQuit, BOOL fAccessPerms ) ;
  269. /* Public so the group can call these when it needs to.
  270. */
  271. virtual APIERR OnSpecial( SUBJ_PERM_LBI * pSubjPermLBI ) ;
  272. /* Will only get redefined for children that support New Sub-Object stuff.
  273. */
  274. virtual APIERR OnNewObjectSpecial( SUBJ_PERM_LBI * pSubjPermLBI ) ;
  275. COMBOBOX * QueryPermNameCombo( void )
  276. { return &_cbPermissionName ; }
  277. SLT * QueryComboBoxTitle( void )
  278. { return &_sltCBTitle ; }
  279. SUBJECT_PERM_LISTBOX * QuerySubjectPermListbox( void ) const
  280. { return _plbPermissionList ; }
  281. const TCHAR * QueryDefaultPermName( void ) const
  282. { return _pszDefaultPermName ; }
  283. ULONG QuerySpecialHelpContext( void )
  284. { return QueryHelpArray()[HC_SPECIAL_ACCESS_DLG] ; }
  285. ULONG QueryNewObjHelpContext( void )
  286. { return QueryHelpArray()[HC_NEW_ITEM_SPECIAL_ACCESS_DLG] ; }
  287. } ;
  288. /*************************************************************************
  289. NAME: OBJECT_ACCESS_PERMISSION_DLG
  290. SYNOPSIS: Single object access permission dialog
  291. INTERFACE:
  292. PARENT: MULTI_SUBJ_ACCESS_PERM_BASE_DLG
  293. USES:
  294. CAVEATS:
  295. NOTES:
  296. HISTORY:
  297. Johnl 27-Sep-1991 Created
  298. **************************************************************************/
  299. class OBJECT_ACCESS_PERMISSION_DLG : public MULTI_SUBJ_ACCESS_PERM_BASE_DLG
  300. {
  301. private:
  302. SUBJECT_PERM_LISTBOX _lbPermissionList ;
  303. SUBJ_LB_GROUP _subjlbGroup ;
  304. public:
  305. OBJECT_ACCESS_PERMISSION_DLG( const TCHAR * pszDialogName,
  306. HWND hwndParent,
  307. const TCHAR * pszDialogTitle,
  308. ACL_TO_PERM_CONVERTER * paclconv,
  309. const TCHAR * pszResourceType,
  310. const TCHAR * pszResourceName,
  311. const TCHAR * pszHelpFileName,
  312. const TCHAR * pszSpecialAccessName,
  313. const TCHAR * pszDefaultPermName,
  314. ULONG * ahcMainDialog ) ;
  315. virtual ~OBJECT_ACCESS_PERMISSION_DLG() ;
  316. } ;
  317. /*************************************************************************
  318. NAME: NT_OBJECT_ACCESS_PERMISSION_DLG
  319. SYNOPSIS: NT variant of the object access permission dialog
  320. PARENT: OBJECT_ACCESS_PERMISSION_DLG
  321. CAVEATS:
  322. NOTES: This only adds the owner field to the dialog
  323. HISTORY:
  324. Johnl 27-Sep-1991 Created
  325. **************************************************************************/
  326. class NT_OBJECT_ACCESS_PERMISSION_DLG : public OBJECT_ACCESS_PERMISSION_DLG
  327. {
  328. private:
  329. SLE _sleOwner ;
  330. public:
  331. NT_OBJECT_ACCESS_PERMISSION_DLG(
  332. const TCHAR * pszDialogName,
  333. HWND hwndParent,
  334. const TCHAR * pszDialogTitle,
  335. ACL_TO_PERM_CONVERTER * paclconv,
  336. const TCHAR * pszResourceType,
  337. const TCHAR * pszResourceName,
  338. const TCHAR * pszHelpFileName,
  339. const TCHAR * pszSpecialAccessName,
  340. const TCHAR * pszDefaultPermName,
  341. ULONG * ahcMainDialog ) ;
  342. virtual ~NT_OBJECT_ACCESS_PERMISSION_DLG() ;
  343. //
  344. // Fills in the owner field after the dialog has been initialized
  345. //
  346. virtual APIERR Initialize( BOOL * pfUserQuit, BOOL fAccessPerms ) ;
  347. } ;
  348. /*************************************************************************
  349. NAME: MULTI_SUBJ_CONT_ACCESS_PERM_BASE
  350. SYNOPSIS: This dialog forms the base class for the container objects.
  351. This primarily means allowing the Apply to checkboxes and
  352. the special groups etc. for the NT_CONT case (that supports
  353. New Sub-Obj permissions).
  354. INTERFACE:
  355. PARENT: MULTI_SUBJ_ACCESS_PERM_BASE_DLG
  356. USES:
  357. CAVEATS:
  358. NOTES:
  359. HISTORY:
  360. Johnl 27-Sep-1991 Created
  361. **************************************************************************/
  362. class MULTI_SUBJ_CONT_ACCESS_PERM_BASE : public MULTI_SUBJ_ACCESS_PERM_BASE_DLG
  363. {
  364. private:
  365. CHECKBOX _checkAssignToExistingContainers ;
  366. SLT_FONT _sltfontTreeApplyHelpText ;
  367. /* Pointer to confirmation string that is displayed to the user if the
  368. * Tree apply checkbox is checked.
  369. */
  370. const TCHAR * _pszTreeApplyConfirmation ;
  371. protected:
  372. virtual BOOL OnOK( void ) ;
  373. MULTI_SUBJ_CONT_ACCESS_PERM_BASE( const TCHAR * pszDialogName,
  374. HWND hwndParent,
  375. const TCHAR * pszDialogTitle,
  376. ACL_TO_PERM_CONVERTER * paclconv,
  377. const TCHAR * pszResourceType,
  378. const TCHAR * pszResourceName,
  379. const TCHAR * pszHelpFileName,
  380. SUBJECT_PERM_LISTBOX * plbPermissionList,
  381. SUBJ_LB_GROUP * psubjlbGroup,
  382. const TCHAR * pszSpecialAccessName,
  383. const TCHAR * pszDefaultPermName,
  384. ULONG * ahcMainDialog,
  385. const TCHAR * pszAssignToExistingContTitle,
  386. const TCHAR * pszTreeApplyHelpText,
  387. const TCHAR * pszTreeApplyConfirmation ) ;
  388. public:
  389. virtual ~MULTI_SUBJ_CONT_ACCESS_PERM_BASE() ;
  390. /* Calls parent and disables the tree apply checkbox if readonly
  391. */
  392. virtual APIERR Initialize( BOOL * pfUserQuit, BOOL fAccessPerms ) ;
  393. //
  394. // Returns TRUE if permissions should be applied to objects within this
  395. // container.
  396. //
  397. virtual BOOL IsAssignToExistingObjChecked( void ) ;
  398. /* Returns TRUE if the user checked the "Apply to existing"
  399. */
  400. BOOL IsAssignToExistingContChecked( void )
  401. { return _checkAssignToExistingContainers.QueryCheck() ; }
  402. } ;
  403. /*************************************************************************
  404. NAME: CONT_ACCESS_PERM_DLG
  405. SYNOPSIS: This dialog is the container access permission dialog that
  406. doesn't support New Sub-Object permissions (LM Directories
  407. etc.). This is a real dialog.
  408. INTERFACE:
  409. PARENT: MULTI_SUBJ_CONT_ACCESS_PERM_BASE
  410. USES:
  411. CAVEATS:
  412. NOTES:
  413. HISTORY:
  414. Johnl 27-Sep-1991 Created
  415. **************************************************************************/
  416. class CONT_ACCESS_PERM_DLG : public MULTI_SUBJ_CONT_ACCESS_PERM_BASE
  417. {
  418. private:
  419. SUBJECT_PERM_LISTBOX _lbPermissionList ;
  420. SUBJ_LB_GROUP _subjlbGroup ;
  421. protected:
  422. virtual BOOL OnOK( void ) ;
  423. public:
  424. CONT_ACCESS_PERM_DLG( const TCHAR * pszDialogName,
  425. HWND hwndParent,
  426. const TCHAR * pszDialogTitle,
  427. ACL_TO_PERM_CONVERTER * paclconv,
  428. const TCHAR * pszResourceType,
  429. const TCHAR * pszResourceName,
  430. const TCHAR * pszHelpFileName,
  431. const TCHAR * pszSpecialAccessName,
  432. const TCHAR * pszDefaultPermName,
  433. ULONG * ahcMainDialog,
  434. const TCHAR * pszAssignToExistingContTitle,
  435. const TCHAR * pszTreeApplyHelpText,
  436. const TCHAR * pszTreeApplyConfirmation ) ;
  437. virtual ~CONT_ACCESS_PERM_DLG() ;
  438. } ;
  439. /*************************************************************************
  440. NAME: NT_CONT_NO_OBJ_ACCESS_PERM_DLG
  441. SYNOPSIS: This dialog is the NT container access permission dialog that
  442. doesn't support Sub-Object permissions.
  443. PARENT: CONT_ACCESS_PERM_DLG
  444. NOTES: This is exactly the same as the parent except the owner field
  445. is added
  446. HISTORY:
  447. Johnl 20-Nov-1992 Created
  448. **************************************************************************/
  449. class NT_CONT_NO_OBJ_ACCESS_PERM_DLG : public CONT_ACCESS_PERM_DLG
  450. {
  451. private:
  452. SLE _sleOwner ;
  453. public:
  454. NT_CONT_NO_OBJ_ACCESS_PERM_DLG(
  455. const TCHAR * pszDialogName,
  456. HWND hwndParent,
  457. const TCHAR * pszDialogTitle,
  458. ACL_TO_PERM_CONVERTER * paclconv,
  459. const TCHAR * pszResourceType,
  460. const TCHAR * pszResourceName,
  461. const TCHAR * pszHelpFileName,
  462. const TCHAR * pszSpecialAccessName,
  463. const TCHAR * pszDefaultPermName,
  464. ULONG * ahcMainDialog,
  465. const TCHAR * pszAssignToExistingContTitle,
  466. const TCHAR * pszTreeApplyHelpText,
  467. const TCHAR * pszTreeApplyConfirmation ) ;
  468. virtual ~NT_CONT_NO_OBJ_ACCESS_PERM_DLG() ;
  469. //
  470. // Fills in the owner field after the dialog has been initialized
  471. //
  472. virtual APIERR Initialize( BOOL * pfUserQuit, BOOL fAccessPerms ) ;
  473. } ;
  474. /*************************************************************************
  475. NAME: NT_CONT_ACCESS_PERM_DLG
  476. SYNOPSIS: This dialog is the container access permission dialog that
  477. supports New Sub-Object permissions (it's this dialog that
  478. is responsible for this whole hierarchy mess).
  479. This is a real dialog.
  480. INTERFACE:
  481. PARENT: MULTI_SUBJ_CONT_ACCESS_PERM_BASE
  482. USES:
  483. CAVEATS:
  484. NOTES:
  485. HISTORY:
  486. Johnl 27-Sep-1991 Created
  487. **************************************************************************/
  488. class NT_CONT_ACCESS_PERM_DLG : public MULTI_SUBJ_CONT_ACCESS_PERM_BASE
  489. {
  490. private:
  491. NT_CONT_SUBJECT_PERM_LISTBOX _lbPermissionList ;
  492. NT_CONT_SUBJ_LB_GROUP _subjlbGroup ;
  493. SLE _sleOwner ;
  494. CHECKBOX _checkApplyToExistingObjects ;
  495. protected:
  496. virtual BOOL OnOK( void ) ;
  497. public:
  498. /* pszAssignNewObjToExistingObjTitle is used to set the checkbox text. If
  499. * it is NULL, the checkbox is hidden and disabled.
  500. */
  501. NT_CONT_ACCESS_PERM_DLG( const TCHAR * pszDialogName,
  502. HWND hwndParent,
  503. const TCHAR * pszDialogTitle,
  504. ACL_TO_PERM_CONVERTER * paclconv,
  505. const TCHAR * pszResourceType,
  506. const TCHAR * pszResourceName,
  507. const TCHAR * pszHelpFileName,
  508. const TCHAR * pszSpecialAccessName,
  509. const TCHAR * pszDefaultPermName,
  510. ULONG * ahcMainDialog,
  511. const TCHAR * pszNewObjectSpecialAccessName,
  512. const TCHAR * pszAssignToExistingContTitle,
  513. const TCHAR * pszAssignToExistingObjTitle,
  514. const TCHAR * pszTreeApplyHelpText,
  515. const TCHAR * pszTreeApplyConfirmation ) ;
  516. virtual ~NT_CONT_ACCESS_PERM_DLG() ;
  517. virtual APIERR OnNewObjectSpecial( SUBJ_PERM_LBI * pSubjPermLBI ) ;
  518. virtual BOOL IsAssignToExistingObjChecked( void ) ;
  519. //
  520. // Fills in the owner field after the dialog has been initialized
  521. //
  522. virtual APIERR Initialize( BOOL * pfUserQuit, BOOL fAccessPerms ) ;
  523. } ;
  524. #endif //RC_INVOKED
  525. #endif // _PERMDLG_HXX_