十五年专注于
液压缸筒生产

全国咨询热线:
400-086-9833

   热门关键词修理 加工 活塞杆 缸筒 不锈钢

无标题文档

天圆液压产品中心

当前位置:主页 > 行业资讯 >

基于VS2005打造绗磨管高效Pro/Toolkit开发环境(2)

时间:2017-05-17 09:00来源:天圆网站 作者:admin 点击:
在前面的事变中,已经类型了菜单计划,然而这种菜单计划照旧一种文本式编辑模式。若菜单比伟大时,仅靠手工来界说这些数组,仍需较大事变量来完成。这一点可通过菜单的可视化计划获得改进,VS 开拓 情形已经提供一

  在前面的事变中,已经类型了菜单计划,然而这种菜单计划照旧一种文本式编辑模式。若菜单比伟大时,仅靠手工来界说这些数组,仍需较大事变量来完成。这一点可通过菜单的可视化计划获得改进,VS开拓情形已经提供一个菜单可视化编辑器,必要做的只是怎样操作这个可视化编辑器来计划Pro/Toolkit菜单。通过研究VS的菜单资源文件(ProToolkit_Wizard.rc)发明VS的菜单资源是用很是简朴的语法组织起来的,可操作编译前处理赏罚变乱在措施编译前将其理会为菜单数组,就能把VS2005菜单转换为Pro/Toolkit菜单,天圆液压缸筒,从而实当代码和资源的自动编码。下面是VS菜单资源代码界说:

  BEGIN

  TK_Menu_Fuc.h…………菜单回调函数阐明,声明如下

  在ProToolkit_Wizard.cpp文件user_initialize()函数中添加下面代码,建设菜单:

  //General

  

  到此,一个相对完备的Pro/Toolkit项目框架便已成立,且措施能自动建设菜单项,将代码写在TK_Menu_Fuc.cpp响应的函数中(好比:Menu1_fun),即能通过菜单执行。

  TKMenuData MenuArray[]={

  POPUP"Menu1"

  create_menu_src措施除了可以天生菜单数组和对应的菜单资源外,还可以按照从StringTable得到的信息,自动实现函数的阐明和界说,从而实当代码的快速计划。默认代码为:

  {

  {

  function AddConfig(proj,strProjectName)

  //成立菜单

  (2)类型包括文件和库文件的配置,将其配置在项目属性中并引入ProeLoadpoint宏变量,利便差异用户和开拓情形的切换。

  1.2 扩显现成Pro/Toolkit DLL项目

  BEGIN

  //成立子菜单

  LinkTool.IgnoreDefaultLibraryNames="msvcrt.lib";//忽略msvcrt.lib,不然会发生一个warning

  END

  {

  BEGIN

  //Add linker dependencies

  

  通过以上事变,用户在Pro/Toolkit开拓成立项目时,只必要选择Pro/E版本,领导即能从头天生前面完成的框架,不必要编写一行代码,措施就可以通过编译。

  然而,做到这一步还穷乏一个很是重要的成果——措施菜单。为给措施添加菜单,先成立一个ProToolkit_Menu.txt文件用于菜单必要用到的文本资源,然后将菜单成果函数模块化来实现菜单的快速计划。在此新建4文件,其名称及浸染如下:

  IDR_TK_MENU MENU

  config.InheritedPropertySheets=".\\user_macro.vsprops";//自动添加user_macro

  var config=proj.Object.Configurations('Debug');//Debug情形

  TK_Menu_Strct.h………菜单资源数组阐明,将菜单资源界说为一个布局体,并将建设菜单全部必要的信息都包括该布局体中。

  先用VS2005成立一个“自界说领导”项目,回收UI支持,便于得到差异版本Pro/Toolkit开拓所需信息;然后将前面成立的文件拷贝到“自界说领导”项目中,并对部门文件举办须要的编辑。假如但愿后续所建项目能自动改名,则将要变换的处所包罗文件名改为VS指定的要害字(好比root、[!output CLASS_NAME]等),便可以实此刻新项目中恰当位置自动转换。“自界说领导”项目标Templates.inf文件节制了必要添加到新项目中的文件,全部必要添加到新项目标文件名都必要写入该文件。

  本文是VS2005 Wizard技能在Pro/Toolkit开拓中的实践履历总结,通过客制化的领导快速成立代码框架清楚、成果完备、易于扩显现的Pro/Toolkit项目。Pro/Toolkit措施菜单快速计划要领、菜单回调函数的自动声明和界说的应用,大大进步了开拓服从,促进了Pro/Toolkit开拓的成长。

  1.1 成立尺度MFC DLL项目

  for(int i=0;i

  TK_Menu_Fuc.h………int MenuName_fun();

  if(!MenuArray[i].SubMenu);

  {"ProToolkit_Wizard_Menu","Menu1","-Menu1","-Menu1_1 Help",PRO_B_FALSE,"redo.bif",(uiCmdCmdActFn) Menu1_fun,NULL }}

  ID_32774"fuc1_3,,"

  POPUP"Demo"

  (1)类型菜单计划要领,用户必要添加菜单,修改TK_Menu_Array.h菜单资源数组即可;

  //通过for轮回读取MenuArray数组中的信息建设菜单

  END

  }

  STRINGTABLE

  }

  BEGIN

  MENUITEM"menu2_1",ID_32776

  POPUP"Menu2"

  MENUITEM"Menu1_1",ID_32772

  1.3 项目改造点

  TK_Menu_Array.h………菜单资源数组界说,包括TK_Menu_Strct.h和TK_Menu_Fuc.h,并在ProToolkit_Wizard.cpp包括它,用户可以在此完美菜单数组的界说。

  {

  }

  END

  Pro/Toolkit、Pro/J-link和Pro/Web.link是PTC提供应客户的三种客制化器材,个中以Pro/Toolkit的成果最为强盛,能会见大部门Pro/E底层资源,也是当前海内研究得最多的开拓方法。今朝海内对Pro/Toolkit的运作方法和焦点技能举办了深入研究,并取得了厚实的成就,但因为Pro/Toolkit 是从Unix体系移植过来的,且PTC提供的开拓文档和典型是回收MakeFile模式举办,这些都进步了Pro/Toolkit开拓门槛,限定了Pro/Toolkit开拓的成长。其它,固然Pro/Toolkit支持MFC DLL开拓模式,但仍必要做诸多窜改才可以编译出正确的DLL文件。

  ID_32772"fuc1_1,edit.gif,FullAccessAvailable"

  作为Pro/Toolkit开拓的用户可能初学者必要频仍成立项目,重复一再上述举措是费时艰辛的事变。回收VS2005开拓情形提供自界说领导成果,可一劳永逸地办理这个题目。

  END

  

  从这些信息中可得到菜单名称和菜单布局(层级相关),但这些信息还不敷以计划Pro/Toolkit菜单。还需将Pro/Toolkit菜单的标签和提醒信息举办类型:划定菜单标签=“-Menu Name”、菜单辅佐=“-Menu Name Help”,然后将Pro/Toolkit菜单回调函数、菜单图标、菜单权限函数界说在VS菜单属性的“prompt”属性中(可以在StringTable中得到)。StringTable布局如下:

  ProStringToWstring (UserMenuMsg,"ProToolkit_Wizard_menu.txt");

  2 通过VS编译变乱进步开拓服从

  1 行使VS2005自界说领导,成立Pro/Toolkit措施模板

  var LinkTool=config.Tools('VCLinkerTool');

  //Compiler

  "Utilities",PRO_B_FALSE,UserMenuMsg);

  本文基于应用措施快速开拓(Rapid Application Development, RAD)的头脑,首要接头操作VS2005 自界说领导成果,建造能快速开拓Pro/Toolkit措施的领导(Wizard)。同时叙述怎样通过VS编译变乱实当代码和资源的自动编码,实现简朴高效开拓。

  事变做到这一步,便已成立了新的代码框架,但措施无法通过编译,因此最后必要为其配置Pro/Toolkit开拓情形。开拓情形的配置有两种要领:一种是成立一个用户属性表,在属性表中配置开拓情形,新建项目可以通过自动担任项目属性表来完成;另一种是通过“自界说领导”项目标default.js(语法为Jscript,非JavaScript)文件AddConfig函数来配置。下面给出js代码示例,具体计划可以参考MSDN:

  int Menu1_fun(){AfxMessageBox("Menu1_fun");return 0;}

  MENUITEM"Menu1_1",ID_32773

  2.2 Pro/Toolkit代码的自动实现

  3 总结

  int Menu1_fun();

(责任编辑:admin)
分享按钮
------分隔线----------------------------