Конвертировать stdole.StdPicture в System.Drawing.Icon - PullRequest
0 голосов
/ 28 августа 2009

У меня есть COM-объект (VB6 ActiveX exe), который возвращает stdole.StdPicture через взаимодействие. Есть ли способ преобразовать это в System.Drawing.Icon? Или есть лучший тип возврата для моего COM-объекта для возврата?

Я пытаюсь, чтобы мой код C # использовал значок из моего кода VB6.

Ответы [ 2 ]

0 голосов
/ 31 августа 2009

Ну, методом проб и ошибок я нашел решение.

В коде VB6 верните дескриптор значка вместо значка (тип возврата для Icon.Handle - OLE_HANDLE, который может быть возвращен как long.

В коде VB6:

Public Function GetIconHandle() as long

     GetIconHandle = myForm.Icon.Handle

End Function

В коде .NET:

IntPtr iconHandle = (IntPtr)COMDll.GetIconHandle(); // returns an int for the handle to the icon.
Icon myIcon = Icon.FromHandle(icnoHandle);
0 голосов
/ 28 августа 2009

Если Тип для StdPicture равен vbPicTypeIcon, вы можете вызвать:

var icon = Icon.FromHandle(pic.Handle);
...