中华设计论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

快捷导航
二级导航
查看: 225|回复: 0
打印 上一主题 下一主题

[分享] ProE二次开发 Creo二次开发 菜单创建

[复制链接]
跳转到指定楼层
1# 推荐此文赚华币
发表于 2015-6-11 10:11:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ProE二次开发 Creo二次开发 菜单创建
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可看到效果如下:




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

|小黑屋|手机版|Archiver|中华设计论坛 ( ) 

GMT+8, 2016-9-24 20:09

Powered by X3.2

© 2001-2013

快速回复 返回顶部 返回列表