windows-nt/Source/XPSP1/NT/admin/snapin/dnsmgr/ipeditor.h
2020-09-26 16:20:57 +08:00

207 lines
4.4 KiB
C++

//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1998 - 1998
//
// File: ipeditor.h
//
//--------------------------------------------------------------------------
#ifndef _IPEDITOR_H
#define _IPEDITOR_H
/////////////////////////////////////////////////////////////////////////////
#include "uiutil.h"
#include "browser.h"
///////////////////////////////////////////////////////////////////////////////
// FORWARD DECLARATIONS
class CComponentDataObject;
/////////////////////////////////////////////////////////////////////////////
// CIPListBox
class CIPEditor; // fwd decl
class CIPListBox : public CListBox
{
// Construction
public:
CIPListBox() {}
// Attributes
public:
// Operations
public:
void SetEditor(CIPEditor* pEditor) { ASSERT(pEditor != NULL); m_pEditor = pEditor; }
BOOL OnAdd(DWORD dwIpAddr);
BOOL OnAddEx(DWORD dwIpAddr, LPCTSTR lpszServerName);
void OnRemove(DWORD* pdwIpAddr);
void OnUp();
void OnDown();
void UpdateHorizontalExtent();
int FindIndexOfIpAddr(DWORD dwIpAddr);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CIPListBox)
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CIPListBox() {}
// Generated message map functions
protected:
CIPEditor* m_pEditor;
//{{AFX_MSG(CIPListBox)
afx_msg void OnSelChange();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
// CIPEdit
class CIPEdit : public CDNSIPv4Control
{
// Construction
public:
CIPEdit() {};
// Attributes
public:
// Operations
public:
void SetEditor(CIPEditor* pEditor) { ASSERT(pEditor != NULL); m_pEditor = pEditor; }
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CIPEdit)
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CIPEdit(){};
// Generated message map functions
protected:
CIPEditor* m_pEditor;
//{{AFX_MSG(CIPEdit)
afx_msg void OnChange();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
// CMyButton
class CMyButton : public CButton
{
// Construction
public:
CMyButton() {}
// Attributes
public:
// Operations
public:
void SetEditor(CIPEditor* pEditor) { ASSERT(pEditor != NULL); m_pEditor = pEditor; }
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMyButton)
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CMyButton() {}
// Generated message map functions
protected:
CIPEditor* m_pEditor;
//{{AFX_MSG(CMyButton)
afx_msg void OnClicked();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
// CIPEditor
class CIPEditor
{
public:
CIPEditor(BOOL bNoUpDown = FALSE)
{
m_bNoUpDown = bNoUpDown;
m_pParentWnd = NULL;
m_bUIEnabled = TRUE;
m_nDefID = 0;
}
~CIPEditor() {}
BOOL Initialize(CWnd* pParentWnd,
CWnd* pControlWnd,
UINT nIDBtnUp, UINT nIDBtnDown,
UINT nIDBtnAdd, UINT nIDBtnRemove,
UINT nIDIPCtrl, UINT nIDIPListBox);
BOOL OnButtonClicked(CMyButton* pButton);
void OnEditChange();
void OnListBoxSelChange()
{
SetButtonsState();
}
void AddAddresses(DWORD* pArr, int nArraySize);
void GetAddresses(DWORD* pArr, int nArraySize, int* pFilled);
void Clear();
BOOL BrowseFromDNSNamespace(CComponentDataObject* pComponentDataObject,
CPropertyPageHolderBase* pHolder,
BOOL bEnableBrowseEdit = FALSE,
LPCTSTR lpszExcludeServerName = NULL);
void FindNames();
void EnableUI(BOOL bEnable, BOOL bListBoxAlwaysEnabled = FALSE);
void ShowUI(BOOL bShow);
int GetCount() { return m_listBox.GetCount();}
CWnd* GetParentWnd() { ASSERT(m_pParentWnd != NULL); return m_pParentWnd;}
protected:
virtual void OnChangeData() {}
private:
void AddAddresses(DWORD* pArr, LPCTSTR* lpszServerNameArr, int nArraySize);
BOOL m_bNoUpDown; // disable and hide the up/down buttons
BOOL m_bUIEnabled;
// Control Objects the editor uses
CMyButton m_upButton;
CMyButton m_removeButton;
CMyButton m_downButton;
CMyButton m_addButton;
CIPEdit m_edit;
CIPListBox m_listBox;
CWnd* m_pParentWnd; // parent dialog or property page
CWnd* m_pControlWnd; // parent dialog or property sheet when being used in a property page
UINT m_nDefID;
void SetButtonsState();
};
#endif //_IPEDITOR_H