Leaked source code of windows server 2003
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

// 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
/////////////////////////////////////////////////////////////////////////////