- UID
- 20008
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-12-12
- 最后登录
- 1970-1-1
|
发表于 2004-9-21 21:25:44
|
显示全部楼层
[转帖]
一 关于 unicode:
1 v8 中有一些地方使用 unicode,提供了转换函数,最常用的是:mdlCnv_convertMultibyteToUnicode 和 mdlCnv_convertUnicodeToMultibyte 。
2 unicode 的声明用 MSWChar *unicodeCharsP;
3 最常用的地方是层名和单元名。
mdlElement_getProperties(&elmLevel,NULL,NULL,NULL,NULL,NULL,NULL,NULL,&elm);
mdlLevel_getName (uniLevelName, 256, MASTERFILE, elmLevel);
mdlCnv_convertUnicodeToMultibyte(uniLevelName, -1, g_Options.strPreLevel, sizeof(g_Options.strPreLevel));
二 关于文件模型 DgnModelRef:
1 在 J 中一个dgn 文件就是一幅图,在 v8 的格式中,一个 dgn 文件可以包含多个 model.
2 参考文件也用 model 的方式实现。
3 workdgn 也用 model 的方式实现。 mdlWorkDgn_openFile () 返回值就是一个DgnModelRefP。
4 这个做的结果是 mdlElmdscr_read 也要指定读取哪一个 DgnModelRefP 。第三个参数
5 mdlView_fit 用起来挺麻烦。
mdlModelRefList_create(&modelRefListP);
mdlModelRefList_add(modelRefListP,MASTERFILE);
mdlView_fit(tcb->lstvw,modelRefListP);
mdlView_updateSingle(tcb->lstvw);
mdlModelRefList_free(&modelRefListP);
三 tcb 结构的变化:
1 主单位变量没有了。
tcb->mastname ,现在要用mdlModelRef_getMasterUnitLabel;
2 全局原点变量没有了。
tcb->globorg, 要用
mdlModelRef_getGlobalOrigin(MASTERFILE, &GlobalOrigin);
3 文本对齐方式没有了。
tcb->txtjust;换成
mdlParams_getActive(&oldjust,ACTIVEPARAM_TEXTJUST);
等等……
四 元素描述符的改变:
1 zlow 变了一个位置:
现在应该用:elmDP->el.hdr.dhdr.range.zlowlim;
2 数据类型基本上都变大了, UShort 大多是 ULong 了。
五 关于包含文件:
1 要包含很多的 fdf 文件,在编译是会提示很多的错。
2 字符串操作要包含头文件 <string.h>
3 数学函数要包含 <math.h>
4 stringlist 操作要包含 <msstrlst.h>
六 新的对话框控件:
1 Container 控件.
* 在 v8 中增加了这个控件,Container 被包含在 ContainerPanel 中。
* 每一个 Container 可以包含DialogItemListRsc, 在这个中定义将出现这个容器的控件
* 这样在切换页面时,只需要转换 ContainerPanel 中显示的 Container 即可。
2 listBox 和 ComboBox.
这类控件的使用方法更接近于 java 中的数据模型方法。在 mdl 中可以使用 mdlListModel_* 的函数。
七 Scan 函数的变化:
1 在去年的时候听说这个函数变化很大,实际上我觉的,这个到没给我带来什么麻烦,使用新的mdlScanCriteria_* 函数确实在控制上更清晰了。
2 好象也就这个改变bentley 提供了例子,可以对照 scanfile 的例子来改。
八 编译器的变化:
1 类型检查更严格,在编译时,能检查出所有的隐式类型转换,并用黄颜色提示。
2 函数声明检查更严格。
3 一个例子。
在 j 下,下面这句是可以编译通过的,并且可以工作很好。
int color = 106; mdlParams_setActive(color, ACTIVEPARAM_COLOR);
但这句在 v8 下却不能编译,提示需要 color 需要地址。如果改成
mdlParams_setActive(&color, ACTIVEPARAM_COLOR);
可以编译成功却不能产生效果,颜色改不到 106 去,最后我用这个才可以:
mdlParams_setActive((void*)iColor, ACTIVEPARAM_COLOR); |
|