crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Приоритет событий GTK
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Гость_Raptor_* Дата 23.2.2014, 18:10
  Что то специалистов по GTK негусто, отвечаю сам себе:
при создании виджета надо вместо инициализации функции обработки клавиатуры
widget_class->key_press_event
добавить тот же самый обработчик с помощью
g_signal_connect при создании виджета (я по быстрому сделал это в expose с помощью статической переменной в роли флага)
после этого можно блокировать событие нажатия клавиши функцией g_signal_handlers_block_by_func прямо внутри этого события,
обработать все остальные события чем то вроде

    static void ProcessGTKEvent(DWORD dwMaxEvent=-1)
    {
        while (gtk_events_pending())
        {
            gtk_main_iteration();
            if(dwMaxEvent!=-1)
            {
                dwMaxEvent--;
                if(dwMaxEvent==0)
                break;
            }
        }
    }


и разблокировать события от клавиатуры функцией
g_signal_handlers_unblock_by_func
Гость_raptor_* Дата 19.2.2014, 10:18
  Пишу свой виджет, hex-редактор, в нем обрабатываются нажатия клавиатуры, например стрелок, при нажатии двигается каретка и перерисовывается виджет функцией gtk_widget_queue_draw, если нажать кнопку и не отпускать, то получается одно событие expose, при отпускании кнопки, а хотелось бы чтобы оно возникало после каждого события нажатия кнопки. Как это сделать? Тое есть имеем:
key_press
key_press
key_press
key_press
key_press
expose

а хотелось бы
key_press
expose
key_press
expose
key_press
expose
key_press
expose

Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 14.7.2020, 23:50