////////////////////////////////////////////////////////////////////////////// /*++ Copyright (C) Microsoft Corporation Module Name: rapwz_profile.cpp Abstract: Implementation file for the CNewRAPWiz_EditProfile class. We implement the class needed to handle the first property page for a Policy node. Revision History: mmaguire 12/15/97 - created byao 1/22/98 Modified for Network Access Policy --*/ ////////////////////////////////////////////////////////////////////////////// #include "Precompiled.h" #include "rapwz_profile.h" #include "NapUtil.h" #include "PolicyNode.h" #include "PoliciesNode.h" #include "rasprof.h" #include "ChangeNotification.h" //+--------------------------------------------------------------------------- // // Function: CNewRAPWiz_EditProfile // // Class: CNewRAPWiz_EditProfile // // Synopsis: class constructor // // Arguments: CPolicyNode *pPolicyNode - policy node for this property page // CIASAttrList *pAttrList -- attribute list // TCHAR* pTitle = NULL - // // Returns: Nothing // // History: Created Header byao 2/16/98 4:31:52 PM // //+--------------------------------------------------------------------------- CNewRAPWiz_EditProfile::CNewRAPWiz_EditProfile( CRapWizardData* pWizData, LONG_PTR hNotificationHandle, CIASAttrList *pIASAttrList, TCHAR* pTitle, BOOL bOwnsNotificationHandle, bool isWin2k ) : CIASWizard97Page ( hNotificationHandle, pTitle, bOwnsNotificationHandle ), m_spWizData(pWizData), m_isWin2k(isWin2k) { TRACE_FUNCTION("CNewRAPWiz_EditProfile::CNewRAPWiz_EditProfile"); m_pIASAttrList = pIASAttrList; } //+--------------------------------------------------------------------------- // // Function: CNewRAPWiz_EditProfile // // Class: CNewRAPWiz_EditProfile // // Synopsis: class destructor // // Returns: Nothing // // History: Created Header byao 2/16/98 4:31:52 PM // //+--------------------------------------------------------------------------- CNewRAPWiz_EditProfile::~CNewRAPWiz_EditProfile() { TRACE_FUNCTION("CNewRAPWiz_EditProfile::~CNewRAPWiz_EditProfile"); } ////////////////////////////////////////////////////////////////////////////// /*++ CNewRAPWiz_EditProfile::OnInitDialog --*/ ////////////////////////////////////////////////////////////////////////////// LRESULT CNewRAPWiz_EditProfile::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { TRACE_FUNCTION("CNewRAPWiz_EditProfile::OnInitDialog"); HRESULT hr = S_OK; BOOL fRet; CComPtr spUnknown; CComPtr spEnumVariant; long ulCount; ULONG ulCountReceived; SetModified(FALSE); return TRUE; // ISSUE: what do we need to be returning here? } ////////////////////////////////////////////////////////////////////////////// /*++ CNewRAPWiz_EditProfile::OnWizardFinish --*/ ////////////////////////////////////////////////////////////////////////////// BOOL CNewRAPWiz_EditProfile::OnWizardNext() { // reset the dirty bit SetModified(FALSE); return m_spWizData->GetNextPageId(((PROPSHEETPAGE*)(*this))->pszTemplate); } ////////////////////////////////////////////////////////////////////////////// /*++ CNewRAPWiz_EditProfile::OnQueryCancel --*/ ////////////////////////////////////////////////////////////////////////////// BOOL CNewRAPWiz_EditProfile::OnQueryCancel() { TRACE_FUNCTION("CNewRAPWiz_EditProfile::OnQueryCancel"); return TRUE; } ////////////////////////////////////////////////////////////////////////////// /*++ CNewRAPWiz_EditProfile::OnEditProfile --*/ ////////////////////////////////////////////////////////////////////////////// ////////// // Signature of the entry point to the profile editing DLL. ////////// typedef HRESULT (APIENTRY *OPENRAS_IASPROFILEDLG)( LPCWSTR pszMachineName, ISdo* pProfile, // profile SDO pointer ISdoDictionaryOld* pDictionary, // dictionary SDO pointer BOOL bReadOnly, // if the dlg is for readonly DWORD dwTabFlags, // what to show void *pvData // additional data ); LRESULT CNewRAPWiz_EditProfile::OnEditProfile(UINT uMsg, WPARAM wParam, HWND hwnd, BOOL& bHandled) { TRACE_FUNCTION("CNewRAPWiz_EditProfile::OnEditProfile"); OPENRAS_IASPROFILEDLG pfnProfileEditor = NULL; HRESULT hr = S_OK; HMODULE hProfileDll = NULL; hProfileDll = LoadLibrary(_T("rasuser.dll")); if ( NULL == hProfileDll ) { hr = HRESULT_FROM_WIN32(GetLastError()); ErrorTrace(ERROR_NAPMMC_POLICYPAGE1, "LoadLibrary() failed, err = %x", hr); ShowErrorDialog(m_hWnd, IDS_ERROR_CANT_FIND_PROFILEDLL, NULL, hr); return 0; } pfnProfileEditor = (OPENRAS_IASPROFILEDLG) GetProcAddress(hProfileDll, "OpenRAS_IASProfileDlg"); if ( NULL == pfnProfileEditor ) { hr = HRESULT_FROM_WIN32(GetLastError()); ErrorTrace(ERROR_NAPMMC_POLICYPAGE1, "GetProcAddress() failed, err = %x", hr); ShowErrorDialog(m_hWnd, IDS_ERROR_CANT_FIND_PROFILEAPI, NULL, hr); FreeLibrary(hProfileDll); return 0; } // findout if this is extending RRAS or IAS CPoliciesNode* pPoliciesNode = dynamic_cast(m_spWizData->m_pPolicyNode->m_pParentNode); DWORD dwFlags = RAS_IAS_PROFILEDLG_SHOW_IASTABS; if(pPoliciesNode != NULL) { if(!pPoliciesNode->m_fExtendingIAS) dwFlags = RAS_IAS_PROFILEDLG_SHOW_RASTABS; } if(m_isWin2k) { dwFlags |= RAS_IAS_PROFILEDLG_SHOW_WIN2K; } // // now we do have this profile sdo, call the API // hr = pfnProfileEditor( m_spWizData->m_pPolicyNode->m_pszServerAddress, m_spWizData->m_spProfileSdo, m_spWizData->m_spDictionarySdo, FALSE, dwFlags, (void *)&(m_pIASAttrList->m_AttrList) ); FreeLibrary(hProfileDll); DebugTrace(DEBUG_NAPMMC_POLICYPAGE1, "OpenRAS_IASProfileDlg() returned %x", hr); if ( FAILED(hr) ) { return hr; } return hr; } ////////////////////////////////////////////////////////////////////////////// /*++ CNewRAPWiz_EditProfile::OnSetActive Return values: TRUE if the page can be made active FALSE if the page should be be skipped and the next page should be looked at. Remarks: If you want to change which pages are visited based on a user's choices in a previous page, return FALSE here as appropriate. --*/ ////////////////////////////////////////////////////////////////////////////// BOOL CNewRAPWiz_EditProfile::OnSetActive() { ATLTRACE(_T("# CNewRAPWiz_EditProfile::OnSetActive\n")); // MSDN docs say you need to use PostMessage here rather than SendMessage. ::PropSheet_SetWizButtons(GetParent(), PSWIZB_BACK | PSWIZB_NEXT); return TRUE; }