|
|
#ifndef _CONFLNK_HPP_
#define _CONFLNK_HPP_
// ConfLink flags
typedef enum _conflnkflags { CONFLNK_FL_DIRTY = 0x0001,
ALL_CONFLNK_FLAGS = CONFLNK_FL_DIRTY } CONFLNKFLAGS;
class CConfLink : public RefCount, public IDataObject, public IPersistFile, public IPersistStream, public IShellExtInit, // public IShellPropSheetExt,
public IConferenceLink { private: DWORD m_dwFlags; DWORD m_dwTransport; DWORD m_dwCallFlags; PSTR m_pszFile; PSTR m_pszName; PSTR m_pszAddress; PSTR m_pszRemoteConfName;
// Data transfer
DWORD STDMETHODCALLTYPE GetFileContentsSize(void); HRESULT STDMETHODCALLTYPE TransferFileContents(PFORMATETC pfmtetc, PSTGMEDIUM pstgmed);
#if 0
HRESULT STDMETHODCALLTYPE TransferText(PFORMATETC pfmtetc, PSTGMEDIUM pstgmed); HRESULT STDMETHODCALLTYPE TransferFileGroupDescriptor(PFORMATETC pfmtetc, PSTGMEDIUM pstgmed); HRESULT STDMETHODCALLTYPE TransferConfLink(PFORMATETC pfmtetc, PSTGMEDIUM pstgmed); #endif // 0
public: CConfLink(OBJECTDESTROYEDPROC); ~CConfLink(void);
// IDataObject methods
HRESULT STDMETHODCALLTYPE GetData(PFORMATETC pfmtetcIn, PSTGMEDIUM pstgmed); HRESULT STDMETHODCALLTYPE GetDataHere(PFORMATETC pfmtetc, PSTGMEDIUM pstgpmed); HRESULT STDMETHODCALLTYPE QueryGetData(PFORMATETC pfmtetc); HRESULT STDMETHODCALLTYPE GetCanonicalFormatEtc(PFORMATETC pfmtetcIn, PFORMATETC pfmtetcOut); HRESULT STDMETHODCALLTYPE SetData(PFORMATETC pfmtetc, PSTGMEDIUM pstgmed, BOOL bRelease); HRESULT STDMETHODCALLTYPE EnumFormatEtc(DWORD dwDirection, PIEnumFORMATETC *ppienumFormatEtc); HRESULT STDMETHODCALLTYPE DAdvise(PFORMATETC pfmtetc, DWORD dwAdviseFlags, PIAdviseSink piadvsink, PDWORD pdwConnection); HRESULT STDMETHODCALLTYPE DUnadvise(DWORD dwConnection); HRESULT STDMETHODCALLTYPE EnumDAdvise(PIEnumSTATDATA *ppienumStatData);
// IPersist methods
HRESULT STDMETHODCALLTYPE GetClassID(PCLSID pclsid);
// IPersistFile methods
HRESULT STDMETHODCALLTYPE IsDirty(void); HRESULT STDMETHODCALLTYPE Save(LPCOLESTR pcwszFileName, BOOL bRemember); HRESULT STDMETHODCALLTYPE SaveCompleted(LPCOLESTR pcwszFileName); HRESULT STDMETHODCALLTYPE Load(LPCOLESTR pcwszFileName, DWORD dwMode); HRESULT STDMETHODCALLTYPE GetCurFile(LPOLESTR *ppwszFileName);
// IPersistStream methods
HRESULT STDMETHODCALLTYPE Save(PIStream pistr, BOOL bClearDirty); HRESULT STDMETHODCALLTYPE Load(PIStream pistr); HRESULT STDMETHODCALLTYPE GetSizeMax(PULARGE_INTEGER pcbSize);
// IShellExtInit methods
HRESULT STDMETHODCALLTYPE Initialize(LPCITEMIDLIST pcidlFolder, LPDATAOBJECT pidobj, HKEY hkeyProgID);
// IShellPropSheetExt methods
// HRESULT STDMETHODCALLTYPE AddPages(LPFNADDPROPSHEETPAGE pfnAddPage, LPARAM lParam);
// HRESULT STDMETHODCALLTYPE ReplacePage(UINT uPageID, LPFNADDPROPSHEETPAGE pfnReplaceWith, LPARAM lParam);
// IConferenceLink methods
HRESULT STDMETHODCALLTYPE SetName(PCSTR pcszName); HRESULT STDMETHODCALLTYPE GetName(PSTR *ppszName); HRESULT STDMETHODCALLTYPE SetAddress(PCSTR pcszAddress); HRESULT STDMETHODCALLTYPE GetAddress(PSTR *ppszAddress); HRESULT STDMETHODCALLTYPE SetRemoteConfName(PCSTR pcszRemoteConfName); HRESULT STDMETHODCALLTYPE GetRemoteConfName(PSTR *ppszRemoteConfName); HRESULT STDMETHODCALLTYPE SetCallFlags(DWORD dwCallFlags); HRESULT STDMETHODCALLTYPE GetCallFlags(DWORD *pdwCallFlags); HRESULT STDMETHODCALLTYPE SetTransport(DWORD dwTransport); HRESULT STDMETHODCALLTYPE GetTransport(DWORD *pdwTransport); HRESULT STDMETHODCALLTYPE InvokeCommand(PCLINVOKECOMMANDINFO pclici);
// IUnknown methods
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, PVOID *ppvObj); ULONG STDMETHODCALLTYPE AddRef(void); ULONG STDMETHODCALLTYPE Release(void);
// other methods
HRESULT STDMETHODCALLTYPE SaveToFile(PCSTR pcszFile, BOOL bRemember); HRESULT STDMETHODCALLTYPE LoadFromFile(PCSTR pcszFile, BOOL bRemember); HRESULT STDMETHODCALLTYPE GetCurFile(PSTR pszFile, UINT ucbLen); HRESULT STDMETHODCALLTYPE Dirty(BOOL bDirty);
#ifdef DEBUG
void STDMETHODCALLTYPE Dump(void);
#endif
// friends
#ifdef DEBUG
friend BOOL IsValidPCConfLink(const CConfLink *pcConfLink);
#endif
};
HRESULT shellCallto ( const TCHAR * const url, const bool notifyOnError );
DECLARE_STANDARD_TYPES(CConfLink);
// in dataobj.cpp:
PUBLIC_CODE BOOL InitDataObjectModule(void);
// in conflnk.cpp:
PUBLIC_CODE BOOL AnyMeat(PCSTR pcsz); PUBLIC_CODE BOOL DataCopy(PCBYTE pcbyteSrc, ULONG ulcbLen, PBYTE *ppbyteDest); PUBLIC_CODE BOOL StringCopy(PCSTR pcszSrc, PSTR *ppszCopy); PUBLIC_CODE void MyLStrCpyN(PSTR pszDest, PCSTR pcszSrc, int ncb); PUBLIC_CODE BOOL GetConfLinkDefaultVerb(PSTR pszDefaultVerbBuf, UINT ucDefaultVerbBufLen); PUBLIC_CODE LRESULT GetRegKeyValue(HKEY hkeyParent, PCSTR pcszSubKey, PCSTR pcszValue, PDWORD pdwValueType, PBYTE pbyteBuf, PDWORD pdwcbBufLen); PUBLIC_CODE LRESULT GetRegKeyStringValue( HKEY hkeyParent, PCSTR pcszSubKey, PCSTR pcszValue, PSTR pszBuf, PDWORD pdwcbBufLen); PUBLIC_CODE LRESULT GetDefaultRegKeyValue( HKEY hkeyParent, PCSTR pcszSubKey, PSTR pszBuf, PDWORD pdwcbBufLen); PUBLIC_CODE BOOL GetClassDefaultVerb( PCSTR pcszClass, PSTR pszDefaultVerbBuf, UINT ucDefaultVerbBufLen); PUBLIC_CODE HRESULT MyReleaseStgMedium(PSTGMEDIUM pstgmed);
extern "C" { void WINAPI OpenConfLink(HWND hwndParent, HINSTANCE hinst, PSTR pszCmdLine, int nShowCmd); }
#endif // _CONFLNK_HPP_
|