2017-04-09 8 views
0

Fl_Input에서 값을 읽고 아래 코드를 사용하여 Fl_Slider를 설정하려고하지만 어떤 것이 작동하지 않습니다! 수술에 대해 잘 모르겠습니다.Fl_Input에서 값으로 Fl_Slider를 설정하는 방법

도움에 감사드립니다!

FL_Value_Input* vinput; 

void set_slider(FL_Widget* w, void* v) 
{ 
Fl_Slider* slider = (Fl_Slider*)w; 
slider->value(vinput->value()); 
} 


int main(){ 


    Fl_Window *window = new Fl_Window(100, 100, 600, 400, "callback"); 
    window->begin(); 

    Fl_Value_Input *vinput = new Fl_Value_Input(40, 40, 40, 40); 
    vinput->textsize(30); 

    Fl_Button *button = new Fl_Button(160, 40, 120, 40, "Set slider"); 
    button->labelsize(15); 

    Fl_Slider *slid = new Fl_Slider(40, 200, 400, 30); 
    slid->slider(FL_UP_FRAME); 
    ((Fl_Widget*)slid)->type(FL_HOR_NICE_SLIDER); 
    slid->bounds(10, -10); 
    slid->slider_size(10); 
    slid->range(-10, 10); 
    slid->step(1); 
    slid->value(0); 

    button->callback(set_slider); 

    window->end(); 
    window->show(); 
    return Fl::run(); 

}

답변

0

버튼 콜백에서 슬라이더를 설정하는 - 위젯 버튼입니다 :하지 슬라이더. 또한 당신이 말하는 vinput은 main에있는 local이 아닌 global입니다.

수정하려면 입력 및 슬라이더가 모두있는 구조체를 콜백에 전달합니다.

// Create a structure for input and slider 
struct Info 
{ 
    FL_Value_Input* vinput; 
    FL_Slider* slider; 
} 

// Callback 
void set_slider(FL_Widget* w, void* v) 
{ 
    Info* info = (Info*) v; 
    info->slider->value(info->vinput->value()); 
} 
.... 
// Declare Info in your main code 
Info info; 

... 
info->vinput = new Fl_value_input... 
... 
info->slider = new Fl_slider... 
... 
button->callback(set_slider, (void*)&info);