DragonNest/Third/XTToolkitPro/Samples/UserInterface/GUI_Office11/multconv.h
2024-12-19 09:48:26 +08:00

139 lines
3.9 KiB
C++

// convert.h : header file
//
// This file is a part of the XTREME TOOLKIT PRO MFC class library.
// (c)1998-2008 Codejock Software, All Rights Reserved.
//
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
// CONSENT OF CODEJOCK SOFTWARE.
//
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
// SINGLE COMPUTER.
//
// CONTACT INFORMATION:
// support@codejock.com
// http://www.codejock.com
//
/////////////////////////////////////////////////////////////////////////////
#ifdef CONVERTERS
/////////////////////////////////////////////////////////////////////////////
// CConverter
typedef int (CALLBACK *LPFNOUT)(int cch, int nPercentComplete);
typedef int (CALLBACK *LPFNIN)(int flags, int nPercentComplete);
typedef BOOL (FAR PASCAL *PINITCONVERTER)(HWND hWnd, LPCSTR lpszModuleName);
typedef BOOL (FAR PASCAL *PISFORMATCORRECT)(HANDLE ghszFile, HANDLE ghszClass);
typedef int (FAR PASCAL *PFOREIGNTORTF)(HANDLE ghszFile, LPVOID lpv, HANDLE ghBuff,
HANDLE ghszClass, HANDLE ghszSubset, LPFNOUT lpfnOut);
typedef int (FAR PASCAL *PRTFTOFOREIGN)(HANDLE ghszFile, LPVOID lpv, HANDLE ghBuff,
HANDLE ghszClass, LPFNIN lpfnIn);
#endif
/////////////////////////////////////////////////////////////////////////////
// CTrackFile
class CTrackFile : public CFile
{
public:
//Construction
CTrackFile(CFrameWnd* pWnd);
~CTrackFile();
//Attributes
int m_nLastPercent;
DWORD m_dwLength;
CFrameWnd* m_pFrameWnd;
CString m_strComplete;
CString m_strWait;
CString m_strSaving;
//Operations
void OutputPercent(int nPercentComplete = 0);
void OutputString(LPCTSTR lpsz);
virtual UINT Read(void FAR* lpBuf, UINT nCount);
virtual void Write(const void FAR* lpBuf, UINT nCount);
};
class COEMFile : public CTrackFile
{
public:
COEMFile(CFrameWnd* pWnd);
virtual UINT Read(void FAR* lpBuf, UINT nCount);
virtual void Write(const void FAR* lpBuf, UINT nCount);
};
#ifdef CONVERTERS
class CConverter : public CTrackFile
{
public:
CConverter(LPCSTR pszLibName, CFrameWnd* pWnd = NULL);
protected:
CConverter(CFrameWnd* pWnd = NULL);
public:
//Attributes
int m_nPercent;
BOOL m_bDone;
BOOL m_bConvErr;
virtual ULONGLONG GetPosition() const;
// Operations
BOOL IsFormatCorrect(LPCTSTR pszFileName);
BOOL DoConversion();
virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags,
CFileException* pError = NULL);
void WaitForConverter();
void WaitForBuffer();
// Overridables
virtual LONG Seek(LONG lOff, UINT nFrom);
virtual ULONGLONG GetLength() const;
virtual UINT Read(void* lpBuf, UINT nCount);
virtual void Write(const void* lpBuf, UINT nCount);
virtual void Abort();
virtual void Flush();
virtual void Close();
// Unsupported
virtual CFile* Duplicate() const;
virtual void LockRange(DWORD dwPos, DWORD dwCount);
virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
virtual void SetLength(DWORD dwNewLen);
//Implementation
public:
~CConverter();
protected:
int m_nBytesAvail;
int m_nBytesWritten;
BYTE* m_pBuf;
HANDLE m_hEventFile;
HANDLE m_hEventConv;
BOOL m_bForeignToRtf;
HGLOBAL m_hBuff;
HGLOBAL m_hFileName;
void LoadFunctions();
HINSTANCE m_hLibCnv;
PINITCONVERTER m_pInitConverter;
PISFORMATCORRECT m_pIsFormatCorrect;
PFOREIGNTORTF m_pForeignToRtf;
PRTFTOFOREIGN m_pRtfToForeign;
int CALLBACK WriteOut(int cch, int nPercentComplete);
int CALLBACK ReadIn(int nPercentComplete);
static HGLOBAL StringToHGLOBAL(LPCSTR pstr);
static int CALLBACK WriteOutStatic(int cch, int nPercentComplete);
static int CALLBACK ReadInStatic(int flags, int nPercentComplete);
static UINT AFX_CDECL ConverterThread(LPVOID pParam);
static CConverter *m_pThis;
};
#endif
/////////////////////////////////////////////////////////////////////////////