Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Cynacyn
33 / 33 / 0
Регистрация: 02.05.2013
Сообщений: 109
#1

Страуструп FLTK newline в Out_box - C++

12.09.2013, 12:16. Просмотров 559. Ответов 8
Метки нет (Все метки)

Здравствуйте, вопрос довольно специфический, поэтому я думаю нет нужды приводить Страусроповские исходники.
Но на всякий случай я их спрятал под спойлер:

Кликните здесь для просмотра всего текста

Out_box
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    struct Out_box : Widget {
        Out_box(Point xy, int w, int h, const string& s)
            :Widget(xy,w,h,s,0) { }
        void put(int);
        void put(const string&);
 
        void attach(Window& win);
    };
//------------------------------------------------------------------------------
 
void Out_box::put(const string& s)
{
    reference_to<Fl_Output>(pw).value(s.c_str());
}
 
//------------------------------------------------------------------------------
 
void Out_box::attach(Window& win)
{
    pw = new Fl_Output(loc.x, loc.y, width, height, label.c_str());
    own = &win;
}
Widget
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    class Widget {
    // Widget is a handle to an Fl_widget - it is *not* an Fl_widget
    // We try to keep our interface classes at arm's length from FLTK
    public:
        Widget(Point xy, int w, int h, const string& s, Callback cb)
            : loc(xy), width(w), height(h), label(s), do_it(cb)
        {}
 
        virtual void move(int dx,int dy) { hide(); pw->position(loc.x+=dx, loc.y+=dy); show(); }
        virtual void hide() { pw->hide(); }
        virtual void show() { pw->show(); }
        virtual void attach(Window&) = 0;
 
        Point loc;
        int width;
        int height;
        string label;
        Callback do_it;
 
        virtual ~Widget() { }
 
    protected:
        Window* own;    // every Widget belongs to a Window
        Fl_Widget* pw;  // connection to the FLTK Widget
    private:
        Widget& operator=(const Widget&); // don't copy Widgets
        Widget(const Widget&);
    };
Window
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
    class Window : public Fl_Window { 
    public:
        // let the system pick the location:
        Window(int w, int h, const string& title);
        // top left corner in xy
        Window(Point xy, int w, int h, const string& title);    
 
        virtual ~Window() { }
 
        int x_max() const { return w; }
        int y_max() const { return h; }
 
        void resize(int ww, int hh) { w=ww, h=hh; size(ww,hh); }
 
        void set_label(const string& s) { copy_label(s.c_str()); }
 
        void attach(Shape& s) { shapes.push_back(&s); }
        void attach(Widget&);
 
        void detach(Shape& s);     // remove s from shapes 
        void detach(Widget& w);    // remove w from window (deactivates callbacks)
 
        void put_on_top(Shape& p); // put p on top of other shapes
 
    protected:
        void draw();
 
    private:
        vector<Shape*> shapes;     // shapes attached to window
        int w,h;                   // window size
 
        void init();
    };



Вопрос такой. Как в объект Out_box вывести строки разделённые "\n"


C++
1
2
3
4
//....    
Out_box ob;    
//...    
ob.put("first line \n second line");

Вывод выглядит так:

first line ^J second line
А нужно так:

first line
second line
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2013, 12:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Страуструп FLTK newline в Out_box (C++):

Бьерн Страуструп. Инсталляция библиотеки FLTK - C++
Всем доброго времени суток. Помогите пожалуйста решить проблему. Хочу сразу оговориться, что уровень моих знаний в области программирования...

FLTK - C++
Добрый день, подскажите начинающему, как мне установить (использовать) библиотеку fltk в среде Microsoft Visual Studio 2010?

Не работает FLTK - C++
Решил поюзать FLTK, установил (вроде бы), инклуды все видит. Набрал тривиальный код: #include &lt;FL/Fl.H&gt; #include &lt;FL/Fl_Box.H&gt; ...

Информация по FLTK - C++
Привет. Вот решил научиться создавать GUI и установил библиотеку FLTK. Установить-то я установил, а вот как пользоваться - не знаю. Может...

