Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

250 lines
9.3 KiB

/////////////////////////////////////////////////////////////////////////////
// Copyright (C) 1993-1998 Microsoft Corporation. All Rights Reserved.
//
// MODULE: find.h
//
// PURPOSE:
//
#pragma once
/////////////////////////////////////////////////////////////////////////////
// Forward Definitions
//
#include "storutil.h"
#include "msident.h"
class CStatusBar;
class CViewMenu;
interface IMessageList;
/////////////////////////////////////////////////////////////////////////////
// Types
//
typedef struct tagFINDMSG
{
ULONG flags;
LPTSTR pszFromHeader;
LPTSTR pszSubject;
LPTSTR pszRecip;
LPTSTR pszBody;
FILETIME ftDateFrom;
FILETIME ftDateTo;
} FINDMSG;
/////////////////////////////////////////////////////////////////////////////
// FINDERPARAMS
//
// Used to provide initialization information to the finder class
//
typedef struct tagFINDERPARAMS
{
FOLDERTYPE ftType;
FOLDERID idFolder; // Currently Selected Folder
} FINDERPARAMS, * PFINDERPARAMS;
/////////////////////////////////////////////////////////////////////////////
// Public Functions
//
HRESULT DoFindMsg(FOLDERID idFolder, FOLDERTYPE ftFolder);
HRESULT CopyFindInfo(FINDINFO *pFindSrc, FINDINFO *pFindDst);
void FreeFindInfo(FINDINFO *pFindInfo);
void CloseFinderTreads(void);
/////////////////////////////////////////////////////////////////////////////
// Class CPumpRefCount
//
class CPumpRefCount : public IUnknown
{
public:
CPumpRefCount() {m_cRef = 1;}
~CPumpRefCount() {PostQuitMessage(0);}
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj);
STDMETHOD_(ULONG, AddRef)(THIS);
STDMETHOD_(ULONG, Release)(THIS);
private:
ULONG m_cRef;
};
/////////////////////////////////////////////////////////////////////////////
// Class CFindDlg
//
class CFindDlg : public IDispatch,
public IOleCommandTarget,
public IStoreCallback,
public ITimeoutCallback,
public IIdentityChangeNotify
{
public:
/////////////////////////////////////////////////////////////////////////
// Construction and Initialization
//
CFindDlg();
~CFindDlg();
void Show(PFINDERPARAMS pfindparams);
void HandleMessage(LPMSG lpmsg);
/////////////////////////////////////////////////////////////////////////
// IUnknown
//
STDMETHODIMP QueryInterface(THIS_ REFIID riid, LPVOID *ppvObj);
STDMETHOD_(ULONG, AddRef)(THIS);
STDMETHOD_(ULONG, Release)(THIS);
/////////////////////////////////////////////////////////////////////////
// IDispatch
//
STDMETHODIMP GetIDsOfNames(REFIID riid, OLECHAR **rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) { return (E_NOTIMPL); }
STDMETHODIMP GetTypeInfo(unsigned int iTInfo, LCID lcid, ITypeInfo **ppTInfo) { return (E_NOTIMPL); }
STDMETHODIMP GetTypeInfoCount(unsigned int FAR* pctinfo) { return (E_NOTIMPL); }
STDMETHODIMP Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags,
DISPPARAMS* pDispParams, VARIANT* pVarResult,
EXCEPINFO* pExcepInfo, unsigned int* puArgErr);
/////////////////////////////////////////////////////////////////////////
// IOleCommandTarget
//
STDMETHODIMP QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[],
OLECMDTEXT *pCmdText);
STDMETHODIMP Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdExecOpt,
VARIANTARG *pvaIn, VARIANTARG *pvaOut);
/////////////////////////////////////////////////////////////////////////
// IStoreCallback methods
//
STDMETHODIMP OnBegin(STOREOPERATIONTYPE tyOperation, LPSTOREOPERATIONINFO pOpInfo, IOperationCancel *pCancel);
STDMETHODIMP OnProgress(STOREOPERATIONTYPE tyOperation, DWORD dwCurrent, DWORD dwMax, LPCSTR pszStatus);
STDMETHODIMP OnTimeout(LPINETSERVER pServer, LPDWORD pdwTimeout, IXPTYPE ixpServerType);
STDMETHODIMP CanConnect(LPCSTR pszAccountId, DWORD dwFlags);
STDMETHODIMP OnLogonPrompt(LPINETSERVER pServer, IXPTYPE ixpServerType);
STDMETHODIMP OnComplete(STOREOPERATIONTYPE tyOperation, HRESULT hrComplete, LPSTOREOPERATIONINFO pOpInfo, LPSTOREERROR pErrorInfo);
STDMETHODIMP OnPrompt(HRESULT hrError, LPCTSTR pszText, LPCTSTR pszCaption, UINT uType, INT *piUserResponse);
STDMETHODIMP GetParentWindow(DWORD dwReserved, HWND *phwndParent);
/////////////////////////////////////////////////////////////////////////
// ITimeoutCallback
//
STDMETHODIMP OnTimeoutResponse(TIMEOUTRESPONSE eResponse);
/////////////////////////////////////////////////////////////////////////
// IIdentityChangeNotify
//
STDMETHODIMP QuerySwitchIdentities();
STDMETHODIMP SwitchIdentities();
STDMETHODIMP IdentityInformationChanged(DWORD dwType);
private:
/////////////////////////////////////////////////////////////////////////
// Message Handling
//
INT_PTR DlgProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp);
BOOL OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);
void OnSize(HWND hwnd, UINT state, int cx, int cy);
void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
void OnInitMenuPopup(HWND hwnd, HMENU hmenuPopup, UINT uPos, BOOL fSystemMenu);
void OnGetMinMaxInfo(HWND hwnd, LPMINMAXINFO lpmmi);
void OnWinIniChange(HWND hwnd, LPCTSTR lpszSectionName);
void OnMenuSelect(HWND hwnd, HMENU hmenu, int item, HMENU hmenuPopup, UINT flags);
void OnDestroy(HWND hwnd);
void OnPaint(HWND hwnd);
LRESULT OnNotify(HWND hwnd, int idFrom, LPNMHDR pnmhdr);
HRESULT CmdOpen(DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG *pvaIn, VARIANTARG *pvaOut);
HRESULT CmdOpenFolder(DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG *pvaIn, VARIANTARG *pvaOut);
HRESULT CmdReplyForward(DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG *pvaIn, VARIANTARG *pvaOut);
HRESULT CmdCancelMessage(DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG *pvaIn, VARIANTARG *pvaOut);
HRESULT CmdFindNow(DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG *pvaIn, VARIANTARG *pvaOut);
HRESULT CmdStop(DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG *pvaIn, VARIANTARG *pvaOut);
HRESULT CmdReset(DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG *pvaIn, VARIANTARG *pvaOut);
HRESULT CmdBrowseForFolder(DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG *pvaIn, VARIANTARG *pvaOut);
HRESULT CmdBlockSender(DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG *pvaIn, VARIANTARG *pvaOut);
HRESULT CmdCreateRule(DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG *pvaIn, VARIANTARG *pvaOut);
HRESULT CmdCombineAndDecode(DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG *pvaIn, VARIANTARG *pvaOut);
static INT_PTR CALLBACK ExtFindMsgDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
/////////////////////////////////////////////////////////////////////////
// Utility Functions
//
BOOL _IsFindEnabled(HWND hwnd);
void _ShowResults(HWND hwnd);
void _OnFindNow(HWND hwnd);
FOLDERID _GetCurSel(HWND hwnd);
void _StartFind(FOLDERID idFolder, BOOL fSubFolders);
BOOL _GetFindValues(HWND hwnd, FINDINFO *pfi);
void _SetFindValues(HWND hwnd, FINDINFO *pfi);
void _FreeFindInfo(FINDINFO *pfi);
void _SetFindIntlFont(HWND hwnd);
void _InitSizingInfo(HWND hwnd);
/////////////////////////////////////////////////////////////////////////
// Private Class Information
//
private:
// Basic Information
ULONG m_cRef;
HWND m_hwnd;
FINDINFO m_rFindInfo;
HWND m_hwndList;
HTIMEOUT m_hTimeout;
HACCEL m_hAccel;
// Groovy Interface Pointers
CStatusBar *m_pStatusBar;
IMessageList *m_pMsgList;
IOleCommandTarget *m_pMsgListCT;
IOperationCancel *m_pCancel;
CPumpRefCount *m_pPumpRefCount;
HWNDLIST m_hlDisabled;
// Sizing information
int m_xBtn;
int m_yBrowse;
int m_dxBtnGap;
int m_dxBtn;
int m_yBtn;
int m_dyBtn;
int m_cxEdit;
int m_xEdit;
int m_cyEdit;
int m_yView;
int m_cxDlgDef;
int m_cyDlgFull;
int m_xIncSub;
int m_yIncSub;
int m_cxFolder;
int m_cxStatic;
// State
BOOL m_fShowResults;
BOOL m_fAbort;
BOOL m_fClose;
BOOL m_fInProgress;
ULONG m_ulPct;
BOOL m_fFindComplete;
POINT m_ptDragMin;
HICON m_hIcon,
m_hIconSm;
DWORD m_dwCookie;
BOOL m_fProgressBar,
m_fInternal;
DWORD m_dwIdentCookie;
// For View.Current View menu
CViewMenu *m_pViewMenu;
};