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.
157 lines
4.6 KiB
157 lines
4.6 KiB
// convert.h : header file
|
|
//
|
|
// This is a part of the Microsoft Foundation Classes C++ library.
|
|
// Copyright (C) 1992-1995 Microsoft Corporation
|
|
// All rights reserved.
|
|
//
|
|
// This source code is only intended as a supplement to the
|
|
// Microsoft Foundation Classes Reference and related
|
|
// electronic documentation provided with the library.
|
|
// See these sources for detailed information regarding the
|
|
// Microsoft Foundation Classes product.
|
|
|
|
#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);
|
|
typedef HGLOBAL (FAR PASCAL *PREGISTERAPP)(long lFlags, void *lpRegApp);
|
|
|
|
|
|
//
|
|
// Some defines taken from the converter group's convapi.h
|
|
//
|
|
|
|
#define fRegAppSupportNonOem 0x00000008 // supports non-Oem filenames
|
|
#define RegAppOpcodeCharset 0x03 // for REGAPPRET
|
|
|
|
|
|
#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(LPCTSTR pszLibName, CFrameWnd* pWnd = NULL);
|
|
|
|
public:
|
|
//Attributes
|
|
int m_nPercent;
|
|
BOOL m_bDone;
|
|
BOOL m_bConvErr;
|
|
virtual DWORD 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 DWORD 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;
|
|
HANDLE m_hEventFile;
|
|
HANDLE m_hEventConv;
|
|
BOOL m_bForeignToRtf; // True to convert to RTF, else from
|
|
HGLOBAL m_hBuff; // Buffer for converter data
|
|
BYTE* m_pBuf; // Pointer to m_hBuff data
|
|
HGLOBAL m_hFileName; // File to convert
|
|
HINSTANCE m_hLibCnv; // The converter dll
|
|
BOOL m_bUseOEM; // TRUE to use OEM filenames
|
|
|
|
// Entry points into the converter dll
|
|
|
|
PINITCONVERTER m_pInitConverter;
|
|
PISFORMATCORRECT m_pIsFormatCorrect;
|
|
PFOREIGNTORTF m_pForeignToRtf;
|
|
PRTFTOFOREIGN m_pRtfToForeign;
|
|
PREGISTERAPP m_pRegisterApp;
|
|
|
|
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;
|
|
|
|
void LoadFunctions();
|
|
void NegotiateForNonOEM();
|
|
|
|
#ifndef _X86_
|
|
|
|
//We need to change the error mode when using the write converter
|
|
//to fix some alignment problems caused by the write converter. These
|
|
//problems do not affect x86 platforms.
|
|
|
|
UINT m_uPrevErrMode ;
|
|
|
|
#endif
|
|
};
|
|
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|