User Tag List

Показано с 11 по 20 из 44

Тема: Оконный интерфейс для БК0011

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Оконный интерфейс для БК0011

    Тут я буду писать реализованное API

    Первая цель - это демо программа в корой будет несколько окон MessageBox. Это окно с изображением, текстом, кнопками Да, Нет. На нажатии на кнопку Да будет запускаться еще одно окно. При нажатии на Нет, окно будет закрываться. Окна можно будет перемещать и изменять их размер. Система должна корректно перерисовывать весь инетрфейс (используя отсечение). Используется черно-белый графический режим.

    Вторая цель - это панель пуск. При нажатии на пуск открывается всплывающее меню со списком возможных действий и программ. Так же на панели находятся кнопки окон и объем свободной памяти.

    Реализованное API

    Память:
    MemAlloc(R1 - размер) - Выделяет память. Возвращает R0-указатель.
    MemFree(R0 - указатель) - Освобождает память.
    ZeroMemory(R0 - указатель, R1 - размер) - Заполняет память нулями.
    iFreeMem - Объем свободной памяти (только для чтения)

    Глобальные переменные
    iRectX, iRectY, iRectX1, iRectY1 - Используется для передачи параметров во многие функции.
    DecComRect() - Уменьшить iRect (iRectX++, iRectY++, iRectX1--, iRectY1--).

    Окна:
    CreateWindow(R0-предок, R1-указатель на WndProc) - Создает окно. Возвращает R0-указатель на объект.
    DestroyWindow(R0-окно) - Уничтожает окно.
    SendMessage(R0-окно, R1-сообщение ...) - Переключает контекст задачи, сохраняет регистры R0-R3, R5 и запускает функцию WndProc.
    Invalidate(R0-окно) - Поставить окно в очередь на перерисовку.
    WindowFromPoint(R0,R1) - Какое окно находится в этой точке. Возвращается R2-указатель на объект.
    RedrawWindows() - Перерисовать интерфейс (Разослать сообщения WM_PAINT. Вызывается системой автоматически при простое.)
    iGraphWindow - Окно выбранное для функций рисования (только чтение)

    Курсор мыши:
    iCursorImage - Изображение курсора
    iCursorX, iCursorY - Положение курсора мыши на экране (только для чтения)
    ShowMouse() - Показывает курсор мыши
    HideMouse() - Прячет курсор мыши (Восстанавливает изображение под ним).

    Рисование (эти функции рисуют в окне. Учитывается, если окно частично закрыто другим окном):
    SetPixel(R1,R2-положение) - рисование точки
    BitBlt(R1,R2-положение, R3-изображение) - Вывод изображения (с отсечением определенным в iComRect)
    DrawText(R1,R2-положение, R3-текст) - Вывод текста шрифтом 8x10 (с отсечением определенным в iComRect)
    Rectangle() - Вывод прямоугольника размером iComRect
    FillRect() - Вывод закрашенного прямоугольника размером iComRect
    InverseMode(R1) - Включить/выключить инверсный режим для DrawText и FillRect.

    Драйвер экрана (рисует на экране):
    DrvSetPixel(...), DrvBitBlt(...), DrvDrawText(...), DrvFillRect(...).
    DrvXorRect(...) - Рисование пунктирного прямоугольника XOR-ом (Для изменения размера и положения окна)

    Объекты интерфейса (функции WndProc):
    CtlWindow(...) - Рамка и заголовок окна. Логика изменения размера, перемещения.

    События окон:
    WM_CONSTRUCTOR - Получить кол-во дополнительной памяти в объекте окна
    WM_PAINT - Окно необходимо перерисовать
    WM_LBUTTONDOWN - Нажатие левой кнопки мыши
    WM_LBUTTONUP - Отпускание левой кнопки мыши
    WM_LBUTTONDBLCLK - Двойной клик
    WM_MOUSEWHEEL - Колесо мыши
    WM_RBUTTONDOWN - Нажатие правой кнопки мыши
    WM_RBUTTONUP - Отпускание правой кнопки мыши
    WM_MOUSEMOVE - Перемещение курсора мыши
    WM_CAPTURECHANGED - Окно потеряло монополию над курсором мыши
    WM_SETFOCUS, WM_KILLFOCUS - Окно получило/потеряло фокус.
    WM_KEYDOWN - Нажатие клавиши клавиатуры (рассылается, только если фокус на окне)
    WM_DESTROY - Окно сейчас будет уничтожено
    WM_ACTIVATE - Окно стало/перестало быть активным (только для объектов CtlWindow)
    WM_CLOSE - Пользователь хочет закрыть окно
    WM_ENABLE - Изменение свойства Enabled окна
    WM_MOVE - Окно было перемещено
    WM_SIZE - Размер окна был изменен
    WM_TIMER - Таймер

    Объект окна доступен для чтения программисту. Он содержит поля:
    Task - Задача, которой принадлежит окно
    Parent - Указатель на окно предка
    FirstChild - Указатель на первое окно ребенка
    LastChild - Последнее окно ребенок
    PrevWindow - Предыдущий брат
    NextWindow - Следующий брат
    Left, Top - Относительные координаты окна
    Width, Height - Размер окна
    X, Y, X1, Y1 - Координаты окна относительно экрана
    WndProc - Обработчик сообщений окна
    Style & FW_Intersect - Окно частично закрыто другими окнами
    Style & FW_TabStop - Окно может получить фокус (получать сообщения WM_KEYDOWN)
    Style & FW_Visible - Окно отображается
    Style & FW_Enabled - Окно доступно пользователю
    Style & FW_TopMost - Окно всегда сверху

    Планируемое API я временно убрал. Там очень много функций.
    Последний раз редактировалось vinxru; 17.03.2012 в 01:13.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ищу схему на интерфейс И12
    от AlecV в разделе ДВК, УКНЦ
    Ответов: 8
    Последнее: 23.07.2022, 07:46
  2. БК0011 разные
    от alexsan в разделе БК-0010/0011
    Ответов: 4
    Последнее: 26.10.2015, 22:40
  3. ST IDE-интерфейс
    от megabyte в разделе Atari
    Ответов: 5
    Последнее: 17.04.2011, 13:02
  4. Интерфейс Спарк
    от Alex III в разделе Внешние накопители
    Ответов: 0
    Последнее: 31.01.2010, 02:13
  5. Ищу БК0010...БК0011
    от GrifonLeo в разделе Барахолка (архив)
    Ответов: 0
    Последнее: 19.05.2009, 07:22

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •