2009-08-27 2 views
0

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

Что я пытаюсь сделать, это иметь код C#, используя значок из моего кода VB6.

ответ

0

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

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

В коде 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

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

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

Я попытался что - бросает System.RuntimeInteropServices.COMException: катастрофический провал –

+0

Привет, вы нашли какое-либо решение для этого я получаю свою ошибку здесь: вар р? ic = user.GetPicture(); (Катастрофический провал) – PernerOl