windows-nt/Source/XPSP1/NT/admin/snapin/dsadmin/queryui.h

268 lines
6.8 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
//+----------------------------------------------------------------------------
//
// DS Administration MMC snapin.
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1999
//
// File: queryui.h
//
//--------------------------------------------------------------------------
#ifndef __QUERYUI_
#define __QUERYUI_
#include "query.h"
#include "dsfilter.h"
#include "helpids.h"
#include "uiutil.h"
#include <Cmnquery.h> // IQueryForm
/////////////////////////////////////////////////////////////////////////////
// CQueryPageBase
class CQueryPageBase : public CHelpDialog
{
// Construction
public:
CQueryPageBase(UINT nIDTemplate) : CHelpDialog(nIDTemplate) { };
virtual void Init() PURE;
virtual HRESULT GetQueryParams(LPDSQUERYPARAMS* ppDsQueryParams) PURE;
virtual HRESULT BuildQueryParams(LPDSQUERYPARAMS* ppDsQueryParams, LPWSTR pQuery) PURE;
virtual HRESULT ClearForm() {Init(); return S_OK;}
virtual HRESULT Enable(BOOL) { return S_OK; }
virtual HRESULT Persist(IPersistQuery*, BOOL) { return S_OK; }
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
// CStdQueryPage
class CStdQueryPage : public CQueryPageBase
{
// Construction
public:
CStdQueryPage(PCWSTR pszFilterPrefix) : CQueryPageBase(IDD_QUERY_STD_PAGE)
{
m_szFilterPrefix = pszFilterPrefix;
}
CStdQueryPage(UINT nDlgID, PCWSTR pszFilterPrefix) : CQueryPageBase(nDlgID)
{
m_szFilterPrefix = pszFilterPrefix;
}
virtual BOOL OnInitDialog();
virtual void DoContextHelp(HWND hWndControl);
afx_msg void OnNameComboChange();
afx_msg void OnDescriptionComboChange();
void SelectComboAssociatedWithData(UINT nCtrlID, LRESULT lData);
virtual void Init();
virtual HRESULT GetQueryParams(LPDSQUERYPARAMS* ppDsQueryParams);
virtual HRESULT BuildQueryParams(LPDSQUERYPARAMS* ppDsQueryParams, LPWSTR pQuery);
virtual HRESULT ClearForm() {Init(); return S_OK;}
virtual HRESULT Enable(BOOL) { return S_OK; }
virtual HRESULT Persist(IPersistQuery*, BOOL);
DECLARE_MESSAGE_MAP()
protected:
CString m_szFilterPrefix;
};
/////////////////////////////////////////////////////////////////////////////
// CUserComputerQueryPage
class CUserComputerQueryPage : public CStdQueryPage
{
// Construction
public:
//
// Note: this page can be used for both users and computers
//
CUserComputerQueryPage(UINT nDialogID, PCWSTR pszFilterPrefix)
: CStdQueryPage(nDialogID, pszFilterPrefix)
{
}
virtual BOOL OnInitDialog();
virtual void DoContextHelp(HWND hWndControl);
virtual void Init();
virtual HRESULT GetQueryParams(LPDSQUERYPARAMS* ppDsQueryParams);
virtual HRESULT Persist(IPersistQuery* pPersistQuery, BOOL fRead);
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
// CUserQueryPage
class CUserQueryPage : public CUserComputerQueryPage
{
// Construction
public:
//
// Note: this page can be used for both users and computers
//
CUserQueryPage(PCWSTR pszFilterPrefix)
: CUserComputerQueryPage(IDD_QUERY_USER_PAGE, pszFilterPrefix)
{
m_lLogonSelection = -1;
}
virtual BOOL OnInitDialog();
virtual void DoContextHelp(HWND hWndControl);
virtual void Init();
virtual HRESULT GetQueryParams(LPDSQUERYPARAMS* ppDsQueryParams);
virtual HRESULT Persist(IPersistQuery* pPersistQuery, BOOL fRead);
DECLARE_MESSAGE_MAP()
private:
LRESULT m_lLogonSelection;
};
/////////////////////////////////////////////////////////////////////////////
// CQueryFormBase
class ATL_NO_VTABLE CQueryFormBase :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CQueryFormBase, &CLSID_DSAdminQueryUIForm>,
public IQueryForm
{
public:
CQueryFormBase()
{
}
DECLARE_REGISTRY_CLSID()
//
// IQueryForm methods
//
STDMETHOD(Initialize)(THIS_ HKEY hkForm);
STDMETHOD(AddForms)(THIS_ LPCQADDFORMSPROC pAddFormsProc, LPARAM lParam);
STDMETHOD(AddPages)(THIS_ LPCQADDPAGESPROC pAddPagesProc, LPARAM lParam);
BEGIN_COM_MAP(CQueryFormBase)
COM_INTERFACE_ENTRY(IQueryForm)
END_COM_MAP()
};
//////////////////////////////////////////////////////////////////////////////
// CQueryDialog
class CQueryDialog : public CHelpDialog
{
public:
CQueryDialog(CSavedQueryNode* pQueryNode,
CFavoritesNode* pFavNode,
CDSComponentData* pComponentData,
BOOL bNewQuery = TRUE,
BOOL bImportQuery = FALSE);
~CQueryDialog();
virtual BOOL OnInitDialog();
virtual void OnOK();
virtual void DoContextHelp(HWND hWndControl);
afx_msg void OnBrowse();
afx_msg void OnEditQuery();
afx_msg void OnMultiLevelChange();
afx_msg void OnNameChange();
afx_msg void OnDescriptionChange();
afx_msg BOOL OnNeedToolTipText(UINT nCtrlID, NMHDR* pTTTStruct, LRESULT* pResult);
void SetDirty(BOOL bDirty = TRUE);
void SetQueryRoot(PCWSTR pszPath);
CSavedQueryNode* GetQueryNode() { return m_pQueryNode; }
CFavoritesNode* GetFavNode() { return m_pFavNode; }
void SetQueryFilterDisplay();
DECLARE_MESSAGE_MAP()
private:
CSavedQueryNode* m_pQueryNode;
CFavoritesNode* m_pFavNode;
CDSComponentData* m_pComponentData;
CString m_szName;
CString m_szOriginalName;
CString m_szDescription;
CString m_szQueryRoot;
CString m_szQueryFilter;
BOOL m_bMultiLevel;
BOOL m_bNewQuery;
BOOL m_bImportQuery;
BOOL m_bInit;
BOOL m_bDirty;
BOOL m_bLastLogonFilter;
DWORD m_dwLastLogonData;
//
// for presisting DSQuery dialog info
//
CComObject<CDSAdminPersistQueryFilterImpl>* m_pPersistQueryImpl;
};
/////////////////////////////////////////////////////////////////////////////////
// CFavoritesNodePropertyPage
class CFavoritesNodePropertyPage : public CHelpPropertyPage
{
public:
CFavoritesNodePropertyPage(CFavoritesNode* pFavNode,
LONG_PTR lNotifyHandle,
CDSComponentData* pComponentData,
LPDATAOBJECT pDataObject)
: m_pFavNode(pFavNode),
m_lNotifyHandle(lNotifyHandle),
m_pComponentData(pComponentData),
m_pDataObject(pDataObject),
CHelpPropertyPage(IDD_FAVORITES_PROPERTY_PAGE)
{
}
~CFavoritesNodePropertyPage()
{
if (m_lNotifyHandle != NULL)
{
MMCFreeNotifyHandle(m_lNotifyHandle);
m_lNotifyHandle = NULL;
}
}
DECLARE_MESSAGE_MAP()
protected:
virtual void DoContextHelp(HWND hWndControl);
virtual BOOL OnInitDialog();
virtual BOOL OnApply();
afx_msg void OnDescriptionChange();
private:
CFavoritesNode* m_pFavNode;
CDSComponentData* m_pComponentData;
LONG_PTR m_lNotifyHandle;
CString m_szOldDescription;
LPDATAOBJECT m_pDataObject;
};
#endif // __QUERYUI_