3

標準で(ある程度)サポートされている回答の1つは、Microsoft.VisualBasic.CompatibilityアセンブリのSupport.IconToIPictureを使用することでした。ただし、.NET 4.0では、「このAPIは廃止されました」。

はい、そこにはさまざまな解決策がありますが、Microsoftがこの方法を廃止した場合、別の「サポートされた」代替手段があると思います。

4

1 に答える 1

2

IPictureはOLEインターフェイスであるため、このAPIは廃止されたと思います。それを使用することで、Microsoftが望んでいない管理されていない世界に飛び込むことができます。を呼び出すことで動作を再現できます IntPtr aHIcon = Icon.GetHicnFromIcon(yourIcon);

次に、このハンドルをOleCreatePictureIndirectに渡す必要があります(コードはC ++です)。

PICTDESC aDesc;
aDesc.cbSizeofstruct = sizeof PICTDESC;
aDesc.picType = PICTYPE_ICON;
aDesc.icon.icon = aHIcon;

IPicture * aPict = 0;
OleCreatePictureIndirect(&aDesc, __uuidof(IPicture), TRUE, (void **) &aPict);

唯一の難しさ-C++構造と関数呼び出しをラップするためのCOM相互運用コードを提供する必要があります。

于 2010-02-10T22:20:03.043 に答える