TVDLG.H
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:5k
源码类别:
Windows编程
开发平台:
Visual C++
- ////////////////////////////////////////////////////////////////////////////
- //
- // 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__