代码之家  ›  专栏  ›  技术社区  ›  Mat

我可以在COM方法中传递HWND吗?

  •  2
  • Mat  · 技术社区  · 17 年前

    有没有可能有一个COM方法通过 HWND ? 在我的对象中使用以下方法 CoCreateInstance 返回 DISP_E_BADVARTYPE ( 0x80020008 ):

    STDMETHODIMP ShowDialog(HWND hWndParent);
    

    到目前为止,我通过一个 OLE_HANDLE 然后把它扔出去,但感觉像一根棍棒:

    STDMETHODIMP ShowDialog(OLE_HANDLE hWndParent);
    
    2 回复  |  直到 17 年前
        1
  •  2
  •   Shay Erlichmen    17 年前

    我认为HWND是指向结构的指针,这就是为什么不能在IDL中使用它。
    如果你看一下微软的Typelibs,你会看到关于如何传递句柄的各种变化(从int到long到handle)。

        2
  •  1
  •   jlew    17 年前

    您的接口可能注册为“dual”,而HWND不是OLE automation支持的类型之一。您的界面是否需要与IDispatch兼容(您需要通过脚本或后期绑定语言调用它)?如果不是,从IUnknown而不是IDispatch获得,并且不注册为dual将帮助你解决问题。

    注:铸造是可以的,只要你只使用过程中的方法。

    推荐文章