Sds getpreviewbmp

提供:GizmoLabs - だいたい CAD LISP なサイト
構文
int sds_getpreviewbmp(const char *szFileName, void** pHBITMAP, unsigned long* pAllocatedBytes, short* bIsBitmap);


機能
指定された図面のプレビューイメージを返す。
引数
  • *szFileName : ファイル名
  • ** pHBITMAP : 取り戻されたイメージ
  • *pAllocatedBytes : pHBITMAP で使用されているメモリ(使用後は開放しなければならない。)
  • *bIsBitmap : プレビューイメージがビットマップかWindowsメタファイルかどうか。真=メタファイル
戻り値
RTNORM(未確認)


サンプル
short bIsBitmap;
void* hBitmap = NULL;
unsigned long pAllocatedBytes;
 
int ret = sds_getpreviewbmp(fname, &hBitmap, &pAllocatedBytes, &bIsBitmap);
if (ret && pAllocatedBytes)
{
  If (bIsBitmap)
  {
    BITMAPINFOHEADER *pHeader = (BITMAPINFOHEADER *)hBitmap;
    (CONST BITMAPINFO * )pHeader
  }
  else // meta file.
  {
    DWORD seekpos;<
    DWORD dwIsAldus = *((DWORD*)hBitmap);
    if (dwIsAldus != ALDUSKEY){
      seekpos = 0;
    }
    else 
    {
      seekpos = ALDUSMFHEADERSIZE;>
    }

    ALDUSMFHEADER* aldusMFHeader = (ALDUSMFHEADER*)hBitmap;
    BYTE *p = (BYTE *)hBitmap;
    METAHEADER* mfHeader = (METAHEADER*)( p + seekpos);
    DWORD dwSize = mfHeader->mtSize * 2;
    HENHMETAFILE m_emf = ::SetWinMetaFileBits(dwSize, (const BYTE*)mfHeader, NULL, NULL);
  }
}
free(hBitmap);