Windows 2000やXPで WIC コンポーネントが使えない件について その2

Windows 2000やXPで WIC コンポーネントが使えない件について その1

WIC コンポーネントのビューアサンプルを調べてみたところ
JPEGなどのファイルを開くときはXPや2000でもエラーにならないことが判明。

そこで、WICのインストーラーを調べてみたところ…。
インストールされるのは以下の6つ

CLSID_WICPngDecoder    0x389ea17b
CLSID_WICGifDecoder    0x381dda3c
CLSID_WICBmpDecoder    0x6b462062
CLSID_WICJpegDecoder    0x9456a480
CLSID_WICTiffDecoder    0xb54e85d9
CLSID_WICIcoDecoder    0xc61bfcdf
CLSID_WICWmpDecoder    0xa26cec36

CLSID_WICAdngDecoder    0x981d9411
CLSID_WICHeifDecoder    0xe9a4a80a
がインストールされないことが判明

CLSID_WICHeifDecoder  は Windows 10 の場合 msheif.dll をインストールすると設定される。(2017年ごろ作られた)

CLSID_WICAdngDecoder は Windows 10の場合 WindowsCodes.dll からの派生デコーダーだが、 2012年版の Windows XP の DLL には含まれていない。

でも、WDP ファイルが開けないことは関係なさそうだ

そこで前回の記事のソースを以下のように書き換えてみた

        IWICBitmapDecoder *pDecoder = NULL;
        IWICBitmapFrameDecode *pFrame = NULL;
        IWICStream *piStream = NULL;
        hr=m_pIWICFactory->CreateDecoder(GUID_ContainerFormatWmp,NULL,&pDecoder);
        if (SUCCEEDED(hr))
        {
            hr=m_pIWICFactory->CreateStream(&piStream);
            if(SUCCEEDED(hr)){
                piStream->InitializeFromFilename(szFileName, GENERIC_READ);
                pDecoder->Initialize(piStream,WICDecodeMetadataCacheOnDemand);
                hr = pDecoder->GetFrame(0, &pFrame);
            }
        }

GUID_ContainerFormatWmp でデコーダーを生成できないようだ

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です