bmp.h
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 3k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. #ifndef _BMP_H
  2. #define _BMP_H
  3. ////////////////////////////////////////////////////////////////////////////////////
  4. //  structures for dealing with import filters.
  5. #pragma pack(2)                     // Switch on 2-byte packing.
  6. typedef struct 
  7. {
  8.     unsigned short  slippery: 1;    // True if file may disappear.
  9.     unsigned short  write : 1;      // True if open for write.
  10.     unsigned short  unnamed: 1;     // True if unnamed.
  11.     unsigned short  linked : 1;     // Linked to an FS FCB.
  12.     unsigned short  mark : 1;       // Generic mark bit.
  13.     union 
  14.     {
  15.         CHAR        ext[4];         // File extension.
  16.         HFILE       hfEmbed;        // handle to file containing graphic (for import).
  17.     };
  18.     unsigned short  handle;         // not used.
  19.     CHAR     fullName[260];         // Full path name and file name.
  20.     DWORD    filePos;               // Position in file of...
  21. } FILESPEC;
  22. typedef struct 
  23. {
  24.     HANDLE  h;
  25.     RECT    bbox;
  26.     int     inch;
  27. } GRPI;
  28. #pragma pack()
  29. BOOL HasGraphicsFilter( LPCWSTR pszExt, LPSTR szHandler, DWORD * pcbSize );
  30. class COfficeThumb :  public IExtractImage,
  31.                       public IPersistFile,
  32.                       public CComObjectRoot,
  33.                       public CComCoClass< COfficeThumb,&CLSID_OfficeGrfxFilterThumbnailExtractor >
  34. {
  35.     public:
  36.         COfficeThumb();
  37.         ~COfficeThumb();
  38.         BEGIN_COM_MAP( COfficeThumb )
  39.             COM_INTERFACE_ENTRY( IExtractImage )
  40.             COM_INTERFACE_ENTRY( IPersistFile )
  41.         END_COM_MAP( )
  42.         DECLARE_REGISTRY( COfficeThumb,
  43.                           _T("Shell.ThumbnailExtract.Office.1"),
  44.                           _T("Shell.ThumbnailExtract.Office.1"),
  45.                           IDS_OFCTHUMBEXTRACT_DESC,
  46.                           THREADFLAGS_APARTMENT);
  47.         DECLARE_NOT_AGGREGATABLE( COfficeThumb );
  48.         // IExtractImage
  49.         STDMETHOD (GetLocation) ( LPWSTR pszPathBuffer,
  50.                                   DWORD cch,
  51.                                   DWORD * pdwPriority,
  52.                                   const SIZE * prgSize,
  53.                                   DWORD dwRecClrDepth,
  54.                                   DWORD *pdwFlags );
  55.  
  56.         STDMETHOD (Extract)( HBITMAP * phBmpThumbnail);
  57.         // IPersistFile
  58.         STDMETHOD (GetClassID )(CLSID *pClassID);
  59.         STDMETHOD (IsDirty )();
  60.         STDMETHOD (Load )( LPCOLESTR pszFileName, DWORD dwMode);
  61.         STDMETHOD (Save )( LPCOLESTR pszFileName, BOOL fRemember);
  62.         STDMETHOD (SaveCompleted )( LPCOLESTR pszFileName);
  63.         STDMETHOD (GetCurFile )( LPOLESTR *ppszFileName);
  64.         LPBITMAPINFOHEADER MetaHeaderToBitmapInfo( LPMETAHEADER pmh );
  65.         LPBITMAPINFOHEADER HMetafileToBitmapInfo( GRPI pict );
  66.     protected:
  67.         WCHAR m_szPath[MAX_PATH];
  68.         SIZE m_rgSize;
  69.         DWORD m_dwRecClrDepth;
  70.         BITBOOL m_fOrigSize;
  71. };
  72. #endif