Microsoft Office Spreadsheet 11.0的BUG,谁有办法?
菜牛 2005-10-01 03:42:25 在一个对话框上,插入一个Microsoft Office Spreadsheet 11.0控件(Office 2003带的),再插入一个别的具有焦点的控件,比如EditBox,运行之后,用鼠标在Microsoft Office Spreadsheet 11.0控件和EditBox之间切换一下焦点(如果用Tab切换没问题),比如焦点:EditBox->Microsoft Office Spreadsheet 11.0控件,一定要使两个控件各得到一次焦点,再关闭对话框,出现应用程序错误:
"0x5adc1531"指令引用的"0x00000014"内存。该内存不能为"read"。
用调试运行定位在cmdtarg.cpp中:
CCmdTarget::~CCmdTarget()
{
#ifndef _AFX_NO_OLE_SUPPORT
if (m_xDispatch.m_vtbl != 0)
((COleDispatchImpl*)&m_xDispatch)->Disconnect();
ASSERT(m_dwRef <= 1); //<-中断在这句
#endif
#ifdef _AFXDLL
m_pModuleState = NULL;
#endif
}
此时m_dwRef的值,等于Microsoft Office Spreadsheet 11.0控件获得焦点(鼠标设置)的次数(+1),而原因是m_xDispatch.m_vtb1为0,所以没有调用下面这个Disconnect()。
使用Microsoft Office Spreadsheet 10.0控件(Office 2002带的)则没有这个问题。
我的环境:XP SP2,VC.net 2003简体中文版。
正在查找解决方法,主要是想搞清楚出问题的原因。