Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
51
Добавлен:
02.04.2015
Размер:
8.79 Mб
Скачать

Глава 21. "Тащить и бросать" 305

Механизм транспортировки 305

Рис. 21-1. Упакованные данные и заголовки 305

Использование "тащи и бросай" 306

Запуск операции "тащи и бросай" 306

Пример 307

Получение событий "тащи и бросай" 308

Виджет-источник 308

Виджет-адресат 309

Отмена операции "тащи и бросай" 310

Регистрация новых транспортных типов 311

Простая структура данных 311

Более сложная структура 313

Список ссылок на очистку 313

Эндиан-список 313

Fixup-список 314

Элемент реестра 316

Транспортные функции 316

Оба приложения 316

Приложение-источник 316

Приложение-адресат 317

Глава 22. Регионы 318

Координатное пространство Photon'а 318

Рис. 22-1. Координатное пространство Photon'а 318

Координаты региона 319

Начало координат региона 319

Начальные размеры и расположение 319

Начало координат в (0,0) и начальный прямоугольник в (0,0) 319

Начало координат в (0,0) и начальный прямоугольник не в (0,0) 319

Начало координат не в (0,0) и начальный прямоугольник не в (0,0) 320

О регионах потомка 320

Регионы и отсечение событий 321

Рис. 22-2. Регионы и отсечение событий 321

Месторасположение и иерархия 321

Рис. 22-3. Иерархия регионов типичной системы Photon'а 321

Родительский регион 322

Братские регионы 322

Месторасположение по умолчанию 322

Флаг Ph_FORCE_FRONT 323

Задаваемое месторасположение 324

Использование регионов 324

Открытие региона 324

Размещение регионов 325

Изменение месторасположения региона 325

Изменение родителя 325

Задаваемые братья 325

Системная информация 326

Глава 23. События 327

События мыши 327

Нажатие кнопки 327

Отпускание кнопки 327

Несколько щелчков 327

Клавиши-модификаторы 328

Генерирование событий 329

Нацеливание на определённые регионы 330

Неисключительное событие 330

Направленное событие 330

Нацеливание на определённые виджеты 330

События, генерируемые клавиатурными клавишами 330

Координаты события 331

Обработчики события – необработанные и отфильтрованные ответные реакции 332

Накопление событий 333

Сжатие событий 334

Перетаскивание 334

Инициализация перетаскивания 334

Контурное перетаскивание 335

Непрозрачное перетаскивание 336

Обработка событий перетаскивания 336

Контурное перетаскивание 336

Непрозрачное перетаскивание 337

Глава 24. Управление окнами 339

Флаги управления окнами 339

Флаги отображения окна 339

Флаги управления окном 340

Оконные флаги уведомления 340

Ответная реакция уведомления 341

Пример: проверка закрытия окна 341

Получение и установка состояния окна 342

Управление несколькими окнами 344

Функции управления окнами 344

Запуск самостоятельного приложения 344

Модальные диалоги 344

Глава 25. Программирование в Photon'е без PhAb'а 349

Основные шаги 349

Компилирование и линковка не PhAB'овского приложения 349

Образец приложения 350

Что происходит 350

PtInit() 350

PtCreateWidget() – первый вызов 351

PtSetArg() 351

PtCreateWidget() – второй вызов 351

PtRealizeWidget() 351

PtMainLoop() 352

Подсоединение программного кода приложения к виджету 352

Ответные реакции 352

Обработка событий 353

Полный пример приложения 353

Приложение 1. Архитектура Photon'а 355

Пространство событий 355

Пространство событий 355

Регионы и события 356

События 356

Начальный набор прямоугольников 356

Набор прямоугольников события 356

Накопленный набор прямоугольников 356

Регионы 357

Расщеплённый образ регионов Photon'а 357

Чувствительность 357

Непрозрачность 358

Краткая сводка атрибутов 358

Регистрация событий (event logging) 358

Модификация событий 358

Взаимосвязь родитель/потомок 359

Координатное пространство Photon'а 359

Корневой регион 359

Типы событий 359

Как владельцы регионов уведомляются о событиях 360

Упорядоченный опрос 360

Синхронное уведомление 360

Асинхронное уведомление 360

Регион устройств 360

Фокусировка указателя 361

Фокусировка клавиатуры 361

События перетаскивания 361

Событие "тащи и бросай" 361

Драйверы фотона 362

Драйверы ввода 362

Драйвер мыши 362

Драйвер клавиатуры 362

Драйверы вывода 362

Графический драйвер 362

Несколько графических драйверов 363

Драйверы, использующие отдельные регионы 363

Драйверы, использующие перекрывающиеся регионы 363

Инкапсуляция драйверов 363

Оконный менеджер Photon'а 363

Регионы оконных рамок 364

Регион фокусировки 364

Регион рабочей области 364

Регион фона 364

ПРИЛОЖЕНИЕ 2. ОБЗОР ВИДЖЕТОВ 365

Приложение 3. Поддержка многоязычности Unicode 368

Широкие и многобайтовые символы 368

Unicode 368

UTF-8 кодирование 369

Функции преобразования 369

Другие кодировки 370

Драйверы клавиатуры 371

Пример: текстовые виджеты 371

Слепые клавиши (dead keys) и скомпонованные последовательности 371

Скомпонованные последовательности Photon'а 372

Приложение 4. Photon во встроенных системах 375

Принимаемые допущения 375

Введение 375

Шаги по загрузке Photon'а 376

Шаг 1. Экспорт переменной окружения PHOTON_PATH 376

Шаг 2. Запуск сервера Photon'а 376

Шаг 3. Запуск драйверов ввода 377

Шаг 4. Запуск менеджера шрифтов 377

Конфигурирование шрифтов 378

Запуск сервера шрифтов 379

Шаг 5. Переключение в графический режим 379

Установка карты в правильный режим 380

Шаг 6. Запуск графического драйвера 381

Шаг 7. Запуск оконного менеджера 381

Необходимые файлы 382

Шаг 8. Запуск Вашего приложения 382

Необходимые файлы 382

Пояснения 382

Флэш-файловая система 382

Графика 383

Пример 384

Требуемые бинарные файлы 384

Требующиеся библиотеки 385

Требуемые шрифты 386

Службы шрифтов 387

Сборка всего этого в единое целое 387

Полезные советы 389

Приложение 5. Использование PhAB под Microsoft Windows 391

Photon в одиночном окне 391

Завершение PhAB 391

Дополнительные опции 392

Файловые имена с буквами в обоих регистрах 392

DDD – Отладчик Отображения Данных 392

Строка запуска отладчика 393

Функциональность панели управления ресурсами 393

Разработка индивидуальных виджетов и PhAB 394

Статическое линкование Ваших индивидуальных виджетов 394

Глоссарий 396

Ненеобходимое послесловие переводчика. 406

Соседние файлы в папке Литература