您的位置:网站首页 > Proe教程

ProE二次开发中用VC++开发Pro/TOOLKIT程序的实例

时间:2011-02-24 09:39:31 来源:

  本文给出了ProE二次开发中用VC++开发Pro/TOOLKIT程序的实例。

  Pro/TOOLKIT是PTC公司提供给用户使用C语言客户化Pro/ENGINEER的API。

  在Pro/E 16.0以前是Pro/DEVELOP,从17版开始换成Pro/TOOLKIT,但Pro/DEVELOP仍可以和Pro/TOOLKIT混合在一起使用。

  PTC提供的例子程序和培训教材都是使用C语言来进行开发,自己手工编写makefile文件,然后通过nmake命令在命令行直接编译、连接。这样的方式对于已经习惯于使用VC++编程的程序员来说,确实受到很多限制。

  经过测试,我发现其实也可以在VC++环境下编写Pro/TOOLKIT程序,你会发现比使用makefile的方式更简单,更容易入门。

  以下我来手把手教各位如何VC++编写第一个Pro/TOOLKIT程序。

  我的开发和测试环境是:

  简体中文Windows 2000 + SP4

  Pro/E 2001 2003010

  Visual C++ 6.0

  Pro/E二次开发

  1、创建新工程

  启动VC++,新建工程。

  选择 MFC AppWizard(dll)方式。

  指定工程名称及存放路径。

  然后按“OK”按钮。

  2、完成新工程的创建

  接受缺省设置。

  按“Finish”按钮完成。

  3、配置开发环境

  接下来,你需要配置用来编译、连接Pro/TOOLKIT程序的开发环境。

  1)设置Pro/TOOLKIT和Pro/DEVELOP头文件路径;

  2)设置库文件路径;

  4、当前工程设置

  选择Win32 Release。

  设置Pro/TOOLKIT程序所需要的几个库文件。

  还有很重要的是,需要设置Ignore libraries:

  msvcrt.lib

  否则在编译连接时由于库冲突会出错。

  5、开始编写程序

  接下来,你就可以开始编写程序了。

  Pro/TOOLKIT的程序需必须包括 user_initialize() 和 user_terminate()函数。

  user_initialize() 函数中必须至少调用一个Pro/TOOLKIT API函数。如果调用失败将导致Pro/TOOLKIT 应用程序失败,并返回PRO_TK_GENERAL_ERROR。

  所以,我们在Hello.cpp程序中添加以下程序:

  #include "ProToolkit.h"

  int user_initialize()

  {

  return (0);

  }

  void user_terminate()

  {

  }

  在Hello.cpp文件中,

  包含需要的头文件:

  #include

  #include

  #include

  #include

  在文件末尾添加以下程序:

  static int status;

  static uiCmdAccessState UserAccessTestMenu(uiCmdAccessMode access_mode);

  int MyTest();

  extern "C" int user_initialize()

  {

  static wchar_t menumsgfile[] = { 'u','s','e','r','m','s','g','.','t','x','t',''};

  uiCmdCmdId cmd_id;

  //在Help菜单的左边添加Test菜单

  status = ProMenubarMenuAdd("TestMenu", "Test", "Help", PRO_B_FALSE, menumsgfile);

  status = ProCmdActionAdd("MyTest", (uiCmdCmdActFn)MyTest, uiCmdPrioDefault, UserAccessTestMenu, PRO_B_TRUE, PRO_B_TRUE, &cmd_id);

  status = ProMenubarmenuPushbuttonAdd("TestMenu", "MainBtn1", "Hello", "Hello Help", NULL, PRO_B_TRUE, cmd_id, menumsgfile);

  return(0);

  }

  static uiCmdAccessState UserAccessTestMenu (uiCmdAccessMode access_mode)

  {

  return (ACCESS_AVAILABLE);

  }

  int MyTest()

  {

  AfxMessageBox("祝贺你!");

  return 0;

  }

  extern "C" void user_terminate()

  {

  }

  6、添加菜单资源文件

  在Hello文件下创建text子文件夹,用来存放资源文件;

  在text下添加usascii子文件夹,同时创建usermsg.txt文件,内容如下:

  Test

  &Test

  #

  #

  Hello

  &Hello

  #

  #

  Hello Help

  Hello! This is a Pro/TOOLKIT sample.

  #

  #

  7、添加TOOLKIT程序注册文件

  在Hello目录下添加protk.dat文件,内容如下:

  name Hello

  startup dll

  allow_stop TRUE

  exec_file .Releasehello.dll

  text_dir .Text

  revision 2001

  description First Toolkit Application

  end

  8、测试程序

  到这里,已经完成,如果你能够编译连接成功,会在Release目录下发现Hello.dll文件。

  可以开始测试了。

  你可以在Hello目录下直接启动Pro/E,或者启动Pro/E后再选择Hello目录下的protk.dat文件进行注册。

  如果你能看到如上图所示画面,恭喜你,你的第一个使用VC++开发的TOOLKIT程序成功了。

  单击Test菜单下的Hello菜单,你就可以看到使用AfxMessageBox实现的信息框。

  9、中文菜单及提示

  以上我们实现了英文的菜单及提示信息。

  接下来我们来实现简体中文版的菜单及提示信息。

  在Text目录下如上图所示创建chinese_cn子目录。

  在chinese_cn目录下添加usermsg.txt文件,内容如下:

  Test

  &Test

  测试(&T)

  #

  Hello

  &Hello

  你好(&H)

  #

  Hello Help

  Hello! This is a Pro/TOOLKIT sample.

  你好!这是第一个使用VC++开发TOOLKIT应用程序。

  #

  10、测试中文版菜单

  无需更改程序。

  直接进行测试,即可在中文Pro/E下看到了中文菜单及提示信息。