Gtk+ - FreeBASIC GUI Library for Windows/Linux
Участников: 2
Страница 1 из 1
Gtk+ - FreeBASIC GUI Library for Windows/Linux
Кто-нибудь заморачивался с Gtk+?
После поиска и скачивания офигительного количества dll примеры стали запускаться, но не получается сделать ничего большего, чем пустое окно: при попытке показать любой виджет на окне приложение вылетает с ошибкой
Ошибка происходит на вызове функции gtk_widget_show ()
После поиска и скачивания офигительного количества dll примеры стали запускаться, но не получается сделать ничего большего, чем пустое окно: при попытке показать любой виджет на окне приложение вылетает с ошибкой
- Код:
#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
Откуда : Кишинёв, Республика Молдоа
Re: Gtk+ - FreeBASIC GUI Library for Windows/Linux
justar пишет:Кто-нибудь заморачивался с Gtk+?
.........
Аналогичная ошибка вылетает при попытке разместить в окне кнопку.
Ошибка происходит на вызове функции gtk_widget_show ()
Твой код правильный, и нормально работает, за исключением отображения русских символов. Но это тоже решается в GTK есть функция для преобразования. Попробуй переустановить GTK. Ты случаем не новые заголовки используешь от TJF ? Они нормально работают, если их не мешать со старыми заголовками.
trew- Сообщения : 331
Дата регистрации : 2010-10-14
Re: Gtk+ - FreeBASIC GUI Library for Windows/Linux
С латиницей в лейбле всё равно та же ошибка вылетает...trew пишет:
Твой код правильный, и нормально работает, за исключением отображения русских символов. Но это тоже решается в GTK есть функция для преобразования.
Кстати, какая функция? Есть примеры использования?
По сути, я его переустанавливал уже 2 раза.
Попробуй переустановить GTK.
Вначале просто скачивал и закидывал в windows\system32 те dll, на отсутствие которых ругалось приложение.
Затем нашёл инсталляторы gtk-2.12.9-win32-1 и -2 и установил их...
Видно проблема была как раз в тех либах, что я устанавливал отдельно. Удалил их все, деинсталировал установленые енвайроменты и установил заново gtk-2.12.9-win32-1.exe - и всё запустилось.
justar- Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 50
Откуда : Кишинёв, Республика Молдоа
Re: Gtk+ - FreeBASIC GUI Library for Windows/Linux
установил заново 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
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения