代码之家  ›  专栏  ›  技术社区  ›  C-Pound Guru

将stdole.stdpicture转换为system.drawing.icon

  •  0
  • C-Pound Guru  · 技术社区  · 16 年前

    我有一个COM对象(vb6 activex exe),它通过interop返回stdole.stdpicture。是否有方法将其转换为System.Drawing.Icon?或者有更好的返回类型让我的COM对象返回?

    我要做的是让我的C代码使用我的VB6代码中的图标。

    2 回复  |  直到 16 年前
        1
  •  0
  •   Shay Erlichmen    16 年前

    如果 Type stdpicture中的是vbpictypeicon,然后可以调用:

    var icon = Icon.FromHandle(pic.Handle);
    
        2
  •  0
  •   C-Pound Guru    16 年前

    嗯,通过反复试验,我找到了解决办法。

    在vb6代码中,返回图标句柄而不是图标(icon.handle的返回类型是可以长时间返回的ole_句柄)。

    在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);
    
    推荐文章