FtrsUnderPt = m_ctrlMapX.GetLayers().Item(_T("tempLayersForGS")).SearchAtPoint(pt);//搜索上一次的位图区域
ftr.Offset(p_NewPs->X1 - p_PerPs->X1,p_NewPs->Y1 - p_PerPs->Y1); //移动图元位子
ftr.Update();
上面三句话到最后一句的时候就报错,
mfc100ud.dll!COleDispatchDriver::InvokeHelperV(long dwDispID, unsigned short wFlags, unsigned short vtRet, void * pvRet, const unsigned char * pbParamInfo, char * argList) Line 397 + 0x38 bytes C++
mfc100ud.dll!COleDispatchDriver::InvokeHelper(long dwDispID, unsigned short wFlags, unsigned short vtRet, void * pvRet, const unsigned char * pbParamInfo, ...) Line 553 C++
MapAppDlg.exe!CMapXFeature::Update(const tagVARIANT & UpdateFeature, const tagVARIANT & RowValues) Line 2925 + 0x1e bytes C++
MapAppDlg.exe!CMapXFeature::Update() Line 1260 + 0x9d bytes C++
MapAppDlg.exe!CMapCtrDlg::UpDevicePosition(CPtrArray * tagArray, deviceposition * ps) Line 470 C++
MapAppDlg.exe!CMapCtrDlg::ThreatUpdatePs(void * lpParameter) Line 332 C++
上面是栈的调用情况
First-chance exception at 0x04b925e7 in MapAppDlg.exe: 0xC0000005: Access violation reading location 0x00000004.
Unhandled exception at 0x04b925e7 in MapAppDlg.exe: 0xC0000005: Access violation reading location 0x00000004.
上面是OUTPUT
我对地图的操作是在互斥锁内操作的,有多个线程同时操作地图控件(地图是activex控件)。
这种情况在我拖动窗口的时候,或者鼠标在地图上方滑动(鼠标在地图上方滑动会触发对话框的另一个消息函数,里面对地图的访问也是要在锁内完成)
有没有哪位大神做过MAPX,求指教啊!!!!!!
------解决思路----------------------
不要多线程操作控件,都让主线程来操作activeX控件