class ATL_NO_VTABLE CMode :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMode, &CLSID_Mode>,
public IConnectionPointContainerImpl<CMode>,
public CProxy_IModeEvents<CMode>,
public IDispatchImpl<IMode, &IID_IMode, &LIBID_OgreCommonLib, /*wMajor =*/ 1, /*wMinor =*/ 0>本人在com里的连接点有个方法OutNum(int a)
当COM内部运行触发某事件时
CMode *pMode;
pMode->Fire_OutNum(333);请问在C#中怎么调用这个连接点啊?我是这样写的
private void Form1_Load(object sender, EventArgs e)
{
Mode pMode = new Mode();
pMode.OutNum += new _IModeEvents_OutNumEventHandler(pMode_OutNum);
}
static void pMode_OutNum(int bb)
{
MessageBox.Show(bb.ToString());
return;
}
出错!!下面一种方式运行正确
在COM中的一个接口调用Fire_OutNum()STDMETHODIMP CMode::BBBBB()
{
// TODO: 在此添加实现代码
Fire_OutNum(333);
return S_OK;
}C#中写sinkpublic class CSink : _IModeEvents
{
public void OutNum(int a)
{
MessageBox.Show(a.ToString());
return;
}
}
调用
private void panel1_Click(object sender, EventArgs e)
{
CSink pSink = new CSink();
Mode pky = new Mode();
pky.OutNum += pSink.OutNum;
pky.BBBBB();
pky.OutNum -= pSink.OutNum;
}这个是可以的。明显这样子是我点击调用COM的外部程序触发了Fire_OutNum(),
而本人要的是COM内部去触发Fire_OutNum(),然后外部调用者做出反应。我该怎么做 怎么做 怎么做~~~~~~
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMode, &CLSID_Mode>,
public IConnectionPointContainerImpl<CMode>,
public CProxy_IModeEvents<CMode>,
public IDispatchImpl<IMode, &IID_IMode, &LIBID_OgreCommonLib, /*wMajor =*/ 1, /*wMinor =*/ 0>本人在com里的连接点有个方法OutNum(int a)
当COM内部运行触发某事件时
CMode *pMode;
pMode->Fire_OutNum(333);请问在C#中怎么调用这个连接点啊?我是这样写的
private void Form1_Load(object sender, EventArgs e)
{
Mode pMode = new Mode();
pMode.OutNum += new _IModeEvents_OutNumEventHandler(pMode_OutNum);
}
static void pMode_OutNum(int bb)
{
MessageBox.Show(bb.ToString());
return;
}
出错!!下面一种方式运行正确
在COM中的一个接口调用Fire_OutNum()STDMETHODIMP CMode::BBBBB()
{
// TODO: 在此添加实现代码
Fire_OutNum(333);
return S_OK;
}C#中写sinkpublic class CSink : _IModeEvents
{
public void OutNum(int a)
{
MessageBox.Show(a.ToString());
return;
}
}
调用
private void panel1_Click(object sender, EventArgs e)
{
CSink pSink = new CSink();
Mode pky = new Mode();
pky.OutNum += pSink.OutNum;
pky.BBBBB();
pky.OutNum -= pSink.OutNum;
}这个是可以的。明显这样子是我点击调用COM的外部程序触发了Fire_OutNum(),
而本人要的是COM内部去触发Fire_OutNum(),然后外部调用者做出反应。我该怎么做 怎么做 怎么做~~~~~~
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货