[c++] UIStyler界面制作—使用说明

[复制链接]
梅雷工具箱发表于 2015-6-25 14:45:25 | 显示全部楼层 |阅读模式

UIStyler界面制作—使用说明

注意!
[文件名不能中文][前缀名不能中文][版本号随便写但前缀名很重要]
[回调函数:由字母、数字和杠组成不能重复 自己记得住就行了]
[每次修改后点【应用】;不点【应用】修改无效]


如果你用 UI做界面 当API 调用 grip 【grip中带界面或提示框..】UI控件就不能输入中文


1.创建ui对话框 程序名M_A

  ① {进入ui界面编辑器} <=> 运行NX ->【应用】->【用户界面编辑器】

  ② 修改对话框【属性】
     [对话框标题]    玩玩
     [线索]          梅雷提示!请选择按钮。
     [前缀名]        M
     [版本]          0
     [按钮型式选项]  确定和取消
     点【应用】

  ③ 修改对话框【回调】
     [取消] apply_qx
     [构造] apply_gz
     [毁坏] apply_hh
     [确定] apply_ok
     点【应用】

  ④ 创建按钮【点按钮】
       修改按钮【属性】
          [标记]   点点看
          点【应用】
       修改对话框【回调】 [记住回调函数 action_0_act_cb]
          【创建对话框】打钩  [解决在API中可以调用带对话框的GRIP程序]
          点【应用】

  ⑥ 保存文件
     在 F盘新建文件夹M_A [F:\M_A] 文件夹名和文件名可以不一样这里为了好记
     回到NX 【文件】->【保存】-> 文件名[M_A] -> 保存到[F:\M_A] -> ok
     看看 F:\M_A 文件夹 是否生成3个文件 M_A.dlg、M_A.h 和 M_A_template.c

界面创建完成了 接下来是实现功能的时候了


将UG二次开发用的模板文件ugopen.awx和ugopen.hlp复制到
VC安装目录\MSDev98\Template目录中 【只用操作一次,以后在创建uf程序时可不操作】

2.创建uf程序
   ①运行C++6.0 ->【文件】->【新建】->
     选择 Unigraphics NX AppWizard V1
     [工程名称] M_A    {工程名称最好和ui创建的文件名一样}
     [位置]     F:\M_A\
     ->【确定】-> 【完成】->【确定】

   ② 将 M_A_template.c文件 重命名为 M_A.cpp
      将 M_A.h 和 M_A.cpp 文件 复制或剪切到 F:\M_A\M_A文件夹 覆盖原文

   ③ 将M_A.dlg 文件复制到 application文件夹中 如 C:\Meilei_nx\Main\application
      { 如果你没做过外挂 就要看看  UG自定义用户工具
        你 的电脑上可能没有  C:\Meilei_nx\Main\application 文件夹现在创建它
        然后 用记事本打开 UG安装目录\UGII\menus\custom_dirs.dat 文件
        在 最后一行 的空白行 输入 C:\Meilei_nx\Main }

----------------------------

   ④ 修改头文件
      #include <M_A.h> 改成 #include "M_A.h"


   ⑤ 在左上角看见 M_A classes 了吗 双击它 ->Globals ->
      双击 ufsta (char *param, int *retcode, int rlen)

#ifdef MENUBAR_COMMENTED_OUT
extern void ufsta (char *param, int *retcode, int rlen)
{
    int  error_code;

    if ( (UF_initialize()) != 0)
          return;
                                                
    if ( (error_code = UF_MB_add_styler_actions ( actions ) ) != 0 )
    {
          char fail_message[133];
         
          UF_get_fail_message(error_code, fail_message);
          printf ( "%s\n", fail_message );
    }
                                                
    UF_terminate();                             
    return;
}
#endif /*MENUBAR_COMMENTED_OUT*/


改成


extern void ufsta (char *param, int *retcode, int rlen)
{
    int  error_code,resonse;

    if ( (UF_initialize()) != 0)
          return;
/* 在调用UIStyler对话框之前操作 如加入密码*/       
               
/* 在调用UIStyler对话框 */
                                                
    if ( error_code = UF_STYLER_create_dialog ("M_A.dlg",
M_cbs,M_CB_COUNT,NULL,&resonse) != 0 )//M 与UIStyler前缀名 有关注意大小写
    {
          char fail_message[133];
         
          UF_get_fail_message(error_code, fail_message);
          printf ( "%s\n", fail_message );
    }
/* 在调用UIStyler对话框之后操作 */
                                          
    UF_terminate();                             
    return;
}

extern "C" int ufusr_ask_unload( void )
{
        /* 设置UF程序运行以后立刻从内存中卸除,即当重新修改、编译成新的DLL文件时,UG无须关闭重启动,就可调用此新的*.DLL文件 */
        return (UF_UNLOAD_IMMEDIATELY);
}






⑥ 双击回调函数 M_action_0_act_cb (..略..)

/* ---- Enter your callback code here ----- */

     uc1601("你好!",1); // 注意 uc不能大写 C++ 函数不像VB和GRIP,它有大小写之分
                         // 表示 在UG 弹出对话框 显示 你好!

     UF_terminate ();


⑦ 测试程序
   点 Build [快捷键F7]
   下面提示 M_A.dll - 0 error(s), 0 warning(s) 表示代码 错误0 警告 0
   出现的不是两0 说明你的代码有误

⑧ 编译生成 *.dll
   点 BuildExecute [快捷键 Ctrl+F5]

⑨ 查看 F:\M_A\M_A\Debug 文件夹 里 是否生成 M_A.dll文件
   在NX 按 Ctrl+U 可调用此文件
   你也可以把它做成按钮加在自己的工具条里


  
=====================================================================================

        /* UF_terminate ();    终止对NX/Open API 函数的调用 但不能终止对话框  */  
        /* 关闭对话框                   用 return (UF_UI_CB_CONTINUE_DIALOG); */
        /* 应用程序结束时,立即退出程序 用 return (UF_UNLOAD_IMMEDIATELY);    */
        /* 经过选择对话框退出程序       用 return (UF_UNLOAD_SEL_DLALOG);     */
        /* 让UG终止运行                 用 return (UF_UNLOAD_UG_TERMINATE);   */


    /*
          return ( UF_UI_CB_EXIT_DIALOG );
          //回调承认,终止对话框,强烈退出程序
          // 在确定 按钮里 不写就是,不终止对话框,不退出程序
        */

/*
#include <string>
         std::string xx_xx="退出程序";
          if (pick_xx==xx_xx)
            {
                // 结束程序 在按钮回调函数里用 return ( UF_UI_CB_EXIT_DIALOG );
                // 结束程序 在ufsta (char *param, int *retcode, int rlen) 里用return;
                 return ( UF_UI_CB_EXIT_DIALOG );  // 结束程序
             }
*/



_____________________________________________________________________________ _

中磊UG二次开发教程 梅雷著 qq1821117007
学UG就上UG网 http://www.9sug.com/
就上UG网淘宝直营店
您需要登录后才可以回帖 登录 | 注册UG网 用百度帐号登录

本版积分规则