FreeBasic
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.

Gtk+ - FreeBASIC GUI Library for Windows/Linux

Участников: 2

Перейти вниз

Gtk+ - FreeBASIC GUI Library for Windows/Linux Empty Gtk+ - FreeBASIC GUI Library for Windows/Linux

Сообщение  justar Вс Янв 15, 2012 9:10 am

Кто-нибудь заморачивался с Gtk+?
После поиска и скачивания офигительного количества dll примеры стали запускаться, но не получается сделать ничего большего, чем пустое окно: при попытке показать любой виджет на окне приложение вылетает с ошибкой
Gtk+ - FreeBASIC GUI Library for Windows/Linux Erro
Код:

#Include "gtk\gtk.bi"

Dim wnd As GtkWidget Ptr
Dim label As GtkWidget Ptr

gtk_init (0, 0)

wnd = gtk_window_new (GTK_WINDOW_TOPLEVEL)
gtk_window_set_title (GTK_WINDOW(wnd), "Hello")
gtk_container_set_border_width (GTK_CONTAINER (wnd), 50)
g_signal_connect (G_OBJECT (wnd), "destroy", G_CALLBACK (@gtk_main_quit), 0)
gtk_widget_show (wnd)

label = gtk_label_new("И тебе привет")
gtk_container_add(GTK_CONTAINER(wnd), label)
gtk_widget_show(label)

gtk_main () 
Аналогичная ошибка вылетает при попытке разместить в окне кнопку.
Ошибка происходит на вызове функции gtk_widget_show ()

justar

Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 50
Откуда : Кишинёв, Республика Молдоа

Вернуться к началу Перейти вниз

Gtk+ - FreeBASIC GUI Library for Windows/Linux Empty Re: Gtk+ - FreeBASIC GUI Library for Windows/Linux

Сообщение  trew Вс Янв 15, 2012 11:21 am

justar пишет:Кто-нибудь заморачивался с Gtk+?
.........
Аналогичная ошибка вылетает при попытке разместить в окне кнопку.
Ошибка происходит на вызове функции gtk_widget_show ()

Твой код правильный, и нормально работает, за исключением отображения русских символов. Но это тоже решается в GTK есть функция для преобразования. Попробуй переустановить GTK. Ты случаем не новые заголовки используешь от TJF ? Они нормально работают, если их не мешать со старыми заголовками.

trew

Сообщения : 331
Дата регистрации : 2010-10-14

Вернуться к началу Перейти вниз

Gtk+ - FreeBASIC GUI Library for Windows/Linux Empty Re: Gtk+ - FreeBASIC GUI Library for Windows/Linux

Сообщение  justar Вс Янв 15, 2012 1:24 pm

trew пишет:
Твой код правильный, и нормально работает, за исключением отображения русских символов. Но это тоже решается в GTK есть функция для преобразования.
С латиницей в лейбле всё равно та же ошибка вылетает...
Кстати, какая функция? Есть примеры использования?


Попробуй переустановить GTK.
По сути, я его переустанавливал уже 2 раза.
Вначале просто скачивал и закидывал в windows\system32 те dll, на отсутствие которых ругалось приложение.
Затем нашёл инсталляторы gtk-2.12.9-win32-1 и -2 и установил их...

Видно проблема была как раз в тех либах, что я устанавливал отдельно. Удалил их все, деинсталировал установленые енвайроменты и установил заново gtk-2.12.9-win32-1.exe - и всё запустилось.

justar

Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 50
Откуда : Кишинёв, Республика Молдоа

Вернуться к началу Перейти вниз

Gtk+ - FreeBASIC GUI Library for Windows/Linux Empty Re: Gtk+ - FreeBASIC GUI Library for Windows/Linux

Сообщение  trew Вс Янв 15, 2012 2:12 pm

установил заново gtk-2.12.9-win32-1.exe - и всё запустилось.

Уже хорошо. Ниже пример , что ты просил:

Код:
#Include "gtk/gtk.bi"

Declare Sub EVENTS_BUTTON()'объявление процедуры обработки события Label
Dim Shared As GtkWidget Ptr window_ 'указатель на объект-окно
Dim As GtkWidget Ptr vbox ' указатель на контейнер
Dim Shared As GtkWidget Ptr Label ' указатель на Label
gtk_init (0, 0) ' инициализация GTK
window_ = gtk_window_new (GTK_WINDOW_TOPLEVEL) ' создаем новое окно
gtk_window_set_title(GTK_WINDOW(window_),"") 'Название в заголовке окна
gtk_window_set_default_size(GTK_WINDOW(window_), 100, 60)' ставим размер окна
gtk_window_set_position(GTK_WINDOW(window_), GTK_WIN_POS_CENTER)' окно по центру экрана
vbox = gtk_event_box_new () ' создаем контейнер, обеспечивающий событие для Label
gtk_container_add (GTK_CONTAINER(window_), vbox)' крепим контейнер к нашему окну
Label= gtk_label_new(g_locale_to_utf8("Вывести сообщение",Len("Вывести сообщение"),0,0,0)) ' создаем Label
gtk_container_add (GTK_CONTAINER(vbox),Label )' крепим Label к контейнеру
gtk_widget_set_events (vbox, GDK_BUTTON_PRESS_MASK)'Устанавливаем маску события (см. GdkEventMask) для виджета
g_signal_connect (G_OBJECT (vbox), "button_release_event",G_CALLBACK (@EVENTS_BUTTON()), 0) 'сигнал обработки Label
g_signal_connect(G_OBJECT(window_), "destroy", G_CALLBACK (@gtk_main_quit), 0)'сигнал завершения
gtk_widget_show_all (window_)' показываем окно и все в нем
gtk_main () 'вход в главный цикл

'Процедура обработки события Label
Sub EVENTS_BUTTON()
   Dim As String ST = *gtk_label_get_text(Cast(GtkLabel Ptr,Label)) ' получаем текст из Label
   Dim MessBox As GtkWidget Ptr ' указатель на новый диалог
   MessBox = gtk_message_dialog_new(GTK_WINDOW(window_), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK,ST)' создаем новый диалог
   gtk_window_set_title(GTK_WINDOW(MessBox), g_locale_to_utf8("Сообщение",Len("Сообщение"),0,0,0))'заголовок для диалога
   gtk_dialog_run(GTK_DIALOG(MessBox))'Запуск диалога
   gtk_widget_destroy(MessBox) ' удаление диалога
   gtk_label_set_text(Cast(GtkLabel Ptr,Label),"Hello") ' изменяем текст Label
End Sub

trew

Сообщения : 331
Дата регистрации : 2010-10-14

Вернуться к началу Перейти вниз

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения