/**********************************************************************/ /** Microsoft Windows/NT **/ /** Copyright(c) Microsoft Corporation, 1997 - 1999 -99 **/ /**********************************************************************/ /* dynrecpp.cpp Comment goes here FILE HISTORY: */ #include "stdafx.h" #include "winssnap.h" #include "DynRecpp.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDynamicPropGen property page IMPLEMENT_DYNCREATE(CDynamicPropGen, CPropertyPageBase) CDynamicPropGen::CDynamicPropGen() : CPropertyPageBase(CDynamicPropGen::IDD) { //{{AFX_DATA_INIT(CDynamicPropGen) //}}AFX_DATA_INIT } CDynamicPropGen::~CDynamicPropGen() { } void CDynamicPropGen::DoDataExchange(CDataExchange* pDX) { CPropertyPageBase::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDynamicPropGen) DDX_Control(pDX, IDC_EDIT_OWNER, m_editOwner); DDX_Control(pDX, IDC_LIST_ADDRESSES, m_listAddresses); DDX_Control(pDX, IDC_STATIC_IPADD, m_staticIPAdd); DDX_Control(pDX, IDC_EDIT_VERSION, m_editVersion); DDX_Control(pDX, IDC_EDIT_TYPE, m_editType); DDX_Control(pDX, IDC_EDIT_STATE, m_editState); DDX_Control(pDX, IDC_EDIT_NAME, m_editName); DDX_Control(pDX, IDC_EDIT_EXPIRATION, m_editExpiration); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CDynamicPropGen, CPropertyPageBase) //{{AFX_MSG_MAP(CDynamicPropGen) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDynamicPropGen message handlers ///////////////////////////////////////////////////////////////////////////// // CDynamicMappingProperties message handlers CDynamicMappingProperties::CDynamicMappingProperties ( ITFSNode * pNode, IComponent * pComponent, LPCTSTR pszSheetName, WinsRecord* pwRecord ) : CPropertyPageHolderBase(pNode, pComponent, pszSheetName) { m_bAutoDeletePages = FALSE; // we have the pages as embedded members m_bTheme = TRUE; AddPageToList((CPropertyPageBase*) &m_pageGeneral); if(pwRecord) { ZeroMemory(&m_wsRecord, sizeof(m_wsRecord)); strcpy(m_wsRecord.szRecordName , pwRecord->szRecordName); m_wsRecord.dwExpiration = pwRecord->dwExpiration; m_wsRecord.dwExpiration = pwRecord->dwExpiration; m_wsRecord.dwNoOfAddrs = pwRecord->dwNoOfAddrs; for(DWORD i = 0; i < pwRecord->dwNoOfAddrs; i++) { m_wsRecord.dwIpAdd[i] = pwRecord->dwIpAdd[i]; } m_wsRecord.liVersion = pwRecord->liVersion; m_wsRecord.dwNameLen = pwRecord->dwNameLen; m_wsRecord.dwOwner = pwRecord->dwOwner; m_wsRecord.dwState = pwRecord->dwState; m_wsRecord.dwType = pwRecord->dwType; } } CDynamicMappingProperties::~CDynamicMappingProperties() { RemovePageFromList((CPropertyPageBase*) &m_pageGeneral, FALSE); } BOOL CDynamicPropGen::OnInitDialog() { CPropertyPageBase::OnInitDialog(); // get the actreg node CActiveRegistrationsHandler *pActReg; SPITFSNode spNode; spNode = GetHolder()->GetNode(); pActReg = GETHANDLER(CActiveRegistrationsHandler, spNode); WinsRecord ws = ((CDynamicMappingProperties*)GetHolder())->m_wsRecord; // build the name string CString strName; pActReg->CleanNetBIOSName(ws.szRecordName, strName, TRUE, // Expand TRUE, // Truncate pActReg->IsLanManCompatible(), TRUE, // name is OEM FALSE, // No double backslash ws.dwNameLen); m_editName.SetWindowText(strName); // setup the listbox CString strColumn; strColumn.LoadString(IDS_IP_ADDRESS); m_listAddresses.InsertColumn(0, strColumn, LVCFMT_LEFT, 90); ListView_SetExtendedListViewStyle(m_listAddresses.GetSafeHwnd(), LVS_EX_FULLROWSELECT); BOOL fMultiCol = !( (ws.dwState & WINSDB_REC_UNIQUE) || (ws.dwState & WINSDB_REC_NORM_GROUP) ); if (fMultiCol) { strColumn.LoadString(IDS_ACTREG_OWNER); m_listAddresses.InsertColumn(1, strColumn, LVCFMT_LEFT, 90); } CString strIP, strOwnerIP; int nIndex = 0; for (DWORD i = 0; i < ws.dwNoOfAddrs; i++) { if (fMultiCol) { ::MakeIPAddress(ws.dwIpAdd[i++], strOwnerIP); ::MakeIPAddress(ws.dwIpAdd[i], strIP); if (ws.dwIpAdd[i] != 0) { m_listAddresses.InsertItem(nIndex, strIP); m_listAddresses.SetItem(nIndex, 1, LVIF_TEXT, strOwnerIP, 0, 0, 0, 0); } } else { ::MakeIPAddress(ws.dwIpAdd[i], strIP); m_listAddresses.InsertItem(nIndex, strIP); } nIndex++; } // now the type CString strType; pActReg->m_NameTypeMap.TypeToCString((DWORD)ws.szRecordName[15], MAKELONG(HIWORD(ws.dwType), 0), strType); m_editType.SetWindowText(strType); // active status CString strActive; pActReg->GetStateString(ws.dwState, strActive); m_editState.SetWindowText(strActive); // expiration time CString strExpiration; CTime timeExpiration(ws.dwExpiration); FormatDateTime(strExpiration, timeExpiration); m_editExpiration.SetWindowText(strExpiration); // version CString strVersion; pActReg->GetVersionInfo(ws.liVersion.LowPart, ws.liVersion.HighPart, strVersion); m_editVersion.SetWindowText(strVersion); // owner if (ws.dwOwner != INVALID_OWNER_ID) { CString strOwner; MakeIPAddress(ws.dwOwner, strOwner); m_editOwner.SetWindowText(strOwner); } // load the correct icon for (i = 0; i < ICON_IDX_MAX; i++) { if (g_uIconMap[i][1] == m_uImage) { HICON hIcon = LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(g_uIconMap[i][0])); if (hIcon) ((CStatic *) GetDlgItem(IDC_STATIC_ICON))->SetIcon(hIcon); break; } } return TRUE; }