Direct2D effectsを使うときにはっまたとこ "Windows8 Programming"

軽くメモ程度に。
Windows8からDirect2Dに新しくDirect2D effectsが導入されました。詳しくはここ。
http://msdn.microsoft.com/en-us/library/windows/desktop/hh802478.aspx
これを使うときに少しはまったとこがあったのでメモしときます。

Direct2D effectsでは、DeviceContextからEffectのオブジェクトを作成します。コードにするとこんな感じです

ComPtr<ID2D1DeviceContext> context;

// Initialize context

ComPtr<ID2D1Effect> shadow;
context->CreateEffect(CLSID_D2D1Shadow, &shadow); // but error

上記のコードのCreateEffectの部分で"error LNK2001: 外部シンボル "_CLSID_D2D1Shadow" は未解決です。"のようなエラーが発生する時があります。これは、GUIDを使うためのヘッダファイルがインクルードされていないだけらしく、このコードより前のどこかで

#include <initguid.h>

とすると解決します。

参考:
http://support.microsoft.com/kb/130869/ja