www.mcadex.com
QQ:910361522
CreoToolkit交互主要通过菜单和Tab按钮实现.其中菜单需要两部分组成:1.菜单资源文件;2.菜单创建代码
菜单资源文件在源码文件夹下创建text文件夹,特别强调,此文件夹名称必须为text,在text文件夹内创建不同语言资源文件夹, chinese_cn为简体中文资源文件夹, chinese_tw为繁体资源文件夹, usascii为英文资源文件夹.
Creo可根据系统环境加载不同语言的资源文件.当前以简体中文系统加以说明.
在chinese_cn中创建名称为CreoTKMenu.txt的文本文件
打开CreoTKMenu.txt,编辑内容如下
菜单资源文件格式为4行一组,每组的第一行为ID,第二行为本地语言显示内容,第三、四行为英文的”#”
菜单创建代码实现步骤打开”CreoTk.cpp”文件
在CreoTk.cpp文件的最后面,编辑如下代码
uiCmdAccessState UsrActiveButton ( uiCmdAccessMode access_mode )为控制菜单按钮有效性的函数,返回值有以下几种类型
ACCESS_REMOVE 移除菜单按钮,菜单按钮及关联将不可显示
ACCESS_INVISIBLE不可见菜单按钮, 菜单按钮将不可显示
ACCESS_UNAVAILABLE禁止菜单按钮,菜单按钮变灰,不可用
ACCESS_DISALLOW不可用菜单按钮,菜单按钮可用,但不执行动作函数
ACCESS_AVAILABLE激活菜单按钮,菜单按钮可用,可执行动作函数
void UsrActionCreoTk()为菜单按钮的动作函数,我们期望执行的命令就放到该函数内
extern "C" int user_initialize(int argc,char *argv[])为Creo调用程序时的接口函数,在Creo调用TK时会识别此函数
ProMenubarMenuAdd为菜单栏添加函数
ProCmdActionAdd菜单按钮动作函数设置
ProMenubarmenuPushbuttonAdd添加菜单按钮
extern "C" void user_terminate()为Creo退出程序时的接口函数,扫尾工作将在这里处理
实现代码:#include "ProToolkit.h"
#include "ProMenu.h"
#include "ProMenuBar.h"
#include "ProUtil.h"
//指定菜单按钮的有效性
uiCmdAccessState UsrActiveButton ( uiCmdAccessMode access_mode )
{
return ACCESS_AVAILABLE;
}
//菜单按钮动作函数
void UsrActionCreoTk()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
}
extern "C" int user_initialize(int argc,char *argv[])
{
ProError err;
//指定菜单资源文件名称,Creo会自动找到位于text文件夹中对应语言文件夹下的资源文件
ProFileName pMenuFileName;
ProStringToWstring(pMenuFileName, "CreoTKMenu.txt");
//添加菜单栏
//CreoTKMenubarID为菜单栏ID, CreoTKMenubar为菜单资源ID,
//Help表示邻近菜单栏的ID, PRO_B_TRUE表示放在Help的后面,反之放在Help的前面
err = ProMenubarMenuAdd("CreoTKMenubarID", "CreoTKMenubar", "Help", PRO_B_TRUE, pMenuFileName);
if (err != PRO_TK_NO_ERROR)
return err;
//定义菜单按钮动作函数
//ActionIdCreoTKMenuBtn为动作名称,UsrActionCreoTk为动作函数,uiProeImmediate为优先权设置
//UsrActiveButton设置菜单按钮的有效性,两个PRO_B_TRUE是用来设置某些状态窗口是否可用,设置为PRO_B_TRUE即可
//uiCmdCmdIdCreoTKMenuBtn动作ID是动作函数与菜单资源之间的连接
uiCmdCmdId uiCmdCmdIdCreoTKMenuBtn;
err = ProCmdActionAdd("ActionIdCreoTKMenuBtn",(uiCmdCmdActFn)UsrActionCreoTk, uiProeImmediate, UsrActiveButton ,PRO_B_TRUE, PRO_B_TRUE, &uiCmdCmdIdCreoTKMenuBtn);
//定义菜单按钮显示内容
//CreoTKMenubarID表示该菜单按钮挂在CreoTKMenubarID之下
//CreoTKMenuBtnID为此菜单按钮的ID,CreoTKMenuBtn为此菜单按钮显示内容的资源ID,CreoTKMenuBtnHelp为此菜单按钮的帮助说明资源ID
//NULL用来定义邻近按钮,若放在最后面直接NULL即可,PRO_B_TRUE表示放在邻近菜单按钮后面,否则放在前面
err = ProMenubarmenuPushbuttonAdd("CreoTKMenubarID", "CreoTKMenuBtnID", "CreoTKMenuBtn" , "CreoTKMenuBtnHelp", NULL, PRO_B_TRUE, uiCmdCmdIdCreoTKMenuBtn, pMenuFileName);
return PRO_TK_NO_ERROR;
}
extern "C" void user_terminate()
{
}
Tab制作方法Tab按钮制作之前需要先将TK程序加载运行,加载方法见后面的《注册程序》介绍。
程序成功加载运行后,选择文件->选项
选中自定义功能区,在”从下列位置选取命令”中选择”TOOLKIT”命令,此时会自动显示出新建的菜单按钮名称
通过”新建选项卡”等按钮可创建编辑选项卡、组等,并可将菜单按钮拖入
设计完毕后,导出界面文件到CreoTk程序的text文件夹中
将导出的文件改名为toolkitribbonui.rbn
启动Creo并加载CreoTK可看到效果如下: