找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 17564|回复: 15
打印 上一主题 下一主题

UG中MENUOPTION的初始化问题

[复制链接]
跳转到指定楼层
1
发表于 2003-4-2 16:12:37 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
我设计了一个对话框,意图是:根据MENUOPTION1中的index来动态地设置MENUOPTION2中显示的内容。在编译时提示MENUOPTION2中的strings没有初始化。请教各位高手该如何解决?程序如下:
int TYPE_dalei_index_cb ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)
{
  UF_STYLER_item_value_type_t item1_data,item2_data;
  int index;
  char xiaolei_opt[6][20]={"a1","a2","a3","a4","a5","a6"};
  int row_num;
  row_num=2;
     /* Make sure User Function is available. */   
     if ( UF_initialize() != 0)  
          return ( UF_UI_CB_CONTINUE_DIALOG );
  
     /* ---- Enter your callback code here ----- */
  
   //get the index of the dalei option menu.
   item1_data.item_attr=UF_STYLER_VALUE;
   item1_data.item_id=TYPE_DALEI_OPTION;
   item1_data.indicator=UF_STYLER_INTEGER_VALUE;
   UF_STYLER_ask_value(dialog_id, [$item1_data)]
   index=item1_data.value.integer;
  
   //according to the index value to change the text of the xiaolei option menu.
   //item2_data.indicator=UF_STYLER_STRING_PTR_VALUE;
  
   item2_data.value.strings[0]=xiaolei_opt[0];
   item2_data.value.strings[1]=xiaolei_opt[1];
  
   if(index!=0)
   {
     if(index==1)
     {
       item2_data.value.strings[0]=xiaolei_opt[2];
       item2_data.value.strings[1]=xiaolei_opt[3];
     }
     else
     {
       item2_data.value.strings[0]=xiaolei_opt[4];
       item2_data.value.strings[1]=xiaolei_opt[5];
     }
   }
   item2_data.item_attr=UF_STYLER_SUBITEM_VALUES;
   item2_data.item_id=TYPE_XIAOLEI_OPTION;
   item2_data.count=row_num;
  
   UF_STYLER_set_value(dialog_id, [$item2_data)]
/*   else
   {
     item2_data.value.strings[0]=xiaolei_opt[0];
     item2_data.value.strings[1]=xiaolei_opt[1];
   }
*/
  
     UF_terminate ();
  
    /* Callback acknowledged, do not terminate dialog */
    return (UF_UI_CB_CONTINUE_DIALOG);  
    
    /* or Callback acknowledged, terminate dialog.    */
    /* return ( UF_UI_CB_EXIT_DIALOG );               */
  
}
编译提示:warning C4700: local variable 'item2_data' used without having been initialized。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
16
发表于 2003-4-5 22:08:44 | 只看该作者
ug18.0.5
15
发表于 2003-4-5 20:55:23 | 只看该作者
呵呵,这样也可以呀。随便问你一句,你的UG是哪个版本呀?
14
发表于 2003-4-5 20:35:37 | 只看该作者
经过朋友的指点,刚刚解决了这个问题。问题出在程序中的strings的赋值上。
修改原程序中的相应部分如下:
//变量定义部分修改:
char *op1[]={"e1","e2"};
//赋值部分修改:
item2_data.value.strings=op1;
13
发表于 2003-4-5 20:02:48 | 只看该作者
wlzhao33 wrote:
把item2_data.value.strings=xiaolei_opt1;改为item2_data.value.strings=(char **)xiaolei_opt1;试试。好像以前我和另外一个斑竹讨论过这个问题,这儿应该有这个帖子,你自己找找看,应该没问题。

  
我照你的提示作了一下,编译时没有错误提示,但是在ug中对话框的值却不随选项变化。我的代码如下,能否麻烦你看看?谢谢。
int CHANGE_da_index_cb ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)
{
    UF_STYLER_item_value_type_t item1_data,item2_data;
  int index;
  char xiaolei_opt1[2][20]={"d1","d2"};
  char xiaolei_opt2[2][20]={"b1","b2"};
  char xiaolei_opt3[2][20]={"c1","c2"};
  int row_num=2;
  char msg[133];
  char buffer[10];
  
     /* Make sure User Function is available. */   
     if ( UF_initialize() != 0)  
          return ( UF_UI_CB_CONTINUE_DIALOG );
  
     /* ---- Enter your callback code here ----- */
   item1_data.item_attr=UF_STYLER_VALUE;
   item1_data.item_id=CHANGE_OPTION_0;
   //item1_data.indicator=UF_STYLER_INTEGER_VALUE;
   UF_STYLER_ask_value(dialog_id, [$item1_data)]
   index=item1_data.value.integer;
   strcpy(msg, "current index is:");
   _itoa(index, buffer,2);
   strcat(msg,buffer);
   uc1601(msg,1);
  
   item2_data.item_attr=UF_STYLER_SUBITEM_VALUES;
   item2_data.item_id=CHANGE_OPTION_1;
   item2_data.count=row_num;
  
   item2_data.value.strings=xiaolei_opt1;
//   item2_data.value.strings[1]=xiaolei_opt[1];
  
   if(index!=0)
   {
     if(index==1)
     {
       item2_data.value.strings=(char **)xiaolei_opt2;
     }
     else
     {
       item2_data.value.strings=(char **)xiaolei_opt3;
     }
   }
  
   UF_STYLER_set_value(dialog_id, [$item2_data)]
  
     UF_terminate ();
  
    /* Callback acknowledged, do not terminate dialog */
    return (UF_UI_CB_CONTINUE_DIALOG);  
    
    /* or Callback acknowledged, terminate dialog.    */
    /* return ( UF_UI_CB_EXIT_DIALOG );               */
  
}
12
发表于 2003-4-3 21:51:42 | 只看该作者
真是难者不会,会者不难。按照你的指点,程序编译时没有错误提示。谢谢了。
11
发表于 2003-4-3 20:28:59 | 只看该作者
这个问题我也遇到了,我偷了一个懒。就是用UG/Open++ UIStyler Class。问题就见得多了,不过程序的稳定性可能下降。另外就是要熟悉STL。
10
发表于 2003-4-3 19:13:17 | 只看该作者
唉.UG的数据类型转换很讨厌人.
排列组合,慢慢测试把.
不过我给出的代码都是我已经通过调试的.不太明白你的是怎么回事.
这段时间我比较忙,很长一段时间没接触二次开发了,基本都是zzz兄照顾,
一个月后就差不多了.
9
发表于 2003-4-3 19:06:21 | 只看该作者
把item2_data.value.strings=xiaolei_opt1;改为item2_data.value.strings=(char **)xiaolei_opt1;试试。好像以前我和另外一个斑竹讨论过这个问题,这儿应该有这个帖子,你自己找找看,应该没问题。
8
发表于 2003-4-3 15:21:02 | 只看该作者
版主,还是有问题啊!
编译时,系统提示:
warning C4047: '=' : 'char ** ' differs in levels of indirection from 'char (*)[20]'
  
该提示指向赋值语句:item2_data.value.strings=xiaolei_opt1;等处。
  
还需要您帮忙。能否提供一个类似的例子看一看?
  
谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2025-9-19 01:35 , Processed in 0.031926 second(s), 12 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

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