ljm1113
路人甲
路人甲
  • 注册日期2008-11-28
  • 发帖数5
  • QQ
  • 铜币119枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2277回复:4

VC中如何写if typeof ipav is IPageLayout then

楼主#
更多 发布于:2010-08-10 12:25
<P>dim ipAV as IActiveView</P>
<P>...</P>
<P>if typeof ipav is IPageLayout then </P>
<P>    ...</P>
<P>end if</P>
喜欢0 评分0
ljm1113
路人甲
路人甲
  • 注册日期2008-11-28
  • 发帖数5
  • QQ
  • 铜币119枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2010-08-12 15:17
<a href="http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.languages.vc/2004-03/0611.html" target="_blank" >http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.languages.vc/2004-03/0611.html</A>
举报 回复(0) 喜欢(0)     评分
ljm1113
路人甲
路人甲
  • 注册日期2008-11-28
  • 发帖数5
  • QQ
  • 铜币119枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2010-08-12 15:14
<P>自己找了一些贴上来,高手都是由于低手来的</P>
<P>C++ equivalent for VB TypeOf operator?</P>
<P><a href="http://www.eggheadcafe.com/software/aspnet/33454433/c-equivalent-for-vb-typeof-operator.aspx" target="_blank" >http://www.eggheadcafe.com/software/aspnet/33454433/c-equivalent-for-vb-typeof-operator.aspx</A></P>
举报 回复(0) 喜欢(0)     评分
ljm1113
路人甲
路人甲
  • 注册日期2008-11-28
  • 发帖数5
  • QQ
  • 铜币119枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2010-08-11 23:58
<P>#include <typeinfo.h><BR>#include <atlconv.h></P>

<P>  HRESULT hr;<BR>  IMxDocumentPtr ipMxDoc;<BR>  IMapsPtr ipMaps;<BR>  IMapPtr ipMap;<BR>  IActiveViewPtr ipAV;<BR>  ipMxDoc=m_ipDoc ;<BR>  hr=ipMxDoc->get_ActiveView (;ipAV);<BR>  USES_CONVERSION;<BR>  CLSID iid;<BR>  LPOLESTR lpolestrIID;</P>
<P>  iid=__uuidof(ipAV);</P>
<P>  //方案一:</P>
<P>  //IActiveView的IID={dd94d76b-836d-11d0-87ec-080009ec732a}<BR>  StringFromIID(iid,;lpolestrIID);<BR>  LPCSTR cstrAV=OLE2CT(lpolestrIID);<BR>  MessageBox (NULL,cstrAV,"",MB_OK);<BR>  <BR>  //IPageLayout的IID=>{dd94d76a-836d-11d0-87ec-080009ec732a}<BR>  StringFromIID(IID_IPageLayout,;lpolestrIID);<BR>  LPCSTR cstrPLyt=OLE2CT(lpolestrIID);<BR>  MessageBox (NULL,cstrPLyt,"",MB_OK);</P>
<P>  if (strcmp((LPSTR)cstrAV,(LPSTR)cstrPLyt)==0 )<BR>  {<BR>   MessageBox (NULL,"相同","",MB_OK);<BR>  }<BR>  else{<BR>   MessageBox (NULL,"不相同!","",MB_OK);<BR>  }</P>
<P>  //方案二:<BR>   if(IsEqualIID(iid,IID_IActiveView)){<BR>    MessageBox (NULL,"相同2","",MB_OK);<BR>   }<BR>   else{<BR>    MessageBox (NULL,"不相同2!","",MB_OK);<BR>   }<BR>上面是我今天做出来的判别IActiveViewPtr指针与IPageLayout接口的接口类型的二种方法。二种方案都可以识别二个接口,现在的问题是hr=ipMxDoc->get_ActiveView (;ipAV);(或者是ipAV=ipMxDoc;)有点问题,我测试了一下,无论是从ArcMap的数据视图还是从排版视图,得到的都是IActiveView。vb中好象不是这样的啊。看看VB中这二句多简单</P>
<P>Set pAV = pMxDoc.ActiveView<BR>If TypeOf pAV Is IPageLayout Then Exit Sub</P>
举报 回复(0) 喜欢(0)     评分
ljm1113
路人甲
路人甲
  • 注册日期2008-11-28
  • 发帖数5
  • QQ
  • 铜币119枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2010-08-10 23:35
Java中有一个instanceof关键字代替VB中的typeof...is ...,VC中用什么代替呢
举报 回复(0) 喜欢(0)     评分
游客

返回顶部