|
阅读:1488回复:2
[求教]vc+mo问题求教
<P>新建一个空的图层,代码如下:</P>
<P> CMoRecordset sourceSet;<br> sourceSet = roadLayer.GetRecords();<br> CMoFields sourceFields( sourceSet.GetFields() );<br> CMoField sourceField( sourceFields.Item( COleVariant(TEXT("shape"))) );</P> <P> // Create data set and table to descript<br> CMoDataConnection con;<br> if( !con.CreateDispatch(TEXT("MapObjects2.DataConnection")) )<br> return;<br> CMoGeoDataset desDataSet;</P> <P> CMoTableDesc desTableDesc;<br> if( !desTableDesc.CreateDispatch( TEXT("MapObjects2.TableDesc") ) )<br> return;<br> desTableDesc.SetFieldCount( 4 );<br> desTableDesc.SetFieldName( 0, "CODE");<br> desTableDesc.SetFieldType( 0, moString);<br> desTableDesc.SetFieldLength( 0, 10);<br> desTableDesc.SetFieldName( 1, "BM");<br> desTableDesc.SetFieldType( 1, moLong);<br> desTableDesc.SetFieldName( 2, "NAME");<br> desTableDesc.SetFieldType( 2, moString);<br> desTableDesc.SetFieldLength( 2, 14);<br> desTableDesc.SetFieldName( 3, "LENGTH");<br> desTableDesc.SetFieldType( 3, moDouble);</P> <P> desDataSet = con.AddGeoDataset( "road", moShapeTypeLine, desTableDesc, COleVariant(short(0)), COleVariant(short(0)));<br> if( LPDISPATCH(desDataSet) )<br> return;<br> CMoMapLayer newLayer;<br> if( !newLayer.CreateDispatch(TEXT("MapObjects2.MapLayer")) )<br> return;<br> newLayer.SetName( "road" );<br> newLayer.SetGeoDataset( desDataSet );</P> <P>但是在最后一句newLayer.SetGeoDataset( desDataSet );时,总是给我报异常~~~实在不知道为什么?还请指教,谢谢~~</P> [此贴子已经被作者于2007-1-26 16:00:52编辑过]
|
|
|
1楼#
发布于:2007-01-27 19:15
<FONT color=#ff0000>帝国出品,必属精品</FONT>
|
|
|
2楼#
发布于:2007-01-26 16:54
<P>CMoGeoDataset moDst(m_curConnection.AddGeoDataset(lyrName+"_temp",moPoint,tblDsc,va,va));<BR>//add to project<BR>if(LPDISPATCH(moDst)==NULL)<BR> return FALSE;<BR>//加点<BR>CMoMapLayer newLayer;<BR>if(!newLayer.CreateDispatch("MapObjects2.MapLayer"))<BR>{<BR> throw "init maplayer Wrong!";<BR> return FALSE;<BR>}</P>
<P>newLayer.SetGeoDataset(moDst);</P> <P>试一下上面的写法。我怀疑你的desDataSet 创建有问题。</P> <P><BR>newLayer.SetGeoDataset(moDst);<BR></P> |
|