VB调用ATL写的COM组件的问题 用ATL写了个COM组件,在组件中启动一个线程进行数据处理,在线程处理数据过程中,通过连接点通知VB写的调用程序计算的进度,在VB IDE中运行没问题,编译后运行就会崩溃。请问为什么会这样?怎样解决这个问题呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 做了一个最简单的例子,还是出错DWORD WINAPI ThreadFun(LPVOID lpVoid);STDMETHODIMP CAdd::Add(long a, long b, long *pVal){ *pVal = a + b; CreateThread(NULL, 0, ThreadFun, this, 0, 0); return S_OK;}DWORD WINAPI ThreadFun(LPVOID lpVoid){ CAdd *pAdd = (CAdd*) lpVoid; for(int i=0 ; i<65535 ; i++) { pAdd->Fire_OnAdd(i, i*2); } return 0;}HRESULT Fire_OnAdd(LONG a, LONG b){ CComVariant varResult; T* pT = static_cast<T*>(this); int nConnectionIndex; CComVariant* pvars = new CComVariant[2]; int nConnections = m_vec.GetSize(); for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++) { pT->Lock(); CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex); pT->Unlock(); IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p); if (pDispatch != NULL) { VariantClear(&varResult); pvars[1] = a; pvars[0] = b; DISPPARAMS disp = { pvars, NULL, 2, 0 }; pDispatch->Invoke(0x1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &varResult, NULL, NULL); } } delete[] pvars; return varResult.scode; } 如何调用Microsoft Office Document Image Writer打印图片? pe文件增加空节 帮我看看以下的代码 能不能实现一个程序,它能生成独立的windows应用程序? WinApp 封装了对 ini文件的操作.那么怎么找到这个ini文件呢~ arc、arcto划线函数如何使用? ActiveX控件中如何嵌套另外一个ActiveX控件??? 追加一个问题:后台是VC,前台是vc调用的html,两者之间如何通信? 大哥大姐们救命!!! 继承Cwnd类,Create一个子窗口,但子窗口闪一下就没了 关于Edit控件的stroll属性 怎么样实现像qq的群名一样闪动起来
DWORD WINAPI ThreadFun(LPVOID lpVoid);STDMETHODIMP CAdd::Add(long a, long b, long *pVal)
{
*pVal = a + b;
CreateThread(NULL, 0, ThreadFun, this, 0, 0);
return S_OK;
}DWORD WINAPI ThreadFun(LPVOID lpVoid)
{
CAdd *pAdd = (CAdd*) lpVoid;
for(int i=0 ; i<65535 ; i++)
{
pAdd->Fire_OnAdd(i, i*2);
}
return 0;
}HRESULT Fire_OnAdd(LONG a, LONG b)
{
CComVariant varResult;
T* pT = static_cast<T*>(this);
int nConnectionIndex;
CComVariant* pvars = new CComVariant[2];
int nConnections = m_vec.GetSize();
for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
{
pT->Lock();
CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex);
pT->Unlock();
IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);
if (pDispatch != NULL)
{
VariantClear(&varResult);
pvars[1] = a;
pvars[0] = b;
DISPPARAMS disp = { pvars, NULL, 2, 0 };
pDispatch->Invoke(0x1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &varResult, NULL, NULL);
}
}
delete[] pvars;
return varResult.scode;
}