请教哪位大虾知道在com接口的方法中传递组件icon的办法?强调用com接口的方法传递而不是象普通dll的icon的提取。
....................
我想到接口中这样写:
interface IIcon : IDispatch{
[id(1), HRESULT GetIcon([out] [out] LONGLONG* hIcon);}
....................
在com组件中实现:
public:
STDMETHOD(GetIcon)( LONGLONG *  hIcon)
{
*hIcon = (LONGLONG)LoadIcon(_。。.GetModuleInstance(), MAKEINTRESOURCE(IDR_DLG));
return S_OK;
}// com--dll编译成功
.........................
调用:
LONGLONG   hIcon;
pIIcon->GetIcon(&hIcon);
.......................
编译调试时却指向com组件实现中的“*hIcon = (LONGLONG)LoadIcon(...)”,说“意外中断”。此句有问题吗???还是调用时用GetIcon(&hIcon)不正确???请高手赐教!!!

解决方案 »

  1.   

    是不是嫌分太少,还是ATL/ActiveX/COM 版没人知道?如果认为分少,可以再加。
      

  2.   

    GetModuleInstance();
    不能用这个吧,调用该函数的是exe模块,
    得到的是exe模块的句柄,该模块显然没有相应的icon可载入.
    应该在 DllMain中保存dll模块句柄于全局变量,
    然后用全局变量作为LoadIcon方法的第一个参数.
      

  3.   

    to YufengShi(浪子) :我是在mfc的.exe中通过接口调用,而接口方法的实现中
    已对模块句柄做了处理。