这是我源程序的一段代码,是某个对话框的构造函数的回调函数,我的目的是希望实现在弹出这个对话框的时候,相应的对话框中的控件能有一个初始的值。附件中有我的对话框示意图。
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.*/
} |