阅读:3670回复:17
Mo,VB转VC关于Renderer
<P>我想把一段VB程序翻译成VC程序,翻译下段时遇到问题</P>
<P>Dim lyr As MapObjects2.MapLayer</P> <P>.......</P> <P> Select Case True Case lyr.Renderer Is Nothing ...... Case TypeOf lyr.Renderer Is MapObjects2.ValueMapRenderer ....... Case TypeOf lyr.Renderer Is MapObjects2.ClassBreaksRenderer ....... End Select</P> <P>请问我在VC中怎么才能得知一个图层的Renderer是否为Nothing,如何得到一个图层Renderer的类型(例如,是ValueMapRenderer还是ClassBreaksRenderer)?</P> <P>请多多指教,最好能给出关键代码,先行谢过!</P> [此贴子已经被作者于2004-9-20 14:49:03编辑过]
|
|
1楼#
发布于:2005-12-27 10:52
潘爱民的Com原理与应用,那有买的啊
|
|
2楼#
发布于:2005-07-12 21:03
<P>mo自带的例子里有,仔细看看吧</P>
|
|
3楼#
发布于:2005-01-23 01:00
解决问题了吗?
解决问题了吗? |
|
4楼#
发布于:2004-09-27 11:48
学Com就看看潘爱民的Com原理与应用啦!
|
|
|
5楼#
发布于:2004-09-27 11:00
<P>const IID IID_IValueMapRenderere = {0x9BD6A670, 0xCE75, 0x11D1,{0xAF, 0x04, 0x20, 0x4C, 0x4F, 0x4F, 0x50, 0x20}};是怎么回事啊?它就是ValueMapRenderer?这组数是怎么获得的?</P><P>那LabelRenderer,LabelPlacer,MaskColor,ZRenderer怎么表示啊?</P><P>我找了几天的资料也没弄明白,Ole View是什么东东啊?</P><P>还请高手多多指教!</P><img src="images/post/smile/dvbbs/em30.gif" />
|
|
6楼#
发布于:2004-09-24 10:47
<P>请恕小弟愚笨,还是不太懂。可以在QQ中加你为好友吗?</P><P>我的QQ是58349376,请注明walkly</P><img src="images/post/smile/dvbbs/em02.gif" />
|
|
7楼#
发布于:2004-09-24 09:39
<P>这是以前写的,实际上各接口的UUID可以用一个函数获得(实际上是读注册表),不用往程序里写一长串的数字。但我现在用的电脑上没有MSDN,没法查。各接口的UUID可以用Ole View查看。</P>
|
|
8楼#
发布于:2004-09-23 22:10
<P>多谢walkly<img src="images/post/smile/dvbbs/em02.gif" /></P><P>但还真是高深啊<img src="images/post/smile/dvbbs/em05.gif" />,看不太懂</P><P>const IID IID_IValueMapRenderere = {0x9BD6A670, 0xCE75, 0x11D1,{0xAF, 0x04, 0x20, 0x4C, 0x4F, 0x4F, 0x50, 0x20}};是怎么回事啊?它就是ValueMapRenderer?这组数是怎么获得的?</P><P>那LabelRenderer,LabelPlacer,MaskColor,ZRenderer怎么表示啊?</P>
|
|
9楼#
发布于:2004-09-23 16:27
<P>#define SIMPLESYMBOL 1
#define VALUERENDERER 2 #define CLASSRENDERER 3</P><P>UINT CDrawLayer::GetRendererType() { //仅列出两种易于在图例上表达的着色方法 const IID IID_IValueMapRenderere = {0x9BD6A670, 0xCE75, 0x11D1, {0xAF, 0x04, 0x20, 0x4C, 0x4F, 0x4F, 0x50, 0x20}};</P><P> const IID IID_IClassBreaksRenderer = {0x9BD6A676, 0xCE75, 0x11D1, {0xAF, 0x04, 0x20, 0x4C, 0x4F, 0x4F, 0x50, 0x20}};</P><P> LPDISPATCH lpDisp = m_layer.GetRenderer(); if (!lpDisp) { return SIMPLESYMBOL; } else { IUnknown* pTemp; LPDISPATCH pDispTemp = NULL; HRESULT hrValue = lpDisp->QueryInterface (IID_IValueMapRenderere, (void**);pTemp); HRESULT hrClass = lpDisp->QueryInterface (IID_IClassBreaksRenderer, (void**);pTemp); lpDisp->Release (); lpDisp->Release (); if (SUCCEEDED(hrValue)) { return VALUERENDERER; } else if (SUCCEEDED(hrClass)) { return CLASSRENDERER; } else { return SIMPLESYMBOL; } } }</P><P>以上代码尚未编译验证;</P> |
|
上一页
下一页