rkc_555 发表于 2015-5-5 23:16:24

对话框调用uc1630()的问题

设计的对话框里有个按钮的回调函数里调用了uc1630(),为什么没有反应?大伙有这样的经历吗,分享一下,怎么解决。

admin 发表于 2015-5-6 13:54:34

有没有加 ufun初始化

uf_initialize()

rkc_555 发表于 2015-5-6 17:27:30

程序里加了,这行代码上下的都执行了,就是这行没执行

rkc_555 发表于 2015-5-6 17:35:40

int ATT_EDT_CUSTOM_CAL ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)
{
        UF_STYLER_item_value_type_t data;
        int stock_class=0;
        int        count=0;
        tag_p_t        objects;
       
        //设置坐标系
        double csys_origin={0.0,0.0,0.0};
        tag_t matrix_id;
        tag_t csys_id ;
        int option=15;
        double csys_matrix;
        char title="定义临时坐标系";
       

        //毛坯尺寸
       char stock_size;

       //坐标对齐边界盒
       logical expand=FALSE;                
       double min_corner;                
       double directions;                
       double distances;

       //坐标系定义对话框返回值
       int response;


   /* Make sure User Function is available. */
   if ( UF_initialize() != 0)
          return ( UF_UI_CB_CONTINUE_DIALOG );

   /* ---- Enter your callback code here ----- */
       data.item_attr=UF_STYLER_SELECTION;   
       data.item_id=UF_STYLER_DIALOG_INDEX;   
       UF_STYLER_ask_value(dialog_id,&data);   
       UF_UI_ask_sel_object_list(data.value.selection,&count,&objects);

       data.item_attr=UF_STYLER_VALUE;
       data.item_id=ATT_EDT_STOCK_CLASS;
       UF_STYLER_ask_value(dialog_id,&data);
       stock_class=data.value.integer;

       uc1630(title,&option,csys_matrix,csys_origin);

       //定义坐标系
       if(0==stock_class)
       {
               uc1601("定义临时坐标系",0);
               response=uc1630(title,&option,csys_matrix,csys_origin);
       }

       if(0==count||3!=response)
       {
               uc1601("请选择实体或定义坐标系",1);
       }
       else if(3==response)
       {

               UF_CSYS_create_matrix(csys_matrix,&matrix_id);
               UF_CSYS_create_csys(csys_origin,matrix_id,&csys_id);

               UF_MODL_ask_bounding_box_aligned(objects,csys_id,expand,min_corner,directions,distances);

               stock_size_string(distances,stock_class,stock_size);

               data.item_attr=UF_STYLER_VALUE;          
               data.item_id=ATT_EDT_MAT_DIM;       
               data.value.string=stock_size;       
       
               UF_STYLER_set_value(dialog_id,&data);
               UF_OBJ_delete_object(csys_id);
       }

   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 );               */

}

rkc_555 发表于 2015-5-6 19:54:36

路过的大神指点一下啊,这个问题折腾了我一个多星期了

rkc_555 发表于 2015-5-7 11:47:17

有办法解决吗?

rkc_555 发表于 2015-5-7 21:06:00

谢谢你ypcopy,我刚刚找到解决办法,已经搞出来了,就是把对话框的那个按钮点上创建对话框,对应的头文件更新了一下
页: [1]
查看完整版本: 对话框调用uc1630()的问题