我自己編寫了一個單文檔的小程序,然後運行程序之後出現中斷,進過調試尋找到是winocc.cpp中的void CWnd::GetProperty和void CWnd::SetProperty兩個函數中的_ASSERT(m_pCtrlSite != NULL);均出現錯誤。希望大神能幫忙指出錯誤類型!!!謝謝!!!
這是出錯部分代碼!!
float* try::fun1( )//創建指定區域
{ GET dlg;
dlg.DoModal();
static float h[4]={dlg.m_x1,dlg.m_y1,dlg.m_x2,dlg.m_y2};
CMapX m_ctrlMapX; // 調試的時候出現cMapx hWnd=0x0000000
CMapXLayers allLr=m_ctrlMapX.GetLayers(); //取得圖層集合
CMapXLayer Lr=allLr.CreateLayer("Stlayer",NULL, 2, 32);
CMapXStyle lineSty; //線圖元
COleVariant vt;
vt.vt=VT_DISPATCH;
CMapXFeature newFeature; //新建圖元
CMapXPoint pt; //點圖元
CMapXPoints pts; //點集合
pt.CreateDispatch(pt.GetClsid());
pts.CreateDispatch(pts.GetClsid());
pts.RemoveAll();
pt.Set(dlg.m_x1,dlg.m_y1); //線的起點
pts.Add(pt);
pt.Set(dlg.m_x2,dlg.m_y2); //線的終點
pts.Add(pt);
vt.pdispVal=pts.m_lpDispatch;
vt.pdispVal->AddRef();//此句不可缺
CMapXFeatureFactory factory=m_ctrlMapX.GetFeatureFactory();
CMapXFeature sidefeature=factory.CreateLine(vt);
//創建線圖元
lineSty=sidefeature.GetStyle(); //設置線圖元的風格
lineSty.SetLineColor(miColorBlue);
lineSty.SetLineStyle(36);
sidefeature.SetStyle(lineSty.m_lpDispatch);
Lr.AddFeature(sidefeature);
Lr.Refresh(); //將創建的圖元加入到圖層中
return h;
}
CWnd類只有Create後才會獲取HWND句柄,你說的domodal函數其實是針對CDialog類的一種窗口顯示函數
CWnd類在create後通過ShowWindow函數來顯示