ScreenControl
 
Устанавливает или получает параметры внутренней графической библиотеки

Синтаксис

Declare Sub ScreenControl ( ByVal what As Integer, ByRef param1 As Integer = 0, ByRef param2 As Integer = 0, ByRef param3 As Integer = 0, ByRef param4 As Integer = 0 )
Declare Sub ScreenControl ( ByVal what As Integer, ByRef param As String =
"" )

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

ScreenControl( what [, [ param1 ][, [ param2 ][, [ param3 ][, [ param4 ]]]]] )
or,
ScreenControl( what [, param ] )

Параметры

what
определяет функцию для выполнения
param1
Необязательный, первый целочисленный параметр содержит значение, устанавливаемое на вход,  или значение, полученное на выходе
param2
Необязательный, второй целочисленный параметр содержит значение, устанавливаемое на вход,  или значение, полученное на выходе
param3
Необязательный, третий целочисленный параметр содержит значение, устанавливаемое на вход,  или значение, полученное на выходе
param4
Необязательный, четвертый целочисленный параметр содержит значение, устанавливаемое на вход,  или значение, полученное на выходе
param
Необязательный строковой параметр, получает текст на вход или текст полученный на выходе

Описание


Эта функция может использоваться для установки или получения внутренних состояний GfxLib. Параметр what указывает операцию для выполнения. Для операций, которые устанавливают состояния, параметры param* должны содержать значения для установки. Для операций, которые получают состояния, параметры param* будут содержать значения, возвращаемые GfxLib, при возврате функции.
Смысл параметров param*  зависит от параметра what, возможные значения которых определены как константы в файле fbgfx.bi. В диалекте lang fb, эти константы находятся в Namespace (пространстве имен) FB .
Ниже приведен список поддерживаемых констант what  - и их значения, как определены к моменту написания данной статьи - вместе с параметрами, связанными с ними.

Поддерживаемые операции
Примечание: * обозначает операцию, которая разрешена, даже когда графический режим еще не установлен с помощью Screen (Графика) или ScreenRes. Для всех остальных операций, возвращаемые значения ноль(0) или пустая строка("") , а операция не имеет никакого эффекта, если графический режим не доступен во время вызова.

Операции для получения
  • GET_WINDOW_POS (0) Возвращает текущую позицию окна, в координатах рабочего стола.
[OUT] param1 x
[OUT] param2 y
  • * GET_WINDOW_TITLE (1) Возвращает заголовок окна программы.
[OUT] param заголовок
  • GET_WINDOW_HANDLE (2) Возвращает дескриптор окна программы.
[OUT] param1 дескриптор; это HWND в Windows, "Window" XID в X11
  • * GET_DESKTOP_SIZE (3) Возвращает размер рабочего стола в пикселях.
[OUT] param1 ширина
[OUT] param2 высота
  • GET_SCREEN_SIZE (4) Возвращает текущий размер экрана в пикселях.
[OUT] param1 ширина
[OUT] param2 высота
  • GET_SCREEN_DEPTH (5) Возвращает текущую глубину графического режима экрана.
[OUT] param1 кол-во бит на пиксель
  • GET_SCREEN_BPP (6) Возвращает текущий режим графики BPP.
[OUT] param1 кол-во байт на пиксель
  • GET_SCREEN_PITCH (7) Возвращает текущий размер страницы кадрового буфера (графического режима), в байтах.
[OUT] param1 размер страницы в байтах
  • GET_SCREEN_REFRESH (8) Возвращает текущую частоту обновления графического режима, в герцах.
[OUT] param1 частота обновления
  • GET_DRIVER_NAME (9) Возвращает имя драйвера текущего графического режима.
[OUT] param имя
  • GET_TRANSPARENT_COLOR (10) Возвращает значение прозрачного цвета для текущей глубины графического режима.
[OUT] param1 значение
  • GET_VIEWPORT (11) Возвращает текущее окно просмотра , установленное с помощью оператора View (Графика), в экранных координатах.
[OUT] param1 x1
[OUT] param2 y1
[OUT] param3 x2
[OUT] param4 y2
  • GET_PEN_POS (12) Возвращает последнее графическое положение пера, в экранных координатах. Это положение используется в графических функциях поддерживающих относительные координаты с помощью ключевого слова Step.
[OUT] param1 x
[OUT] param2 y
  • GET_COLOR (13) Возвращает текущий цвет графического режима.
[OUT] param1 передний план
[OUT] param2 фон
  • GET_ALPHA_PRIMITIVES (14) Возвращает, если для примитивов рисования включена поддержка альфа-канала.
[OUT] param1 TRUE (-1) если альфа для примитивов включена, FALSE (0) в противном случае
  • GET_GL_EXTENSIONS (15) Возвращает строку, содержащую все поддерживаемые расширения GL, или пустую строку, если экран не в режиме OpenGL.
[OUT] param поддерживаемые расширения GL
  • GET_HIGH_PRIORITY (16) Возвращает , если GFX_HIGH_PRIORITY был определен во флагах, переданных Screen или ScreenRes.
[OUT] param1 более высокий приоритет графики с поддержкой обработки

Операции для установки
  • SET_WINDOW_POS (100) Устанавливает текущую позицию окна программы, в координатах рабочего стола.
[IN] param1 x
[IN] param2 y
  • * SET_WINDOW_TITLE (101) Устанавливает текущий заголовок окна программы. Это эквивалентно вызову WindowTitle( param ).
