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

193 lines
4.6 KiB
C++

/*++
Module Name:
Connect.h
Abstract:
This module contains the declaration for CConnectToDialog.
This class is used to display the Connect To Dfs Root dialog box
--*/
#ifndef __CONNECT_H_
#define __CONNECT_H_
#include "resource.h" // Main resource symbols
#include "NetUtils.h"
#include "DfsGUI.h"
#include "DfsCore.h"
#include "bufmgr.h"
typedef enum _ICONTYPE
{
ICONTYPE_BUSY = 0,
ICONTYPE_ERROR,
ICONTYPE_NORMAL
} ICONTYPE;
/////////////////////////////////////////////////////////////////////////////
// CConnectToDialog
class CConnectToDialog :
public CDialogImpl<CConnectToDialog>
{
private:
// This method is started the starting point of the second thread
//friend DWORD WINAPI HelperThreadEntryPoint(IN LPVOID i_pvThisPointer);
private:
// IDC_TREEDFSRoots is the resource id of the TV. Internally we useS IDC_TV only
enum { IDC_TV = IDC_TREEDFSRoots };
// The Edit box in the ConnectTo dialog
enum {IDC_DLG_EDIT = IDC_EditDfsRoot};
public:
CConnectToDialog();
~CConnectToDialog();
// IDD_DLGCONNECTTO is the dialog id. This is used by CDialogImpl.
enum { IDD = IDD_DLGCONNECTTO };
BEGIN_MSG_MAP(CDlgConnectTo)
MESSAGE_HANDLER(WM_USER_GETDATA_THREAD_DONE, OnGetDataThreadDone)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_HELP, OnCtxHelp)
MESSAGE_HANDLER(WM_CONTEXTMENU, OnCtxMenuHelp)
MESSAGE_HANDLER(WM_NOTIFY, OnNotify)
COMMAND_ID_HANDLER(IDOK, OnOK)
COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
END_MSG_MAP()
// Not implemented
private:
CConnectToDialog(const CConnectToDialog& Obj);
const CConnectToDialog& operator=(const CConnectToDialog& rhs);
public:
// Message handlers
LRESULT OnGetDataThreadDone(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
void ExpandNodeErrorReport(
IN HTREEITEM hItem,
IN PCTSTR pszNodeName,
IN HRESULT hr
);
void ExpandNode(
IN PCTSTR pszNodeName,
IN NODETYPE nNodeType,
IN HTREEITEM hParentItem
);
HRESULT InsertData(
IN CEntryData *pEntry,
IN HTREEITEM hParentItem
);
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnCtxHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnCtxMenuHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
// Used to get the notification about changing of TV's selection.
LRESULT OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
public:
// Return the item selected by the user
STDMETHOD(get_DfsRoot)(OUT BSTR *pVal);
// Helper Methods
private:
// Notify helpers
// Handle the
LRESULT DoNotifyDoubleClick(
);
// Handle the TVN_ITEMEXPANDING notify for the Tree View
LRESULT DoNotifyItemExpanding(
IN LPNM_TREEVIEW i_pNMTreeView
);
// Handle the TVN_SELCHANGED notify for the Tree View
LRESULT DoNotifySelectionChanged(
IN LPNM_TREEVIEW i_pNMTreeView
);
// Initilization routines
// Create the imagelist and initialize it.
HRESULT InitTVImageList();
// Add the items to the Tree View. This includes the domain names and the
// StandAlone subtree label
HRESULT FillupTheTreeView(
);
// Set the cChilren label to zero for this tree item
void SetChildrenToZero(
IN HTREEITEM i_hItem
);
// Add the fault tolerant dfs roots in the specified domain
HRESULT AddFaultTolerantDfsRoots(
IN HTREEITEM i_hCurrentItem,
IN BSTR i_bstrDomainName
);
HRESULT AddSingleItemtoTV(
IN const BSTR i_bstrItemLabel,
IN const int i_iImageIndex,
IN const int i_iImageSelectedIndex,
IN const bool i_bChildren,
IN const NODETYPE i_NodeType,
IN HTREEITEM i_hItemParent = NULL
);
void ChangeIcon(
IN HTREEITEM hItem,
IN ICONTYPE IconType
);
HRESULT GetNodeInfo(
IN HTREEITEM hItem,
OUT BSTR* o_bstrName,
OUT NODETYPE* pNodeType
);
// Overiding the method of CDialogImpl.
BOOL EndDialog(IN int i_RetCode);
// Data members
private:
CBufferManager *m_pBufferManager;
CComBSTR m_bstrDfsRoot; // Store the selected Dfs Root here
HIMAGELIST m_hImageList; // The TV imagelist handle
NETNAMELIST m_50DomainList; // Pointer to the first 50 domain information
CComBSTR m_bstrDomainDfsRootsLabel;
CComBSTR m_bstrAllDfsRootsLabel;
};
#endif //__CONNECTTODIALOG_H_