iCAx开思工具箱

标题: [求助]UG二次开发—UF_STYLER_set_value无法正常使用?? [打印本页]

作者: anna_hong03    时间: 2004-5-29 11:11
标题: [求助]UG二次开发—UF_STYLER_set_value无法正常使用??
这是我源程序的一段代码,是某个对话框的构造函数的回调函数,我的目的是希望实现在弹出这个对话框的时候,相应的对话框中的控件能有一个初始的值。附件中有我的对话框示意图。
int CHANGE_constructor_cb ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)
{
  /*样条曲线数据定义区*/
  struct UF_CURVE_spline_s spline_data;
  UF_CURVE_spline_p_t spline_pointer=malloc( sizeof    (UF_CURVE_spline_p_t));
  double poles[20][2];
  int number;
  int i=0;
  int j=0;
  
           /*set对话框value定义区*/
  UF_STYLER_item_value_type_t value[25];
  
            /*出错信息反馈定义区*/
  int error;
  char message1[133];
  
           /* Make sure User Function is available. */  
  if ( UF_initialize() != 0)  
    return ( UF_UI_CB_CONTINUE_DIALOG );
  
  /* ---- Enter your callback code here -----*/  
  
   /*得到样条曲线的控制点的坐标值*/
  UF_CURVE_ask_spline_data ( curve_id ,
                           [$spline_data )]                    
  number=spline_data.num_poles;
  
  for(i=0;i<number;i++)
  {
    for(j=0;j<2;j++)
    {
      poles[j] = spline_data.poles[j];
    }  
  }
  
  
              value[0].item_id    = CHANGE_SCALE_REAL_0;
  value[0].item_attr  = UF_STYLER_VALUE;  
  
  value[1].item_id    = CHANGE_SCALE_REAL_1;
  value[1].item_attr  = UF_STYLER_VALUE;
  
  value[2].item_id    = CHANGE_SCALE_REAL_2;
  value[2].item_attr  = UF_STYLER_VALUE;  
  
  value[3].item_id    = CHANGE_SCALE_REAL_3;
  value[3].item_attr  = UF_STYLER_VALUE;
  
  value[4].item_id    = CHANGE_SCALE_REAL_4;
  value[4].item_attr  = UF_STYLER_VALUE;  
  
  value[5].item_id    = CHANGE_SCALE_REAL_5;
  value[5].item_attr  = UF_STYLER_VALUE;
  
  value[6].item_id    = CHANGE_SCALE_REAL_6;
  value[6].item_attr  = UF_STYLER_VALUE;  
  
  value[7].item_id    = CHANGE_SCALE_REAL_7;
  value[7].item_attr  = UF_STYLER_VALUE;
  
  value[8].item_id    = CHANGE_SCALE_REAL_8;
  value[8].item_attr  = UF_STYLER_VALUE;  
  
  value[9].item_id    = CHANGE_SCALE_REAL_9;
  value[9].item_attr  = UF_STYLER_VALUE;
  
  value[10].item_id    = CHANGE_SCALE_REAL_10;
  value[10].item_attr  = UF_STYLER_VALUE;  
  
  value[11].item_id    = CHANGE_SCALE_REAL_11;
  value[11].item_attr  = UF_STYLER_VALUE;
  
  value[12].item_id    = CHANGE_SCALE_REAL_12;
  value[12].item_attr  = UF_STYLER_VALUE;
  
  value[13].item_id    = CHANGE_SCALE_REAL_13;
  value[13].item_attr  = UF_STYLER_VALUE;  
  
  value[14].item_id    = CHANGE_SCALE_REAL_14;
  value[14].item_attr  = UF_STYLER_VALUE;
  
  value[15].item_id    = CHANGE_SCALE_REAL_15;
  value[15].item_attr  = UF_STYLER_VALUE;  
  
  value[16].item_id    = CHANGE_SCALE_REAL_16;
  value[16].item_attr  = UF_STYLER_VALUE;
  
  value[17].item_id    = CHANGE_SCALE_REAL_17;
  value[17].item_attr  = UF_STYLER_VALUE;  
  
  value[18].item_id    = CHANGE_SCALE_REAL_18;
  value[18].item_attr  = UF_STYLER_VALUE;
  
  value[19].item_id    = CHANGE_SCALE_REAL_19;
  value[19].item_attr  = UF_STYLER_VALUE;  
  
  value[20].item_id    = CHANGE_SCALE_REAL_20;
  value[20].item_attr  = UF_STYLER_VALUE;
  
  value[21].item_id    = CHANGE_SCALE_REAL_21;
  value[21].item_attr  = UF_STYLER_VALUE;  
  
  value[22].item_id    = CHANGE_SCALE_REAL_22;
  value[22].item_attr  = UF_STYLER_VALUE;
  
  value[23].item_id    = CHANGE_SCALE_REAL_23;
  value[23].item_attr  = UF_STYLER_VALUE;  
  
  value[24].item_id    = CHANGE_SCALE_REAL_24;
  value[24].item_attr  = UF_STYLER_VALUE;
  
  value[25].item_id    = CHANGE_SCALE_REAL_25;
  value[25].item_attr  = UF_STYLER_VALUE;  
  
  /*将控制点坐标值读到控件中*/
  for(i=0;i<number;i++)
  {
    value[2*i].value.real=poles[0];
    value[2*i+1].value.real=poles[1];        
  }
  
/*出错信息反馈*/
  error = UF_STYLER_set_value(dialog_id,value);
  
  if(error)  
  {        
      UF_get_fail_message( error, message1 );  
      UF_UI_set_status (message1);
  }  
  
UF_terminate ();
   return 0;
  
    /* Callback acknowledged, do not terminate dialog */
   // return (UF_UI_CB_CONTINUE_DIALOG);  
    /* A return value of UF_UI_CB_EXIT_DIALOG will not be accepted    */
    /* for this callback type.  You must continue dialog construction.*/
  
}
作者: 深夜摔键盘    时间: 2004-5-29 11:27
  error = UF_STYLER_set_value(dialog_id,value);  
应该是每一个控件都要调用一次该函数,第一个参数应该是你的控件ID吧。。。。。。
作者: zzz    时间: 2004-5-29 12:11
这个函数一次只能设一个吧,你一次给它25个,恐怕它消化不了吧。
作者: anna_hong03    时间: 2004-5-29 12:49
我曾经用一个试过,但也没试通。应该不是这个问题吧?因为UF_STYLER_set_value和UF_STYLER_ask_value的用法是基本一致的
我UF_STYLER_ask_value这个函数时可以ask多个控件的值
作者: 深夜摔键盘    时间: 2004-5-29 13:24
无论是设定值,还是取得值,你得让那个函数找到是哪个控件啊!
UF_STYLER_set_value(dialog_id,value);
你这里使用了dialog_id是什么意思?
呵呵,昨天我试着用了REAL控件,一共6个,我是挨个控件获取值的
作者: jinly    时间: 2004-6-1 16:35
your  array is value[25] which should be 0~24, but you used 0~25......will it cause problem?
作者: goodluckwu    时间: 2004-6-3 10:06
你对UF_STYLER_set_value()的理解不对,那个函数只能一次给一个控件赋值,如果要个多个控件赋值就得用循环。另外你说的同时获取多个控件的值得函数不是UF_STYLER_ask_value(),而是UF_STYLER_ask_values(),就差了一个s,但是意思可是完全不一样了。
作者: goodluckwu    时间: 2004-6-3 10:06
这些我都做过测试,不会错的




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3