MULTCONV.H
上传用户:aakk678
上传日期:2022-07-09
资源大小:406k
文件大小:4k
源码类别:

界面编程

开发平台:

Visual C++

  1. // convert.h : header file
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1997 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. public:
  28. //Construction
  29. CTrackFile(CFrameWnd* pWnd);
  30. ~CTrackFile();
  31. //Attributes
  32. int m_nLastPercent;
  33. DWORD m_dwLength;
  34. CFrameWnd* m_pFrameWnd;
  35. CString m_strComplete;
  36. CString m_strWait;
  37. CString m_strSaving;
  38. //Operations
  39. void OutputPercent(int nPercentComplete = 0);
  40. void OutputString(LPCTSTR lpsz);
  41. virtual UINT Read(void FAR* lpBuf, UINT nCount);
  42. virtual void Write(const void FAR* lpBuf, UINT nCount);
  43. };
  44. class COEMFile : public CTrackFile
  45. {
  46. public:
  47. COEMFile(CFrameWnd* pWnd);
  48. virtual UINT Read(void FAR* lpBuf, UINT nCount);
  49. virtual void Write(const void FAR* lpBuf, UINT nCount);
  50. };
  51. #ifdef CONVERTERS
  52. class CConverter : public CTrackFile
  53. {
  54. public:
  55. CConverter(LPCSTR pszLibName, CFrameWnd* pWnd = NULL);
  56. protected:
  57. CConverter(CFrameWnd* pWnd = NULL);
  58. public:
  59. //Attributes
  60. int m_nPercent;
  61. BOOL m_bDone;
  62. BOOL m_bConvErr;
  63. virtual DWORD GetPosition() const;
  64. // Operations
  65. BOOL IsFormatCorrect(LPCTSTR pszFileName);
  66. BOOL DoConversion();
  67. virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags,
  68. CFileException* pError = NULL);
  69. void WaitForConverter();
  70. void WaitForBuffer();
  71. // Overridables
  72. virtual LONG Seek(LONG lOff, UINT nFrom);
  73. virtual DWORD GetLength() const;
  74. virtual UINT Read(void* lpBuf, UINT nCount);
  75. virtual void Write(const void* lpBuf, UINT nCount);
  76. virtual void Abort();
  77. virtual void Flush();
  78. virtual void Close();
  79. // Unsupported
  80. virtual CFile* Duplicate() const;
  81. virtual void LockRange(DWORD dwPos, DWORD dwCount);
  82. virtual void UnlockRange(DWORD dwPos, DWORD dwCount);
  83. virtual void SetLength(DWORD dwNewLen);
  84. //Implementation
  85. public:
  86. ~CConverter();
  87. protected:
  88. int m_nBytesAvail;
  89. int m_nBytesWritten;
  90. BYTE* m_pBuf;
  91. HANDLE m_hEventFile;
  92. HANDLE m_hEventConv;
  93. BOOL m_bForeignToRtf;
  94. HGLOBAL m_hBuff;
  95. HGLOBAL m_hFileName;
  96. void LoadFunctions();
  97. HINSTANCE m_hLibCnv;
  98. PINITCONVERTER m_pInitConverter;
  99. PISFORMATCORRECT m_pIsFormatCorrect;
  100. PFOREIGNTORTF m_pForeignToRtf;
  101. PRTFTOFOREIGN m_pRtfToForeign;
  102. int CALLBACK WriteOut(int cch, int nPercentComplete);
  103. int CALLBACK ReadIn(int nPercentComplete);
  104. static HGLOBAL StringToHGLOBAL(LPCSTR pstr);
  105. static int CALLBACK WriteOutStatic(int cch, int nPercentComplete);
  106. static int CALLBACK ReadInStatic(int flags, int nPercentComplete);
  107. static UINT ConverterThread(LPVOID pParam);
  108. static CConverter *m_pThis;
  109. };
  110. #endif
  111. /////////////////////////////////////////////////////////////////////////////