MULTCONV.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:4k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // convert.h : header file
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12. #ifdef CONVERTERS
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CConverter
  15. typedef int (CALLBACK *LPFNOUT)(int cch, int nPercentComplete);
  16. typedef int (CALLBACK *LPFNIN)(int flags, int nPercentComplete);
  17. typedef BOOL (FAR PASCAL *PINITCONVERTER)(HWND hWnd, LPCSTR lpszModuleName);
  18. typedef BOOL (FAR PASCAL *PISFORMATCORRECT)(HANDLE ghszFile, HANDLE ghszClass);
  19. typedef int (FAR PASCAL *PFOREIGNTORTF)(HANDLE ghszFile, LPVOID lpv, HANDLE ghBuff,
  20. HANDLE ghszClass, HANDLE ghszSubset, LPFNOUT lpfnOut);
  21. typedef int (FAR PASCAL *PRTFTOFOREIGN)(HANDLE ghszFile, LPVOID lpv, HANDLE ghBuff,
  22. HANDLE ghszClass, LPFNIN lpfnIn);
  23. #endif
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CTrackFile
  26. class CTrackFile : public CFile
  27. {
  28. public:
  29. //Construction
  30. CTrackFile(CFrameWnd* pWnd);
  31. ~CTrackFile();
  32. //Attributes
  33. int m_nLastPercent;
  34. DWORD m_dwLength;
  35. CFrameWnd* m_pFrameWnd;
  36. CString m_strComplete;
  37. CString m_strWait;
  38. CString m_strSaving;
  39. //Operations
  40. void OutputPercent(int nPercentComplete = 0);
  41. void OutputString(LPCTSTR lpsz);
  42. virtual UINT Read(void FAR* lpBuf, UINT nCount);
  43. virtual void Write(const void FAR* lpBuf, UINT nCount);
  44. };
  45. class COEMFile : public CTrackFile
  46. {
  47. public:
  48. COEMFile(CFrameWnd* pWnd);
  49. virtual UINT Read(void FAR* lpBuf, UINT nCount);
  50. virtual void Write(const void FAR* lpBuf, UINT nCount);
  51. };
  52. #ifdef CONVERTERS
  53. class CConverter : public CTrackFile
  54. {
  55. public:
  56. CConverter(LPCSTR pszLibName, CFrameWnd* pWnd = NULL);
  57. protected:
  58. CConverter(CFrameWnd* pWnd = NULL);
  59. public:
  60. //Attributes
  61. int m_nPercent;
  62. BOOL m_bDone;
  63. BOOL m_bConvErr;
  64. virtual DWORD GetPosition() const;
  65. // Operations
  66. BOOL IsFormatCorrect(LPCTSTR pszFileName);
  67. BOOL DoConversion();
  68. virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags,
  69. CFileException* pError = NULL);
  70. void WaitForConverter();
  71. void WaitForBuffer();
  72. // Overridables
  73. virtual LONG Seek(LONG lOff, UINT nFrom);
  74. virtual DWORD GetLength() const;
  75. virtual UINT Read(void* lpBuf, UINT nCount);
  76. virtual void Write(const void* lpBuf, UINT nCount);
  77. virtual void Abort();
  78. virtual void Flush();
  79. virtual void Close();
  80. // Unsupported
  81. virtual CFile* Duplicate() const;
  82. virtual void LockRange(DWORD dwPos, DWORD dwCount);
  83. virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
  84. virtual void SetLength(DWORD dwNewLen);
  85. //Implementation
  86. public:
  87. ~CConverter();
  88. protected:
  89. int m_nBytesAvail;
  90. int m_nBytesWritten;
  91. BYTE* m_pBuf;
  92. HANDLE m_hEventFile;
  93. HANDLE m_hEventConv;
  94. BOOL m_bForeignToRtf;
  95. HGLOBAL m_hBuff;
  96. HGLOBAL m_hFileName;
  97. void LoadFunctions();
  98. HINSTANCE m_hLibCnv;
  99. PINITCONVERTER m_pInitConverter;
  100. PISFORMATCORRECT m_pIsFormatCorrect;
  101. PFOREIGNTORTF m_pForeignToRtf;
  102. PRTFTOFOREIGN m_pRtfToForeign;
  103. int CALLBACK WriteOut(int cch, int nPercentComplete);
  104. int CALLBACK ReadIn(int nPercentComplete);
  105. static HGLOBAL StringToHGLOBAL(LPCSTR pstr);
  106. static int CALLBACK WriteOutStatic(int cch, int nPercentComplete);
  107. static int CALLBACK ReadInStatic(int flags, int nPercentComplete);
  108. static UINT ConverterThread(LPVOID pParam);
  109. static CConverter *m_pThis;
  110. };
  111. #endif
  112. /////////////////////////////////////////////////////////////////////////////