方法1:使用rsc资源文件
制作如下的mke文件,制作成一个包含有真彩色图标的资源文件,将资源文件放到..\microstation\icons\下即可使用里面的真彩色图标,使用方法见方法2中的资源定义;
rscName=ico.rsc
rscFile = $(baseDir)$(rscName)
BUILD_USING_NoToolset = 1
NO_COMPILERS_MKI = 1
%include mdl.mki
%include compilers.mki
filelist + "C:\Documents and Settings\Administrator\桌面\ico\Bicon.ico"
filelist + "C:\Documents and Settings\Administrator\桌面\ico\Bicon1.ico"
$(rscFile) : $(filelist)
> $(o)filelist.opt
$(filelist)
<
wiconpackager -o$(rscFile) @$(o)filelist.opt
方法2:使用dll文件
用visual studio制作一个dll文件,可包含多个图标文件,将其放到..\microstation\icons\下即可使用里面的真彩色图标;
制作步骤如下:
1>新建一个dll项目
2>向项目中添加图标资源
选择导入资源:
3>打开工程中的rc资源查看并编辑各个资源的ID(在资源视图下)
将ID改为文本格式:
编译……生成一个dll文件,与RSC文件的使用一样,将其放置到..\MICROSTATION\ICONS\..,如果工程中不存在DllMain函数,则会编译出错,此时可手动创建一个空的DllMain函数即可编译通过;也可以打开VC的/NOENTRY 选项,这时候dll就是一个纯资源型的dll,可以没有DLLMain了。NativeCode的mki编译设置里默认这个选项是打开的,所以Nativecode的dll是纯资源型的dll,是给ma来装载的,所以ma不过是资源(dll+图标+对话框等等)装载器而已。
MDL中r文件的真彩色图标定义方法:
在条目中即可使用它了:
如果资源是BMP位图文件,用同样的方法打包到dll里来,r文件的图标定义如下:
ICON与BMP不同的是BMP的资源定义的尺寸必须和bmp文件的尺寸一致,否则会出现严重变形的情况,而ICON则不会。建议使用windows图标来定义资源。
实例:
方法3:使用MDL的mke文件
创建、编辑一个后缀名是rc的文件,格式如下,将它和对应的ico和bmp文件一起拷贝到当前工程目录下:
制作一个mke文件如下:
NO_NTTOOLS = 1
BUILD_USING_VS2005 = 1
NOSTRICT = 1
%include mdl.mki
maPath = $(baseDir)
#------------------- -------------------------------------------+
# dlmRulers.mki是编译DLM的宏设置;
#------------------- ------------------------------------------+/
%include dlmRulers.mki
DLM_NAME = iconColl
dlmObjs = $(o)iconColl.rbj
%include dlmcomp.mki
$(o)iconColl.res : $(baseDir)iconColl.rc
$(o)iconColl.rbj : $(o)iconColl.res
%include dlmlink.mki
编译顺序为rc -> res -> rbj -> DLL;(res也可以直接链接入DLL,由编译、链接规则否则内部的转换)
编译规则在winntmdl.mki中已经定义。
编译后即可产生一个iconColl的dll文件,拷贝至..\MicroStation\icons\..目录下,即可使用其中id为“IC” 的图标和id为“BP”的位图。此方法最为快捷,而不用包含任何cpp、h文件和其它执行代码。
VS可以打开DLL并查看其中图标,而rsc中的图标等资源在外部不容易查看(v8i中增加了这个功能)。
1) MDL自定义taskTools(任务工具面板)
新建一个界面文件(dgnlib)
在customize的file列表里就有了此dgnlib文件;
打开此文件,就可以编辑它了:
可以新建toolbox和tools了。
命令格式:[maName]commandName --- maName下的commandName
Icon必须是windows图标打包的rsc文件或者dll文件,pure Mdl的位图图标不适用;