Я использую FLTK для проекта (версия, распространяемая с Debian/sid 1.3.2-6 + b1), и у меня возникли проблемы с инициализацией значений прокрутки контента Fl_Scroll
.Начальные значения прокрутки Fl_Scroll
создать Fl_Double_Window
и на правой стороне вертикальную панель с помощью Fl_Scroll
, он расположен на левой х 600 и верхней у 24.
Затем я установил Fl_Scroll
в Fl_Scroll::VERTICAL
и разместил Fl_Button
внутри, все работает нормально.
Проблема? Fl_Scroll
Инициализация уже прокручивается с помощью xposition() = 600
and yposition() = 24
(X и Y конструктора Fl_Scroll? Предполагается, что это работает?), Вместо этого я хочу, чтобы он инициализировался с содержимым, прокручиваемым слева и сверху 0, 0
, поэтому я пробовал scroll_to()
в разных местах, до и после функция окна show()
, на FL_SHOW
в наследнике Fl_Scroll
(я действительно не нужно подкласс Fl_Scroll
, просто пытается получить scroll_to()
работать), а также на переопределен draw()
после родителя draw()
, даже создавая Fl_Scroll
0, 0, то position()
на 600, 24, но ничего.
Единственный способ, которым я получил scroll_to()
, это работать, если я вызываю его из асинхронного события после инициализации приложения (FL_KEYUP
).
Вот переопределяется окно Fl_Double_Window конструктор:
group = new Fl_Group(0, 0, WIN_W, WIN_H);
{
menu = new Fl_Menu_Bar(0, 0, WIN_W, MENU_H);
menu->add("File/Quit", FL_CTRL+'q', cbMenuQuit_i);
glview = new CGLView(0, MENU_H, WIN_W-PROPS_W+1, WIN_H-MENU_H);
group->resizable(glview);
scroll = new CScroll(WIN_W-PROPS_W, MENU_H, PROPS_W-1, WIN_H-MENU_H);
scroll->type(Fl_Scroll::VERTICAL);
{
Fl_Pack *pack = new Fl_Pack(0, 0, PROPS_W-1, WIN_H-1);
{
btnAddLayer = new Fl_Button(0, 0, PROPS_W, 32, "@#+ Add Layer");
btnAddLayer->callback(btnAddLayerCb_i, (void *)this);
}
pack->end();
}
scroll->end();
}
group->end();
end();
size_range(WIN_MIN_W, WIN_MIN_H); /* Make the window resizable */
show();
Посмотрите на test/scroll.cxx для примера того, как использовать Fl_Scroll с Fl_DoubleWindow. – cup
Спасибо @cup, я не думал о примерах/тестах в источниках fltk, они не были включены в пакеты Debian fltk, загружены. Тем не менее, все примеры, которые я видел в Интернете, просто компенсируются в 0,0 или не заботятся о первоначальном прокрутке. Я подозреваю, что это ошибка, не вижу, как настройка относительного x, y для прокрутки может быть функцией, попробуйте прокрутку Fl_Scroll (50,50,5 * 75-50,300-50); 'с' test/scroll .cxx' – Alex
x и y в конструкторе Fl_Scroll, как и все другие виджеты FLTK, предназначены для позиционирования виджета. Они не устанавливают положение курсора. Позиция также установит положение виджета. – cup