home *** CD-ROM | disk | FTP | other *** search
- ////////////////////////////////////////////////////////////////////////////
- //
- // TVDLG.H
- //
- // Copyright 1986-1996 Microsoft Corporation. All Rights Reserved.
- ////////////////////////////////////////////////////////////////////////////
-
- #ifndef __TVDLG__H__
- #define __TVDLG__H__
-
-
- enum { iEID, iDispName, iSubfldrs, nhtProps};
- static SizedSPropTagArray(nhtProps, spthtProps) =
- { nhtProps,
- { PR_ENTRYID,
- PR_DISPLAY_NAME,
- PR_SUBFOLDERS
- }
- };
-
- #define Align4(_cb) (((_cb) + 3) & ~3)
-
- extern LPSTR g_szNoFolderName;
- extern LPSTR g_szAllStores;
-
- class CTVNodeFactory;
- class CChsFldDlg;
-
-
- /////////////////////////////////////////////////////////////////////////
- // CTVNode
-
- class CTVNode;
- typedef CTVNode * LPTVNODE;
-
- class CTVNode
- {
-
- friend CTVNodeFactory;
- friend HTREEITEM HtiFindChild(HWND hwTreeCtl, HTREEITEM hti, ULONG cb,
- LPENTRYID pbEID, CChsFldDlg *pCFDlg, LPTVNODE *ppNode);
-
-
- public:
- LPSTR GetName(void);
- HRESULT HrExpand(CChsFldDlg * pCFDlg);
- HRESULT HrGetFolder(CChsFldDlg * pCFDlg, LPMAPIFOLDER * ppfld,
- LPMDB *ppmdb);
-
- void SetHandle(HTREEITEM hItem) { m_htiMe = hItem;}
- void SetKidsLoaded(BOOL fLoaded) { m_fKidsLoaded = fLoaded;}
-
- HRESULT HrNewFolder(CChsFldDlg * pCFDlg, LPSTR szFldName);
-
- static LPVOID operator new( size_t cb );
- static VOID operator delete( LPVOID pv );
-
- void Write(BOOL fWrite, LONG iLevel, LPBYTE * ppb);
-
- ~CTVNode();
-
- private:
-
- //can only be created in CTVNodeFactory::HrCreateNode
- CTVNode(LPSPropValue pvals, ULONG cprops, LPMDB pmdb);
-
- HRESULT HrOpenMDB(CChsFldDlg * pCFDlg);
- HRESULT HrOpenFolder(CChsFldDlg * pCFDlg);
-
- HTREEITEM m_htiMe;
- LPSPropValue m_pval;
- BOOL m_fKidsLoaded;
- LPMAPIFOLDER m_pfld;
- CTVNode *m_pNext;
- LPMDB m_pmdb;
- };
-
-
-
-
- //
- // CTVNode::GetName
- //
- inline LPSTR CTVNode::GetName(void)
- {
-
- if(m_pval[iDispName].ulPropTag == PR_DISPLAY_NAME)
- return m_pval[iDispName].Value.lpszA;
- else
- return g_szNoFolderName;
- }
-
-
- ////////////////////////////////////////////////////////////////////////
- // CTVNodeFactory
-
- class CTVNodeFactory
- {
- public:
- HRESULT HrCreateNode(LPSPropValue pval, ULONG cVals, LPMDB pmdb,
- LPTVNODE * pptvnode);
-
- CTVNodeFactory();
- ~CTVNodeFactory();
-
- private:
- void Insert(CTVNode * ptvnode);
-
- LPTVNODE m_pHead;
- };
-
-
- ////////////////////////////////////////////////////////////////////////
- // CChsFldDlg
-
- class CChsFldDlg
- {
- public:
- HRESULT HrPick(LPCTSTR lpTemplateName, HWND hWnd,
- DLGPROC pfnDlgProc, LPMAPIFOLDER * ppfld, LPMDB *ppmdb);
- HRESULT HrInitTree(HWND hDlg, HWND hwTreeCtl);
- HRESULT HrLoadRoots(void);
- HRESULT HrInsertRoot(LPSPropValue pval);
- BOOL IsTreeRoot(HTREEITEM hti) { return (hti == m_hiRoot); }
-
- int IndAllStores(void) { return m_iIconAllStores; }
- int IndRootFld(void) { return m_iIconRootFld; }
- int IndOpenFld(void) { return m_iIconOpenFld; }
- int IndClsdFld(void) { return m_iIconClsdFld; }
- HWND hwDialog(void) { return m_hDlg; }
- HWND hwTreeCtl(void) { return m_hwTreeCtl; }
-
- LPMAPISESSION Session(void) { return m_pses; }
-
-
- HINSTANCE hInst(void) { return m_hInst; }
-
- HRESULT HrCreateNode(LPSPropValue pval, ULONG cvals, LPMDB pmdb,
- LPTVNODE * ppNode)
- { return m_NodeFactory.HrCreateNode(pval, cvals, pmdb, ppNode);}
-
- void SetFolder(LPMAPIFOLDER plfd, LPMDB pmdb);
- void SetError(HRESULT hr) { m_hr = hr;}
-
- HRESULT HrSaveTreeState(void);
- HRESULT HrRestoreTreeState(void);
-
- CChsFldDlg(LPMAPISESSION pses, HINSTANCE hInst, ULONG * pcb, LPBYTE * ppb);
- ~CChsFldDlg();
-
- CLastError m_lsterr;
-
- private:
-
- HRESULT HrSaveTreeStateEx(BOOL fWrite, ULONG * pcb, LPBYTE * ppb);
- HRESULT HrRestoreTreeState(ULONG cb, LPBYTE pb);
-
- LPMAPISESSION m_pses;
- LPMAPIFOLDER m_pfld;
- LPMDB m_pmdb;
- HRESULT m_hr;
- HTREEITEM m_hiRoot;
- HINSTANCE m_hInst;
- HWND m_hDlg;
- HWND m_hwTreeCtl;
-
- HIMAGELIST m_hIml;
- int m_iIconAllStores;
- int m_iIconRootFld;
- int m_iIconOpenFld;
- int m_iIconClsdFld;
-
- ULONG *m_pcbState;
- LPBYTE *m_ppbState;
-
- CTVNodeFactory m_NodeFactory;
-
- };
-
-
- HTREEITEM AddOneItem( HTREEITEM hParent, HTREEITEM hInsAfter,
- int iImage, int iImageSel, HWND hwndTree, LPTVNODE pNode, int cKids);
-
-
- #endif //__TVDLG__H__
-