Страуструп. задание - C++
насколько я понял задание - есть класс class STC { unexpected_handler old; public: STC(unexpected_handler h) { ...

Страуструп и Графика - C++
Начал читать Страуструпа. По настоянию автора подключил его заголовочные файлы и библиотеку FLTK. Но программа не работает: ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,061
Завершенные тесты: 1
12.09.2013, 12:26 #2
Цитата Сообщение от Cynacyn Посмотреть сообщение
Вывод выглядит так:
куда производится вывод и какой функцией
0
Cynacyn
33 / 33 / 0
Регистрация: 02.05.2013
Сообщений: 109
12.09.2013, 12:43  [ТС] #3
Цитата Сообщение от Raali Посмотреть сообщение
куда производится вывод и какой функцией
вывод происходит в объект Out_box, методом put

C++
1
2
3
4
void Out_box::put(const string& s)
{
    reference_to<Fl_Output>(pw).value(s.c_str());
}
Определение
C++
1
int Fl_Output::value(char* str);
не могу найти

reference_to:
C++
1
2
3
4
5
6
7
8
9
    
    typedef void* Address;    // Address is a synonym for void*
    typedef void(*Callback)(Address, Address);    // FLTK's required function type for all callbacks
 
template<class W> W& reference_to(Address pw)
    // treat an address as a reference to a W
    {
        return *static_cast<W*>(pw);
    }
0
Миниатюры
Страуструп FLTK  newline в Out_box  
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,061
Завершенные тесты: 1
12.09.2013, 12:54 #4
а если так, то что выведет?
C++
1
ob.put("first line \x0D\x0A second line");
0
Cynacyn
33 / 33 / 0
Регистрация: 02.05.2013
Сообщений: 109
12.09.2013, 12:57  [ТС] #5
Цитата Сообщение от Raali Посмотреть сообщение
а если так, то что выведет?
C++
1
ob.put("first line \x0D\x0A second line");
вот
first line ^M^J second line
0
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,061
Завершенные тесты: 1
12.09.2013, 12:59 #6
Цитата Сообщение от Cynacyn Посмотреть сообщение
first line ^M^J second line
может быть этот Widget вообще не поддерживает множественных строк?
1
Cynacyn
33 / 33 / 0
Регистрация: 02.05.2013
Сообщений: 109
12.09.2013, 13:04  [ТС] #7
Цитата Сообщение от Raali Посмотреть сообщение
может быть этот Widget вообще не поддерживает множественных строк?
может быть.

инфу не получается нагуглить.
0
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
12.09.2013, 13:17 #8
Цитата Сообщение от Raali Посмотреть сообщение
может быть этот Widget вообще не поддерживает множественных строк?
В точку. Первая ссылка в гугле http://www.fltk.org/documentation.ph...Fl_Output.html
1
Cynacyn
33 / 33 / 0
Регистрация: 02.05.2013
Сообщений: 109
12.09.2013, 13:27  [ТС] #9
Спасибо!

Кому интересно, нужно изменить определение Out_box:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <FL/Fl_Multiline_Output.H>
//...
void Out_box::put(const string& s)
{
    //reference_to<Fl_Output>(pw).value(s.c_str());
    reference_to<Fl_Multiline_Output>(pw).value(s.c_str());
}
 
//------------------------------------------------------------------------------
 
void Out_box::attach(Window& win)
{
    //pw = new Fl_Output(loc.x, loc.y, width, height, label.c_str());
    pw = new Fl_Multiline_Output(loc.x, loc.y, width, height, label.c_str());
    own = &win;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2013, 13:27
Привет! Вот еще темы с ответами:

Задача:Страуструп. 4.11.4 - C++
1.Напишите программу,которая печатает символы от 'a' до 'z' и цифры от '0' до '9' и их целые значения. 2.Проделайте то же самое для...

Инсталляция библиотеки FLTK - C++
Пытаюсь установить библиотеку fltk, так как написано в учебнике Страуструпа. Но в итоге ========== Построение: успешно: 1, с ошибками:...

vs2010+fltk+lnk2019 - C++
Помогите пожалуйста,разобраться с ошибками.Не гоните на гугл или поиск по форуму,ибо ничего подходящего не нашёл. #include...

Инсталяция библиотеки FLTK - C++
В книге чтобы инсталировать, открыть файл fltk.dsw, а в каталоге нет файлов такого формата, все *.vcproj. Помогите установить


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.09.2013, 13:27
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru