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.

349 lines
9.0 KiB

  1. /////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 1996-1997 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // NetIProp.cpp
  7. //
  8. // Abstract:
  9. // Implementation of the network interface property sheet and pages.
  10. //
  11. // Author:
  12. // David Potter (davidp) June 9, 1997
  13. //
  14. // Revision History:
  15. //
  16. // Notes:
  17. //
  18. /////////////////////////////////////////////////////////////////////////////
  19. #include "stdafx.h"
  20. #include "CluAdmin.h"
  21. #include "NetIProp.h"
  22. #include "HelpData.h"
  23. #ifdef _DEBUG
  24. #define new DEBUG_NEW
  25. #undef THIS_FILE
  26. static char THIS_FILE[] = __FILE__;
  27. #endif
  28. /////////////////////////////////////////////////////////////////////////////
  29. // CNetworkPropSheet
  30. /////////////////////////////////////////////////////////////////////////////
  31. IMPLEMENT_DYNAMIC(CNetInterfacePropSheet, CBasePropertySheet)
  32. /////////////////////////////////////////////////////////////////////////////
  33. // Message Maps
  34. BEGIN_MESSAGE_MAP(CNetInterfacePropSheet, CBasePropertySheet)
  35. //{{AFX_MSG_MAP(CNetInterfacePropSheet)
  36. //}}AFX_MSG_MAP
  37. END_MESSAGE_MAP()
  38. /////////////////////////////////////////////////////////////////////////////
  39. //++
  40. //
  41. // CNetInterfacePropSheet::CNetInterfacePropSheet
  42. //
  43. // Routine Description:
  44. // Constructor.
  45. //
  46. // Arguments:
  47. // pParentWnd [IN OUT] Parent window for this property sheet.
  48. // iSelectPage [IN] Page to show first.
  49. //
  50. // Return Value:
  51. // None.
  52. //
  53. //--
  54. /////////////////////////////////////////////////////////////////////////////
  55. CNetInterfacePropSheet::CNetInterfacePropSheet(
  56. IN OUT CWnd * pParentWnd,
  57. IN UINT iSelectPage
  58. )
  59. : CBasePropertySheet(pParentWnd, iSelectPage)
  60. {
  61. m_rgpages[0] = &PageGeneral();
  62. } //*** CNetInterfacePropSheet::CNetInterfacePropSheet()
  63. /////////////////////////////////////////////////////////////////////////////
  64. //++
  65. //
  66. // CNetInterfacePropSheet::BInit
  67. //
  68. // Routine Description:
  69. // Initialize the property sheet.
  70. //
  71. // Arguments:
  72. // pci [IN OUT] Cluster item whose properties are to be displayed.
  73. // iimgIcon [IN] Index in the large image list for the image to use
  74. // as the icon on each page.
  75. //
  76. // Return Value:
  77. // TRUE Property sheet initialized successfully.
  78. // FALSE Error initializing property sheet.
  79. //
  80. //--
  81. /////////////////////////////////////////////////////////////////////////////
  82. BOOL CNetInterfacePropSheet::BInit(
  83. IN OUT CClusterItem * pci,
  84. IN IIMG iimgIcon
  85. )
  86. {
  87. // Call the base class method.
  88. if (!CBasePropertySheet::BInit(pci, iimgIcon))
  89. return FALSE;
  90. // Set the read-only flag if the handles are invalid.
  91. m_bReadOnly = PciNetIFace()->BReadOnly()
  92. || (PciNetIFace()->Cnis() == ClusterNetInterfaceStateUnknown);
  93. return TRUE;
  94. } //*** CNetInterfacePropSheet::BInit()
  95. /////////////////////////////////////////////////////////////////////////////
  96. //++
  97. //
  98. // CNetInterfacePropSheet::Ppages
  99. //
  100. // Routine Description:
  101. // Returns the array of pages to add to the property sheet.
  102. //
  103. // Arguments:
  104. // None.
  105. //
  106. // Return Value:
  107. // Page array.
  108. //
  109. //--
  110. /////////////////////////////////////////////////////////////////////////////
  111. CBasePropertyPage ** CNetInterfacePropSheet::Ppages(void)
  112. {
  113. return m_rgpages;
  114. } //*** CNetworkPropSheet::Pppges()
  115. /////////////////////////////////////////////////////////////////////////////
  116. //++
  117. //
  118. // CNetInterfacePropSheet::Cpages
  119. //
  120. // Routine Description:
  121. // Returns the count of pages in the array.
  122. //
  123. // Arguments:
  124. // None.
  125. //
  126. // Return Value:
  127. // Count of pages in the array.
  128. //
  129. //--
  130. /////////////////////////////////////////////////////////////////////////////
  131. int CNetInterfacePropSheet::Cpages(void)
  132. {
  133. return sizeof(m_rgpages) / sizeof(CBasePropertyPage *);
  134. } //*** CNetInterfacePropSheet::Cpages()
  135. //*************************************************************************//
  136. /////////////////////////////////////////////////////////////////////////////
  137. // CNetInterfaceGeneralPage property page
  138. /////////////////////////////////////////////////////////////////////////////
  139. IMPLEMENT_DYNCREATE(CNetInterfaceGeneralPage, CPropertyPage)
  140. /////////////////////////////////////////////////////////////////////////////
  141. // Message Maps
  142. BEGIN_MESSAGE_MAP(CNetInterfaceGeneralPage, CBasePropertyPage)
  143. //{{AFX_MSG_MAP(CNetInterfaceGeneralPage)
  144. //}}AFX_MSG_MAP
  145. ON_EN_CHANGE(IDC_PP_NETIFACE_DESC, CBasePropertyPage::OnChangeCtrl)
  146. END_MESSAGE_MAP()
  147. /////////////////////////////////////////////////////////////////////////////
  148. //++
  149. //
  150. // CNetInterfaceGeneralPage::CNetInterfaceGeneralPage
  151. //
  152. // Routine Description:
  153. // Constructor.
  154. //
  155. // Arguments:
  156. // None.
  157. //
  158. // Return Value:
  159. // None.
  160. //
  161. //--
  162. /////////////////////////////////////////////////////////////////////////////
  163. CNetInterfaceGeneralPage::CNetInterfaceGeneralPage(void)
  164. : CBasePropertyPage(IDD, g_aHelpIDs_IDD_PP_NETIFACE_GENERAL)
  165. {
  166. //{{AFX_DATA_INIT(CNetInterfaceGeneralPage)
  167. m_strNode = _T("");
  168. m_strNetwork = _T("");
  169. m_strDesc = _T("");
  170. m_strAdapter = _T("");
  171. m_strAddress = _T("");
  172. m_strName = _T("");
  173. m_strState = _T("");
  174. //}}AFX_DATA_INIT
  175. } //*** CNetInterfaceGeneralPage::CNetInterfaceGeneralPage()
  176. /////////////////////////////////////////////////////////////////////////////
  177. //++
  178. //
  179. // CNetInterfaceGeneralPage::BInit
  180. //
  181. // Routine Description:
  182. // Initialize the page.
  183. //
  184. // Arguments:
  185. // psht [IN OUT] Property sheet to which this page belongs.
  186. //
  187. // Return Value:
  188. // TRUE Page initialized successfully.
  189. // FALSE Page failed to initialize.
  190. //
  191. //--
  192. /////////////////////////////////////////////////////////////////////////////
  193. BOOL CNetInterfaceGeneralPage::BInit(IN OUT CBaseSheet * psht)
  194. {
  195. BOOL bSuccess;
  196. ASSERT_KINDOF(CNetInterfacePropSheet, psht);
  197. bSuccess = CBasePropertyPage::BInit(psht);
  198. if (bSuccess)
  199. {
  200. try
  201. {
  202. m_strNode = PciNetIFace()->StrNode();
  203. m_strNetwork = PciNetIFace()->StrNetwork();
  204. m_strDesc = PciNetIFace()->StrDescription();
  205. m_strAdapter = PciNetIFace()->StrAdapter();
  206. m_strAddress = PciNetIFace()->StrAddress();
  207. m_strName = PciNetIFace()->StrName();
  208. PciNetIFace()->GetStateName(m_strState);
  209. } // try
  210. catch (CException * pe)
  211. {
  212. pe->ReportError();
  213. pe->Delete();
  214. bSuccess = FALSE;
  215. } // catch: CException
  216. } // if: base class method was successful
  217. return bSuccess;
  218. } //*** CNetInterfaceGeneralPage::BInit()
  219. /////////////////////////////////////////////////////////////////////////////
  220. //++
  221. //
  222. // CNetInterfaceGeneralPage::DoDataExchange
  223. //
  224. // Routine Description:
  225. // Do data exchange between the dialog and the class.
  226. //
  227. // Arguments:
  228. // pDX [IN OUT] Data exchange object
  229. //
  230. // Return Value:
  231. // None.
  232. //
  233. //--
  234. /////////////////////////////////////////////////////////////////////////////
  235. void CNetInterfaceGeneralPage::DoDataExchange(CDataExchange * pDX)
  236. {
  237. CBasePropertyPage::DoDataExchange(pDX);
  238. //{{AFX_DATA_MAP(CNetInterfaceGeneralPage)
  239. DDX_Control(pDX, IDC_PP_NETIFACE_DESC, m_editDesc);
  240. DDX_Text(pDX, IDC_PP_NETIFACE_NODE, m_strNode);
  241. DDX_Text(pDX, IDC_PP_NETIFACE_NETWORK, m_strNetwork);
  242. DDX_Text(pDX, IDC_PP_NETIFACE_DESC, m_strDesc);
  243. DDX_Text(pDX, IDC_PP_NETIFACE_ADAPTER, m_strAdapter);
  244. DDX_Text(pDX, IDC_PP_NETIFACE_ADDRESS, m_strAddress);
  245. DDX_Text(pDX, IDC_PP_NETIFACE_NAME, m_strName);
  246. DDX_Text(pDX, IDC_PP_NETIFACE_CURRENT_STATE, m_strState);
  247. //}}AFX_DATA_MAP
  248. } //*** CNetInterfaceGeneralPage::DoDataExchange()
  249. /////////////////////////////////////////////////////////////////////////////
  250. //++
  251. //
  252. // CNetInterfaceGeneralPage::OnInitDialog
  253. //
  254. // Routine Description:
  255. // Handler for the WM_INITDIALOG message.
  256. //
  257. // Arguments:
  258. // None.
  259. //
  260. // Return Value:
  261. // TRUE Focus needs to be set.
  262. // FALSE Focus already set.
  263. //
  264. //--
  265. /////////////////////////////////////////////////////////////////////////////
  266. BOOL CNetInterfaceGeneralPage::OnInitDialog(void)
  267. {
  268. CBasePropertyPage::OnInitDialog();
  269. // If read-only, set all controls to be either disabled or read-only.
  270. if (BReadOnly())
  271. {
  272. m_editDesc.SetReadOnly(TRUE);
  273. } // if: sheet is read-only
  274. return TRUE; // return TRUE unless you set the focus to a control
  275. // EXCEPTION: OCX Property Pages should return FALSE
  276. } //*** CNetInterfaceGeneralPage::OnInitDialog()
  277. /////////////////////////////////////////////////////////////////////////////
  278. //++
  279. //
  280. // CNetInterfaceGeneralPage::OnApply
  281. //
  282. // Routine Description:
  283. // Handler for when the Apply button is pressed.
  284. //
  285. // Arguments:
  286. // None.
  287. //
  288. // Return Value:
  289. // TRUE Page successfully applied.
  290. // FALSE Error applying page.
  291. //
  292. //--
  293. /////////////////////////////////////////////////////////////////////////////
  294. BOOL CNetInterfaceGeneralPage::OnApply(void)
  295. {
  296. // Set the data from the page in the cluster item.
  297. try
  298. {
  299. CWaitCursor wc;
  300. PciNetIFace()->SetCommonProperties(m_strDesc);
  301. } // try
  302. catch (CException * pe)
  303. {
  304. pe->ReportError();
  305. pe->Delete();
  306. return FALSE;
  307. } // catch: CException
  308. return CBasePropertyPage::OnApply();
  309. } //*** CNetInterfaceGeneralPage::OnApply()