Difference between revisions of "Talk:SysFn00/ru"
m |
m |
||
Line 11: | Line 11: | ||
! colspan="4" style="background:#e4e4ff" | eax | ! colspan="4" style="background:#e4e4ff" | eax | ||
|- | |- | ||
− | | align="right" | <tt> 0 | + | | align="right" | <tt> 0–31</tt> |
| align="center" | [[DataTypes/ru#UInt32|uint32]] | | align="center" | [[DataTypes/ru#UInt32|uint32]] | ||
| 0 | | 0 | ||
Line 18: | Line 18: | ||
! colspan="4" style="background:#e4e4ff" | ebx | ! colspan="4" style="background:#e4e4ff" | ebx | ||
|- | |- | ||
− | | align="right" | <tt> 0 | + | | align="right" | <tt> 0–15</tt> |
| align="center" | [[DataTypes/ru#UInt16|uint16]] | | align="center" | [[DataTypes/ru#UInt16|uint16]] | ||
| ширина окна | | ширина окна | ||
| rowspan="2" | Расположение окна относительно оси X. | | rowspan="2" | Расположение окна относительно оси X. | ||
|- | |- | ||
− | | align="right" | <tt>16 | + | | align="right" | <tt>16–31</tt> |
| align="center" | [[DataTypes/ru#Int16|int16]] | | align="center" | [[DataTypes/ru#Int16|int16]] | ||
| позиция окна по X | | позиция окна по X | ||
Line 29: | Line 29: | ||
! colspan="4" style="background:#e4e4ff" | ecx | ! colspan="4" style="background:#e4e4ff" | ecx | ||
|- | |- | ||
− | | align="right" | <tt> 0 | + | | align="right" | <tt> 0–15</tt> |
| align="center" | [[DataTypes/ru#UInt16|uint16]] | | align="center" | [[DataTypes/ru#UInt16|uint16]] | ||
| высота окна | | высота окна | ||
| rowspan="2" | Расположение окна относительно оси Y. | | rowspan="2" | Расположение окна относительно оси Y. | ||
|- | |- | ||
− | | align="right" | <tt>16 | + | | align="right" | <tt>16–31</tt> |
| align="center" | [[DataTypes/ru#Int16|int16]] | | align="center" | [[DataTypes/ru#Int16|int16]] | ||
| позиция окна по Y | | позиция окна по Y | ||
Line 40: | Line 40: | ||
! colspan="4" style="background:#e4e4ff" | edx | ! colspan="4" style="background:#e4e4ff" | edx | ||
|- | |- | ||
− | | align="right" | <tt> 0 | + | | align="right" | <tt> 0–23</tt> |
| align="center" | [[DataTypes/ru#RGB888|rgb888]] | | align="center" | [[DataTypes/ru#RGB888|rgb888]] | ||
| цвет клиентской области | | цвет клиентской области | ||
| | | | ||
|- | |- | ||
− | | align="right" | <tt>24 | + | | align="right" | <tt>24–27</tt> |
| align="center" | [[DataTypes/ru#UInt4|uint4]] | | align="center" | [[DataTypes/ru#UInt4|uint4]] | ||
| тип окна | | тип окна | ||
| | | | ||
− | * 0 | + | * 0 — тип окна I — окно фиксированных размеров; |
− | * 1 | + | * 1 — только определить область окна, ничего не рисовать; |
− | * 2 | + | * 2 — тип окна II — окно изменяемых размеров; |
− | * 3 | + | * 3 — тип окна III — окно со скином; |
− | * 4 | + | * 4 — тип окна IV — окно со скином фиксированных размеров. |
Остальные возможные значения (от 5 до 15) зарезервированы, вызов функции с такими значениями игнорируется. | Остальные возможные значения (от 5 до 15) зарезервированы, вызов функции с такими значениями игнорируется. | ||
|- | |- | ||
Line 59: | Line 59: | ||
| align="center" | [[DataTypes/ru#Bit|bit]] | | align="center" | [[DataTypes/ru#Bit|bit]] | ||
| флаг: текст заголовка | | флаг: текст заголовка | ||
− | | Тип окна I | + | | Тип окна I–II: игнорируется. |
− | Тип окна III | + | Тип окна III–IV: |
− | * 0 | + | * 0 — нет заголовка; |
− | * 1 | + | * 1 — адрес строки заголовка задаётся в edi. |
|- | |- | ||
| align="right" | <tt>29</tt> | | align="right" | <tt>29</tt> | ||
Line 69: | Line 69: | ||
| флаг: начало координат | | флаг: начало координат | ||
| Начало координат совпадает с: | | Начало координат совпадает с: | ||
− | * 0 | + | * 0 — левым верхним углом окна: 0 по горизонтали, 0 по вертикали; |
− | * 1 | + | * 1 — левым верхним углом клиентской области: <ширина рамки> по горизонтали, <высота заголовка> по вертикали. |
|- | |- | ||
| align="right" | <tt>30</tt> | | align="right" | <tt>30</tt> | ||
Line 76: | Line 76: | ||
| флаг: сплошной фон | | флаг: сплошной фон | ||
| Клиентская область при отрисовке окна: | | Клиентская область при отрисовке окна: | ||
− | * 0 | + | * 0 — заполняется; |
− | * 1 | + | * 1 — не заполняется. |
|- | |- | ||
| align="right" | <tt>31</tt> | | align="right" | <tt>31</tt> | ||
Line 83: | Line 83: | ||
| флаг: градиентный фон | | флаг: градиентный фон | ||
| Клиентская область заполняется: | | Клиентская область заполняется: | ||
− | * 0 | + | * 0 — сплошным цветом; |
− | * 1 | + | * 1 — градиентом от указанного цвета к чёрному. |
|- | |- | ||
! colspan="4" style="background:#e4e4ff" | esi | ! colspan="4" style="background:#e4e4ff" | esi | ||
|- | |- | ||
− | | align="right" | <tt> 0 | + | | align="right" | <tt> 0–23</tt> |
| align="center" | [[DataTypes/ru#RGB888|rgb888]] | | align="center" | [[DataTypes/ru#RGB888|rgb888]] | ||
| цвет заголовка окна | | цвет заголовка окна | ||
− | | Только для окон типа I | + | | Только для окон типа I–II. |
|- | |- | ||
| align="right" | <tt>24</tt> | | align="right" | <tt>24</tt> | ||
Line 97: | Line 97: | ||
| флаг: неперемещаемое окно | | флаг: неперемещаемое окно | ||
| | | | ||
− | * 0 | + | * 0 — окно может быть перемещено пользователем; |
− | * 1 | + | * 1 — окно не может быть перемещено пользователем. |
|- | |- | ||
− | | align="right" | <tt>25 | + | | align="right" | <tt>25–27</tt> |
| | | | ||
| 0 | | 0 | ||
| Зарезервированы. | | Зарезервированы. | ||
|- | |- | ||
− | | align="right" | <tt>28 | + | | align="right" | <tt>28–31</tt> |
| align="center" | [[DataTypes/ru#UInt4|uint4]] | | align="center" | [[DataTypes/ru#UInt4|uint4]] | ||
| стиль заголовка окна | | стиль заголовка окна | ||
− | | Тип окна I | + | | Тип окна I–II: |
− | * 0 | + | * 0 — нет градиента; |
− | * 4 | + | * 4 — негативный градиент; |
− | * 8 | + | * 8 — обычный градиент. |
Другие значения зарезервированы. | Другие значения зарезервированы. | ||
− | Тип окна III | + | Тип окна III–IV: игнорируется. |
|- | |- | ||
! colspan="4" style="background:#e4e4ff" | edi | ! colspan="4" style="background:#e4e4ff" | edi | ||
|- | |- | ||
− | | align="right" rowspan="2" | <tt> 0 | + | | align="right" rowspan="2" | <tt> 0–31</tt> |
| align="center" | [[DataTypes/ru#RGB888|rgb888]] | | align="center" | [[DataTypes/ru#RGB888|rgb888]] | ||
| цвет рамки окна | | цвет рамки окна | ||
− | | Только для окон типа I | + | | Только для окон типа I–II. |
|- | |- | ||
| align="center" | [[DataTypes/ru#Pointer|pointer]] | | align="center" | [[DataTypes/ru#Pointer|pointer]] | ||
| адрес строки заголовка | | адрес строки заголовка | ||
− | | Только для окон типа III | + | | Только для окон типа III–IV при <b>edx</b><sub>28</sub> = 1. |
|} | |} | ||
Line 134: | Line 134: | ||
== Замечания == | == Замечания == | ||
− | + | Положение и размеры окна устанавливаются при первом вызове этой функции и игнорируются при последующих; для изменения положения и/или размеров уже созданного окна используйте 67-ю функцию. | |
− | |||
− | |||
− | |||
− | Далее обозначим xpos,ypos,xsize,ysize - значения, передаваемые в ebx,ecx. | + | Для окон типа III–IV с заголовком ('''edx'''<sub>28</sub> = 1) строка заголовка устанавливается при первом вызове этой функции и игнорируется при последующих (точнее говоря, игнорируется после вызова [[SysFn12/ru|функции 12.2]] — конца перерисовки); для изменения строки заголовка уже созданного окна используйте [[SysFn71/ru|функцию 71.1]]. |
− | Координаты приводятся относительно левого верхнего угла окна, который, таким образом, задается как (0,0), | + | |
− | координаты правого нижнего угла суть (xsize,ysize). | + | Если использовать окна соответствующих стилей, то положение и/или размеры окна могут меняться пользователем. Текущие положение и размеры могут быть получены вызовом [[SysFn09/ru|функции 9]]. |
+ | |||
+ | Окно должно умещаться на экране. Если переданные координаты и размеры не удовлетворяют этому условию, то соответствующая координата (или, возможно, обе) считается нулем, а если и это не помогает, то соответствующий размер (или, возможно, оба) устанавливается в размер экрана. | ||
+ | |||
+ | Далее обозначим xpos, ypos, xsize, ysize - значения, передаваемые в ebx, ecx. | ||
+ | Координаты приводятся относительно левого верхнего угла окна, который, таким образом, задается как (0, 0), | ||
+ | координаты правого нижнего угла суть (xsize, ysize). | ||
+ | |||
+ | Размеры окна понимаются в смысле координат правого нижнего угла. | ||
− | |||
Это же относится и ко всем остальным функциям. | Это же относится и ко всем остальным функциям. | ||
Это означает, что реальные размеры на 1 пиксель больше. | Это означает, что реальные размеры на 1 пиксель больше. | ||
Line 149: | Line 153: | ||
=== Вид окна типа I === | === Вид окна типа I === | ||
− | * рисуется внешняя рамка цвета, указанного в edi,шириной 1 пиксель | + | * рисуется внешняя рамка цвета, указанного в '''edi''', шириной 1 пиксель |
− | * рисуется заголовок | + | * рисуется заголовок — прямоугольник с левым верхним углом (1, 1) и правым нижним ('''xsize''' − 1, min(25, '''ysize''')) цвета, указанного в '''esi''' (с учетом градиента) |
− | * если ysize | + | * если '''ysize''' ≥ 26, то закрашивается рабочая область окна — прямоугольник с левым верхним углом (1, 21) и правым нижним ('''xsize''' − 1, '''ysize''' − 1) (размерами ('''xsize''' − 1) × ('''ysize''' − 21)) — цветом, указанным в '''edx''' (с учетом градиента) |
− | * если | + | * если '''edx'''<sub>28</sub> = 1 и строка заголовка установлена [[SysFn71/ru|функцией 71.1]], то она выводится в соответствующем месте заголовка |
=== Вид окна типа II === | === Вид окна типа II === | ||
− | * рисуется внешняя рамка шириной 1 пиксель "затенённого" цвета edi (все составляющие цвета уменьшаются в два раза) | + | |
− | * рисуется промежуточная рамка шириной 3 пикселя цвета edi | + | * рисуется внешняя рамка шириной 1 пиксель "затенённого" цвета '''edi''' (все составляющие цвета уменьшаются в два раза) |
− | * рисуется внутренняя рамка шириной 1 пиксель "затенённого" цвета edi | + | * рисуется промежуточная рамка шириной 3 пикселя цвета '''edi''' |
− | * рисуется заголовок | + | * рисуется внутренняя рамка шириной 1 пиксель "затенённого" цвета '''edi''' |
− | * если ysize | + | * рисуется заголовок — прямоугольник с левым верхним углом (4, 4) и правым нижним ('''xsize''' − 4, min(20, '''ysize''')) цвета, указанного в '''esi''' (с учетом градиента) |
− | * если | + | * если '''ysize''' ≥ 26, то закрашивается рабочая область окна — прямоугольник с левым верхним углом (5, 20) и правым нижним ('''xsize''' − 5, '''ysize''' − 5) — цветом, указанным в '''edx''' (с учетом градиента) |
+ | * если '''edx'''<sub>28</sub> = 1 и строка заголовка установлена [[SysFn71/ru|функцией 71.1]], то она выводится в соответствующем месте заголовка | ||
=== Вид окна со скином (типа III и IV) === | === Вид окна со скином (типа III и IV) === | ||
+ | |||
* рисуется внешняя рамка шириной 1 пиксель цвета 'outer' из скина | * рисуется внешняя рамка шириной 1 пиксель цвета 'outer' из скина | ||
* рисуется промежуточная рамка шириной 3 пикселя цвета 'frame' из скина | * рисуется промежуточная рамка шириной 3 пикселя цвета 'frame' из скина | ||
* рисуется внутренняя рамка шириной 1 пиксель цвета 'inner' из скина | * рисуется внутренняя рамка шириной 1 пиксель цвета 'inner' из скина | ||
− | * рисуется заголовок (по картинкам из скина) в прямоугольнике (0,0) | + | * рисуется заголовок (по картинкам из скина) в прямоугольнике (0, 0) – ('''xsize''', _skinh − 1) |
− | * если ysize | + | * если '''ysize''' ≥ 26, то закрашивается рабочая область окна — прямоугольник с левым верхним углом (5, _skinh) и правым нижним ('''xsize''' − 5, '''ysize''' − 5) — цветом, указанным в '''edx''' (с учетом градиента) |
− | * определяются две стандартные кнопки: закрытия и минимизации (смотри функцию 8) | + | * определяются две стандартные кнопки: закрытия и минимизации (смотри [[SysFn08/ru|функцию 8]]) |
− | * если | + | * если '''edx'''<sub>28</sub> = 1 и в '''edi''' (ненулевой) указатель на строку заголовка, то она выводится в заголовке в месте, определяемом скином |
− | + | ||
+ | Значение переменной _skinh доступно как результат вызова [[SysFn48/ru|функции 48.4]] |
Revision as of 07:09, 4 April 2010
Параметры
биты | тип | значение | описание |
---|---|---|---|
eax | |||
0–31 | uint32 | 0 | Номер функции. |
ebx | |||
0–15 | uint16 | ширина окна | Расположение окна относительно оси X. |
16–31 | int16 | позиция окна по X | |
ecx | |||
0–15 | uint16 | высота окна | Расположение окна относительно оси Y. |
16–31 | int16 | позиция окна по Y | |
edx | |||
0–23 | rgb888 | цвет клиентской области | |
24–27 | uint4 | тип окна |
Остальные возможные значения (от 5 до 15) зарезервированы, вызов функции с такими значениями игнорируется. |
28 | bit | флаг: текст заголовка | Тип окна I–II: игнорируется.
Тип окна III–IV:
|
29 | bit | флаг: начало координат | Начало координат совпадает с:
|
30 | bit | флаг: сплошной фон | Клиентская область при отрисовке окна:
|
31 | bit | флаг: градиентный фон | Клиентская область заполняется:
|
esi | |||
0–23 | rgb888 | цвет заголовка окна | Только для окон типа I–II. |
24 | bit | флаг: неперемещаемое окно |
|
25–27 | 0 | Зарезервированы. | |
28–31 | uint4 | стиль заголовка окна | Тип окна I–II:
Другие значения зарезервированы. Тип окна III–IV: игнорируется. |
edi | |||
0–31 | rgb888 | цвет рамки окна | Только для окон типа I–II. |
pointer | адрес строки заголовка | Только для окон типа III–IV при edx28 = 1. |
Возвращаемое значение
Функция не возвращает значения.
Замечания
Положение и размеры окна устанавливаются при первом вызове этой функции и игнорируются при последующих; для изменения положения и/или размеров уже созданного окна используйте 67-ю функцию.
Для окон типа III–IV с заголовком (edx28 = 1) строка заголовка устанавливается при первом вызове этой функции и игнорируется при последующих (точнее говоря, игнорируется после вызова функции 12.2 — конца перерисовки); для изменения строки заголовка уже созданного окна используйте функцию 71.1.
Если использовать окна соответствующих стилей, то положение и/или размеры окна могут меняться пользователем. Текущие положение и размеры могут быть получены вызовом функции 9.
Окно должно умещаться на экране. Если переданные координаты и размеры не удовлетворяют этому условию, то соответствующая координата (или, возможно, обе) считается нулем, а если и это не помогает, то соответствующий размер (или, возможно, оба) устанавливается в размер экрана.
Далее обозначим xpos, ypos, xsize, ysize - значения, передаваемые в ebx, ecx. Координаты приводятся относительно левого верхнего угла окна, который, таким образом, задается как (0, 0), координаты правого нижнего угла суть (xsize, ysize).
Размеры окна понимаются в смысле координат правого нижнего угла.
Это же относится и ко всем остальным функциям. Это означает, что реальные размеры на 1 пиксель больше.
Вид окна типа I
- рисуется внешняя рамка цвета, указанного в edi, шириной 1 пиксель
- рисуется заголовок — прямоугольник с левым верхним углом (1, 1) и правым нижним (xsize − 1, min(25, ysize)) цвета, указанного в esi (с учетом градиента)
- если ysize ≥ 26, то закрашивается рабочая область окна — прямоугольник с левым верхним углом (1, 21) и правым нижним (xsize − 1, ysize − 1) (размерами (xsize − 1) × (ysize − 21)) — цветом, указанным в edx (с учетом градиента)
- если edx28 = 1 и строка заголовка установлена функцией 71.1, то она выводится в соответствующем месте заголовка
Вид окна типа II
- рисуется внешняя рамка шириной 1 пиксель "затенённого" цвета edi (все составляющие цвета уменьшаются в два раза)
- рисуется промежуточная рамка шириной 3 пикселя цвета edi
- рисуется внутренняя рамка шириной 1 пиксель "затенённого" цвета edi
- рисуется заголовок — прямоугольник с левым верхним углом (4, 4) и правым нижним (xsize − 4, min(20, ysize)) цвета, указанного в esi (с учетом градиента)
- если ysize ≥ 26, то закрашивается рабочая область окна — прямоугольник с левым верхним углом (5, 20) и правым нижним (xsize − 5, ysize − 5) — цветом, указанным в edx (с учетом градиента)
- если edx28 = 1 и строка заголовка установлена функцией 71.1, то она выводится в соответствующем месте заголовка
Вид окна со скином (типа III и IV)
- рисуется внешняя рамка шириной 1 пиксель цвета 'outer' из скина
- рисуется промежуточная рамка шириной 3 пикселя цвета 'frame' из скина
- рисуется внутренняя рамка шириной 1 пиксель цвета 'inner' из скина
- рисуется заголовок (по картинкам из скина) в прямоугольнике (0, 0) – (xsize, _skinh − 1)
- если ysize ≥ 26, то закрашивается рабочая область окна — прямоугольник с левым верхним углом (5, _skinh) и правым нижним (xsize − 5, ysize − 5) — цветом, указанным в edx (с учетом градиента)
- определяются две стандартные кнопки: закрытия и минимизации (смотри функцию 8)
- если edx28 = 1 и в edi (ненулевой) указатель на строку заголовка, то она выводится в заголовке в месте, определяемом скином
Значение переменной _skinh доступно как результат вызова функции 48.4