[IN] param заголовок
  • SET_PEN_POS (102) Устанавливает текущее графическое положение пера в экранных координатах. Это положение используется в графических функциях с поддержкой относительных координат с помощью ключевого слова Step.
[IN] param1 x
[IN] param2 y
  • * SET_DRIVER_NAME (103) Устанавливает имя драйвера встроенной графики, которая будет использоваться в последующих вызовах Screen или ScreenRes.
[IN] param имя драйвера
  • SET_ALPHA_PRIMITIVES (104) устанавливается, если рисование примитивов должно содержать альфа-канал.
[IN] param1 enabled
  • * SET_GL_COLOR_BITS (105) Определяет кол-во битов, выделяемых цвету буфера OpenGL
[IN] param1 кол-во бит
  • * SET_GL_COLOR_RED_BITS (106) Определяет количество бит, выделяемых красному компоненту цвета буфера OpenGL
[IN] param1 кол-во бит
  • * SET_GL_COLOR_GREEN_BITS (107) Определяет количество бит, выделяемых зеленому компоненту цвета буфера OpenGL
[IN] param1 кол-во бит
  • * SET_GL_COLOR_BLUE_BITS (108) Определяет количество бит, выделяемых синему компоненту цвета буфера OpenGL
[IN] param1 кол-во бит
  • * SET_GL_COLOR_ALPHA_BITS (109) Определяет количество бит, выделяемых альфа компоненту цвета буфера OpenGL
[IN] param1 кол-во бит
  • * SET_GL_DEPTH_BITS (110) Определяет количество бит, выделяемых глубине буфера OpenGL
[IN] param1 кол-во бит
  • * SET_GL_STENCIL_BITS (111) Определяет количество бит, выделяемых шаблонному буферу OpenGL
[IN] param1 кол-во бит
  • * SET_GL_ACCUM_BITS (112) Определяет количество бит, выделяемых накопительному буферу OpenGL
[IN] param1 кол-во бит
  • * SET_GL_ACCUM_RED_BITS (113) Определяет количество бит, выделяемых красному компоненту накопительного буфера OpenGL
[IN] param1 кол-во бит
  • * SET_GL_ACCUM_GREEN_BITS (114) Определяет количество бит, выделяемых зеленому компоненту накопительного буфера OpenGL
[IN] param1 кол-во бит
  • * SET_GL_ACCUM_BLUE_BITS (115) Определяет количество бит, выделяемых синему компоненту накопительного буфера OpenGL
[IN] param1 кол-во бит
  • * SET_GL_ACCUM_ALPHA_BITS (116) Определяет количество бит, выделяемых альфа компоненту накопительного буфера OpenGL
[IN] param1 кол-во бит
  • * SET_GL_NUM_SAMPLES (117) Задает количество семплов, которые будут использоваться для мультисэмплинга OpenGL
[IN] param1 кол-во семплов

Другие операции
  • POLL_EVENTS (200) Используется для опроса всех событий, т.е. для проверки очереди событий системы, специально используемой для получения события клавиатуры и мыши. Это наиболее полезно для кода OpenGL, где Flip не используется, как обычный Flip вызывающий эти события, чтобы быть запрошенными.

Пример

'' Подключаем fbgfx.bi для некоторых полезных определений
#include "fbgfx.bi"

'' Используем пространство имен FB для легкого доступа к типам/константам
Using FB

Dim e As EVENT
Dim As Integer x0, y0, x, y
Dim As Integer shakes = 0
Dim As Any Ptr img

ScreenRes 320, 200, 32
Print "Click to shake window"

'' ищем координаты окна
ScreenControl GET_WINDOW_POS, x0, y0

Do

    If (shakes > 0) Then
        
        '' встряхнем окно

        If (shakes > 1) Then

            '' Перемещаем окно в случайные позиции вблизи его оригинальных координат
            x = x0 + Int(32 * (Rnd() - 0.5))
            y = y0 + Int(32 * (Rnd() - 0.5))
            ScreenControl SET_WINDOW_POS, x, y

        Else

            '' перемещаем окно обратно в его оригинальные координаты
            ScreenControl SET_WINDOW_POS, x0, y0

        End If

        shakes -= 1

    End If

    If (ScreenEvent(@e)) Then
        Select Case e.type
        
        '' пользователь нажал кнопку мыши
        Case EVENT_MOUSE_BUTTON_PRESS

            If (shakes = 0) Then
                '' устанавливаем 20 встряхиваний
                shakes = 20

                '' находим текущие координаты окна вокруг тряски
                ScreenControl GET_WINDOW_POS, x0, y0
            End If

        '' пользователь закрыл окно или нажал клавишу
        Case EVENT_WINDOW_CLOSE, EVENT_KEY_PRESS
            '' exit to end of program
            Exit Do

        End Select
    End If

    '' Освободим CPU для других программ
    Sleep 5

Loop


'' Подключаем fbgfx.bi для некоторых полезных определений
#include "fbgfx.bi"

Dim As String driver

#ifdef __FB_WIN32__
'' установим графический драйвер GDI (только для Win32), перед вызовом ScreenRes
ScreenControl FB.SET_DRIVER_NAME, "GDI"
#endif

ScreenRes 640, 480

'' извлекаем имя графического драйвера и отображаем его пользователю
ScreenControl FB.GET_DRIVER_NAME, driver
Print "Graphics driver name: " & driver

'' Ожидание нажатия клавиши перед закрытием окна
Sleep


Различия диалектов

  • Не доступно в диалекте -lang qb , но есть псевдоним __Screencontrol.

Отличия от QB

  • Новое в FreeBASIC

См. также