2009-08-27 44 views
0

我有一個COM對象(VB6 ActiveX exe),它通過interop返回一個stdole.StdPicture。有沒有辦法將其轉換爲System.Drawing.Icon?還是有更好的返回類型爲我的COM對象返回?將stdole.StdPicture轉換爲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

如果StdPicture的Type是vbPicTypeIcon那麼你可以撥打:

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

我試過了 - 拋出System.RuntimeInteropServices.COMException:災難性故障 – 2009-08-28 12:47:17

+0

嗨,你有沒有找到任何解決方案,我在這裏得到我的錯誤:VAR p' ic = user.GetPicture(); (災難性故障) – PernerOl 2015-10-06 19:14:10

相關問題