Здравствуйте Atilla, Вы писали:
S>>Тогда юзай wxWindows. У нее лицензия — просто класс. Единственное, чего запрещено — так это распространять ейные модифицированные исходники. Только на солярку, IMHO, придется ее вместе с GTK впихивать — Motif версия, судя по слухам, сильно кривая.
A>А GTK на солярку нормально ставится?
Не знаю, не пробовал. Но люди говорят что ставят...
A>Да, еще хотелось бы спросить, насколько эти либы "серьезные" и не окажется ли так, что лет через 5 эту либу хрен достанешь или текущая версия со старым кодом собираться не будет?
Насчет серьезности — либе этой уже 10 лет и загибаться вроде не собирается. Хотя гарантий, само собой, никаких. Текущая версия со старым кодом собираться не будет — вполне вероятно, у меня такое уже было (хотя я wxWindows всего год использую), но легко вылечилось. Вообще там такой подход принят — если чего-то кардинально переделывается, предусматриваются макросы для совместимости. Хотя как они работают, я пока не проверял В общем, я, когда выбирал кроссплатформенный гуевый тулкит, ничего серьезней среди бесплатного с С++'ным интерфейсом не нашел Библиотек вроде бы полно, но большая часть из них давно умерла — причем, как правило, не успев родиться.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте Atilla, Вы писали:
A>А Вы не подскажете толковый manual по wxWindows? А то хелпа, которую они поставляют вместе с библиотекой больше похожа на справочник...
Вообще-то там еще примеров куча — я по ним с библиотекой знакомился, и еще есть wxTutorial.pdf, в нем вроде довольно расписано. Этот самый tutorial недавно появился, в версии 2.3.2 его не было. Так что качай ее, если учебник нужен. В дистрибутиве для виндов точно есть. А вообще там все по интерфейсу слегка смахивает на MFC, хотя потроха (виндовой версии) кардинально отличаются.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте Sergey, Вы писали:
S>Вообще-то там еще примеров куча — я по ним с библиотекой знакомился,
я в общем-то сейчас так и делаю
S> и еще есть wxTutorial.pdf, в нем вроде довольно расписано. Этот самый tutorial недавно появился, в версии 2.3.2 его не было. Так что качай ее, если учебник нужен. В дистрибутиве для виндов точно есть.
хм... странно: у меня не оказалось ладно, поищу у них на сайте.
S> А вообще там все по интерфейсу слегка смахивает на MFC
да по-моему не слегка, а порядочно. Меня очень порадовало, что там есть Constraint'ы. Почему такого нет в MFC для меня полная загадка.
S> , хотя потроха (виндовой версии) кардинально отличаются.
MFC по больше части — обычные обертки. Из потрохов — проверки на ошибки, да throw в конструкторах
Здравствуйте Atilla, Вы писали:
S>> и еще есть wxTutorial.pdf, в нем вроде довольно расписано. Этот самый tutorial недавно появился, в версии 2.3.2 его не было. Так что качай ее, если учебник нужен. В дистрибутиве для виндов точно есть.
A>хм... странно: у меня не оказалось ладно, поищу у них на сайте.
Отдельно его вряд ли найдешь. В принципе, могу мылом прислать.
S>> А вообще там все по интерфейсу слегка смахивает на MFC
A>да по-моему не слегка, а порядочно. Меня очень порадовало, что там есть Constraint'ы.
Из документации: Note: constraints are now deprecated and you should use sizers instead
Sizer's действительно на порядок круче и удобнее constraint'ов, не зря на constraint'ы забили.
A>Почему такого нет в MFC для меня полная загадка.
Наверное, потому что M$ на MFC забил и усиленно продвигает .Net. Там сайзеры есть.
S>> , хотя потроха (виндовой версии) кардинально отличаются.
A>MFC по больше части — обычные обертки. Из потрохов — проверки на ошибки, да throw в конструкторах
Я имелл ввиду в основном подход к обработке сообщений, связи класс<->окно. Это у wxWindows кардинально отличается от MFC.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте Atilla, Вы писали:
A>Еще в догонку вопрос:
A>там во всех примерах что-то типа такого:
A>
wxButton* b=new wxButton(this, ID_B, ...);
A>и никакого delete! Прям как в MC++ A>Это так и надо? Там они потом как-то сами уничтожаются? (вроде бы leak'ов не происходит)
Угу. В виндах — по Idle'у. Но это только с окнами так. Для GDI обектов там тоже вроде какие-то кэши есть, отключаемые, но с ними разбираться пока не было необходимости.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте Sergey, Вы писали:
S>Отдельно его вряд ли найдешь. В принципе, могу мылом прислать.
Было бы неплохо. Если оно не больше 3 мегов
S>Sizer's действительно на порядок круче и удобнее constraint'ов, не зря на constraint'ы забили.
Ok, учтем. thnx
S>Наверное, потому что M$ на MFC забил и усиленно продвигает .Net. Там сайзеры есть.
Забил-то он сравнительно недавно. А вот почему раньше не сделал — не понятно.
S>Я имелл ввиду в основном подход к обработке сообщений, связи класс<->окно. Это у wxWindows кардинально отличается от MFC.
В MFC все окна кажись в map'е хранятся... а тут как? У меня пока в исходники лезть руки не дошли
Еще вопрос: wxWizard в принципе не ресайзится или что-то можно сделать?? Кроме того, чтобы свой визард написать, конечно...
Здравствуйте Atilla, Вы писали:
S>>Отдельно его вряд ли найдешь. В принципе, могу мылом прислать.
A>Было бы неплохо. Если оно не больше 3 мегов
Ушло. Оно меньше полуметра.
S>>Наверное, потому что M$ на MFC забил и усиленно продвигает .Net. Там сайзеры есть.
A>Забил-то он сравнительно недавно. А вот почему раньше не сделал — не понятно.
Да не надо им это просто. Продукт и так покупают, зачем что-то делать. У них и C++ компилятор-то почти самый убогий среди более-менее современных, и что с того?
S>>Я имелл ввиду в основном подход к обработке сообщений, связи класс<->окно. Это у wxWindows кардинально отличается от MFC.
A>В MFC все окна кажись в map'е хранятся... а тут как? У меня пока в исходники лезть руки не дошли
Ну, тут все окна в хэш таблице, отдельно есть список top-level окон. А в MFC, если я ничего не путаю, мэп с окнами ассоциирован с потоком — что, IMHO, есть огромная разница. Для каждого окна есть список обработчиков сообщений, их динамически менять можно.
A>Еще вопрос: wxWizard в принципе не ресайзится или что-то можно сделать?? Кроме того, чтобы свой визард написать, конечно...
Да вроде никак. Он, если я правильно помню, сам выставляет размер так, чтоб все страницы влезли — метод Fit.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
уже получил. Спасибо.
S>Да не надо им это просто. Продукт и так покупают, зачем что-то делать. У них и C++ компилятор-то почти самый убогий среди более-менее современных, и что с того?
Да ладно, интел прекрасно в VS интегрируется.
A>>Еще вопрос: wxWizard в принципе не ресайзится или что-то можно сделать?? Кроме того, чтобы свой визард написать, конечно...
S>Да вроде никак. Он, если я правильно помню, сам выставляет размер так, чтоб все страницы влезли — метод Fit.
Значит придется ручками делать (
я тут багу нашел с constraints и sizers: если 2 кнопочки рядом и окошко ресайзить, что кнопки перерисовываются глючно (иногда одна поверх другой рисуется и т.п.). У Вас такое было? Может быть знаете как это лечить?
Здравствуйте Atilla, Вы писали:
S>>Да не надо им это просто. Продукт и так покупают, зачем что-то делать. У них и C++ компилятор-то почти самый убогий среди более-менее современных, и что с того?
A>Да ладно, интел прекрасно в VS интегрируется.
Это другой компилятор за отдельные деньги... И MS тут не при чем.
A>я тут багу нашел с constraints и sizers: если 2 кнопочки рядом и окошко ресайзить, что кнопки перерисовываются глючно (иногда одна поверх другой рисуется и т.п.). У Вас такое было? Может быть знаете как это лечить?
По всякому было Так с constraints или с sizers бага? Хотя для начала все равно надо смотреть, не перехватываешь ли OnSize и если да, то отдаешь ли паренту. А вообще — код в студию. Впрочем, отвечу все равно не раньше понедельника
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте Sergey, Вы писали:
S>По всякому было Так с constraints или с sizers бага? Хотя для начала все равно надо смотреть, не перехватываешь ли OnSize и если да, то отдаешь ли паренту. А вообще — код в студию. Впрочем, отвечу все равно не раньше понедельника
И так и так. И я там ничего не перехватываю... Вообще, пример из help'а
MyDialog::MyDialog():wxDialog(NULL, -1, "Test", wxDefaultPosition, wxDefaultSize, wxRESIZE_BORDER|wxDEFAULT_DIALOG_STYLE)
{/*
wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
// create text ctrl with minimal size 100x60
topsizer->Add(
new wxTextCtrl( this, -1, "My text.", wxDefaultPosition, wxSize(100,60), wxTE_MULTILINE),
1, // make vertically stretchable
wxEXPAND | // make horizontally stretchable
wxALL, // and make border all around
10 ); // set border width to 10
wxBoxSizer *button_sizer = new wxBoxSizer( wxHORIZONTAL );
button_sizer->Add(
new wxButton( this, wxID_OK, "OK" ),
0, // make horizontally unstretchable
wxALL, // make border all around (implicit top alignment)
10 ); // set border width to 10
button_sizer->Add(
new wxButton( this, wxID_CANCEL, "Cancel" ),
0, // make horizontally unstretchable
wxALL, // make border all around (implicit top alignment)
10 ); // set border width to 10
topsizer->Add(
button_sizer,
0, // make vertically unstretchable
wxALIGN_CENTER ); // no border and centre horizontally
SetAutoLayout( TRUE ); // tell dialog to use sizer
SetSizer( topsizer ); // actually set the sizer
// topsizer->Fit( this ); // set size to minimum size as calculated by the sizer
topsizer->SetSizeHints( this ); // set size hints to honour mininum size
Layout();*/
SetAutoLayout(true);
m_button=new wxButton(this, ID_MYBUTTON, "TestButton", wxPoint(10, 10), wxSize(80, 40));
m_text=new wxTextCtrl(this, ID_MYTEXT, "Change this text!",
wxPoint(-1, -1), wxSize(100, 100), wxTE_MULTILINE);
counter=5;
wxButton* b2=new wxButton(this, ID_MYBUTTON+100, "TestButton2", wxPoint(10, 10), wxSize(80, 40));
wxLayoutConstraints *c;
c = new wxLayoutConstraints;
c->left.SameAs(this, wxLeft, 5);
c->right.SameAs(this, wxRight, 5);
c->top.SameAs(this, wxTop, 5);
c->bottom.Above(m_button, -5);
m_text->SetConstraints(c);
c = new wxLayoutConstraints;
c->right.SameAs(this, wxRight, 5);
c->bottom.SameAs(this,wxBottom, 5);
c->width.AsIs(); c->height.AsIs();
m_button->SetConstraints(c);
c = new wxLayoutConstraints;
c->right.LeftOf(m_button, 5);
c->bottom.SameAs(this,wxBottom, 5);
c->width.AsIs(); c->height.AsIs();
b2->SetConstraints(c);
Layout();
}
Здравствуйте Atilla, Вы писали:
S>>По всякому было Так с constraints или с sizers бага? Хотя для начала все равно надо смотреть, не перехватываешь ли OnSize и если да, то отдаешь ли паренту. А вообще — код в студию. Впрочем, отвечу все равно не раньше понедельника
A>И так и так. И я там ничего не перехватываю... Вообще, пример из help'а
У меня (wxMSW 2.3.3) приведенный код (тот, что с сайзерами) работает нормально. С констрайнтами — минимальный размер диалога слишком маленький, при этом кнопки в диалог не влазят, но в остальном тоже нормально.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[4]: Qt бесплатна только при некоммерческом ее использован
Здравствуйте Kubyshev Andrey, Вы писали:
F>>>>Подскажите, плиз, какую-нить GUI библиотеку бесплатную
A>>>Если под unix то Qt безусловно рулит. www.trolltech.com L>>А разве она бесплатная? KA>dlya vsego krome windows
Qt бесплатна только при некоммерческом ее использовании
Здравствуйте Zigmar, Вы писали:
Z>Motif — эдакий монстрик. Я бы не советовал лезть, особенно начинающим.
Motif — отличная, очень продуманная и гибкая библиотека, которая на пять сек обертывается классами, которые тебе необходимы.
И я с нее начинал, кстати, и не жалею :)
Z>tcl/tk — сам не использовал, но рассказывали он хорошь для полного логического отделения ГУЯ от остальной программы. Т.е. прогу пишешь на компилируемом языке, интерефейс на скрипте и через стандартные стриамы между ними общаешься. Классно то что интерфейс можно "on fly" менять — он ведь на скриптовом языке :)
Я думаю, если ты попробуешь ее использовать, ты быстро переменишь свое мнение на противоположное :)
Более убогого и неудобного скрипта я не встречал (ИМХО). До сих пор с ужасом вспоминаю то время, когда мне приходилось разрабатывать интерфейс на Tcl/Tk...
Здравствуйте Sergey, Вы писали:
S>У меня (wxMSW 2.3.3) приведенный код (тот, что с сайзерами) работает нормально. С констрайнтами — минимальный размер диалога слишком маленький, при этом кнопки в диалог не влазят, но в остальном тоже нормально.
хм... у меня 2.2.9 и если быстро ресайзить окно, то перерисовка контролов глючит: на кнопках остаются следы других кнопок и т.п.
Я, правда, уже решил для себя эту проблему: не нравится — быстро не ресайзь
Здравствуйте jazzer, Вы писали:
J>Motif — отличная, очень продуманная и гибкая библиотека, которая на пять сек обертывается классами, которые тебе необходимы. J>И я с нее начинал, кстати, и не жалею
А Вы обычно все сами классами оборачиваете или пользуетесь готовыми врапперами?
Здравствуйте Atilla, Вы писали:
A>Здравствуйте jazzer, Вы писали:
J>>Motif — отличная, очень продуманная и гибкая библиотека, которая на пять сек обертывается классами, которые тебе необходимы. J>>И я с нее начинал, кстати, и не жалею :)
A>А Вы обычно все сами классами оборачиваете или пользуетесь готовыми врапперами?
Потому что обычно под разные задачи нужны разные обертки.
А так как API всегда определенного формата (в чисто текстовом смысле: во первых, синтаксис С++ :), а во-вторых, обычно если какие-то параметры в функции передаются вместе, то они обычно именуются одинаково и в одном и том же порядке объявляются), то очень быстро пишется скрипт на перле, который по АПИ сгенерит мне то, что мне нужно.
А Motif и сам по себе достаточно хорош :)
И, насколько это возможно в чистом С, объектно ориентирован — рекомендую посмотреть хедеры, там много забавного.
Здравствуйте jazzer, Вы писали:
J>Qt бесплатна только при некоммерческом ее использовании
Для Windows не существует бесплатной версии 3.0
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re[6]: Что окончательно ставит на ней крест :) (-)
Здравствуйте Anatolix, Вы писали:
A>Здравствуйте jazzer, Вы писали:
J>>Qt бесплатна только при некоммерческом ее использовании
A>Для Windows не существует бесплатной версии 3.0