AO+C++实现文字注记方向为竖直

   尼玛,要不是大雨被困在公司,这个问题永远搞不出来了,困扰我一个星期了!!!!!!!

   一个星期前就知道实现的思路,把文字注记的方向设为竖直,因为有个帖子也讨论过这个问题,给了思路,但是我写了代码就是不行。

   原来的代码如下:

ICharacterOrientationPtr iporientation;
ipTextSymbol->QueryInterface(&iporientation);
iporientation->put_CJKCharactersRotation(true);
ipTextSymbol->put_Angle(dAngle);  //dAngle为-90.


 

这个代码在ESRI上问了好久也没人能说出来哪里错了,我是各种方法都试过了,就在刚刚想放弃的时候,我又试了一下把true改成VARIANT_TRUE类型试一下。奇迹出现了!!!!!

ICharacterOrientationPtr iporientation = ipTextSymbol;
	//一定要用这个变量来赋值
	VARIANT_BOOL truebool = VARIANT_TRUE;
	iporientation->put_CJKCharactersRotation(truebool);
	ipTextSymbol->put_Angle(dAngle);
	ipTextElement->put_Symbol(ipTextSymbol);


好吧。。。这个班总算没白加!!!

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

上次刚加班完写下这点东西,也没深究到底为什么true就不行,为什么VARIANT_TRUE就可以,两个有什么却别呢?

今天回过头来翻了一下资料,果然两者是不一样的!

bool型与BOOL型

这两个有微小的区别,bool的变量时byte型(一个字节的长度),而BOOL是int型(四个字节的长度)。这个问题不大,都是定义了true为1,false为0.

下面是代码中afx.h中的定义

#define FALSE   0
#define TRUE    1
#define NULL    0


 

VARIANT_BOOL型

我们可以转到定义看一下VARIANT_TRUE和VARIANT_FALSE的定义:

#define VARIANT_TRUE ((VARIANT_BOOL)-1)
#define VARIANT_FALSE ((VARIANT_BOOL)0)

 

看到了吧,区别就是VARIANT_TRUE被定义为-1了,而不是1!

 

所以碰到判断0与非0的情况,bool与VARIANT_BOOL还是通用的,显然,我上面代码中put_CJKCharactersRotation这个函数的判断不是这样的!

我也在代码中试过将truebool变量赋值1,-1来测试,结果只有-1文字方向才是会改变的。

所以以后碰到bool与VARIANT_BOOL还是区别开来用比较好

 

参考文章:http://wk.baidu.com/view/c858f0f90242a8956bece473?from=&ssid=&bd_page_type=1&uid=bk_1342984874_752&pu=sl%401%2Cpw%403000%2Csz%40224_220%2Cpd%401%2Cfz%402%2Clp%402%2Ctpl%40color&pn=1&st=1&set=num

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值