当前位置: 代码迷 >> VC/MFC >> mfc 地图x5.02.19 访问map数据造成非法访问
  详细解决方案

mfc 地图x5.02.19 访问map数据造成非法访问

热度:201   发布时间:2016-05-02 03:48:25.0
mfc mapx5.02.19 访问地图数据造成非法访问
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控件
  相关解决方案