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 でデコーダーを生成できないようだ
Comments