Difference between revisions of "Talk:SysFn00/ru"
Jump to navigation
Jump to search
m |
m |
||
(13 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | {{DISPLAYTITLE: Функция 0 — определить и нарисовать окно}} | + | __NOTOC__ {{DISPLAYTITLE: Функция 0 — определить и нарисовать окно}} |
== Параметры == | == Параметры == | ||
− | {| | + | {| border="1" id="table1" class="wikitable sysfunc" |
+ | |- | ||
+ | ! class="header" | биты | ||
+ | ! class="header" | тип | ||
+ | ! class="header" | значение | ||
+ | ! class="header" | описание | ||
|- | |- | ||
− | ! | + | ! colspan="4" class="register" | eax |
− | |||
− | |||
− | |||
|- | |- | ||
− | + | | class="bits" | 0–31 | |
− | + | | class="type" | [[DataTypes/ru#UInt32|uint32]] | |
− | | | ||
− | | | ||
| 0 | | 0 | ||
| Номер функции. | | Номер функции. | ||
|- | |- | ||
− | ! colspan="4" | + | ! colspan="4" class="register" | ebx |
|- | |- | ||
− | | | + | | class="bits" | 0–15 |
− | | | + | | class="type" | [[DataTypes/ru#UInt16|uint16]] |
| ширина окна | | ширина окна | ||
| rowspan="2" | Расположение окна относительно оси X. | | rowspan="2" | Расположение окна относительно оси X. | ||
|- | |- | ||
− | | | + | | class="bits" | 16–31 |
− | | | + | | class="type" | [[DataTypes/ru#Int16|int16]] |
| позиция окна по X | | позиция окна по X | ||
|- | |- | ||
− | ! colspan="4" | + | ! colspan="4" class="register" | ecx |
|- | |- | ||
− | | | + | | class="bits" | 0–15 |
− | | | + | | class="type" | [[DataTypes/ru#UInt16|uint16]] |
| высота окна | | высота окна | ||
| rowspan="2" | Расположение окна относительно оси Y. | | rowspan="2" | Расположение окна относительно оси Y. | ||
|- | |- | ||
− | | | + | | class="bits" | 16–31 |
− | | | + | | class="type" | [[DataTypes/ru#Int16|int16]] |
| позиция окна по Y | | позиция окна по Y | ||
|- | |- | ||
− | ! colspan="4" | + | ! colspan="4" class="register" | edx |
|- | |- | ||
− | | | + | | class="bits" | 0–23 |
− | | | + | | class="type" | [[DataTypes/ru#RGB888|rgb888]] |
| цвет клиентской области | | цвет клиентской области | ||
| | | | ||
|- | |- | ||
− | | | + | | class="bits" | 24–27 |
− | | | + | | class="type" | [[DataTypes/ru#UInt4|uint4]] |
| тип окна | | тип окна | ||
| | | | ||
− | * 0 | + | * 0 — тип окна I — окно фиксированных размеров; |
− | * 1 | + | * 1 — только определить область окна, ничего не рисовать; |
− | * 2 | + | * 2 — тип окна II — окно изменяемых размеров; |
− | * 3 | + | * 3 — тип окна III — окно со скином; |
− | * 4 | + | * 4 — тип окна IV — окно со скином фиксированных размеров. |
Остальные возможные значения (от 5 до 15) зарезервированы, вызов функции с такими значениями игнорируется. | Остальные возможные значения (от 5 до 15) зарезервированы, вызов функции с такими значениями игнорируется. | ||
|- | |- | ||
− | | | + | | class="bits" | 28 |
− | | | + | | class="type" | [[DataTypes/ru#Bit|bit]] |
| флаг: текст заголовка | | флаг: текст заголовка | ||
− | | Тип окна I | + | | Тип окна I–II: игнорируется. |
− | Тип окна III | + | Тип окна III–IV: |
− | * 0 | + | * 0 — нет заголовка; |
− | * 1 | + | * 1 — адрес строки заголовка задаётся в edi. |
|- | |- | ||
− | | | + | | class="bits" | 29 |
− | | | + | | class="type" | [[DataTypes/ru#Bit|bit]] |
| флаг: начало координат | | флаг: начало координат | ||
| Начало координат совпадает с: | | Начало координат совпадает с: | ||
− | * 0 | + | * 0 — левым верхним углом окна: 0 по X, 0 по Y; |
− | * 1 | + | * 1 — левым верхним углом клиентской области: <ширина рамки> по X, <высота заголовка> по Y. |
|- | |- | ||
− | | | + | | class="bits" | 30 |
− | | | + | | class="type" | [[DataTypes/ru#Bit|bit]] |
| флаг: сплошной фон | | флаг: сплошной фон | ||
| Клиентская область при отрисовке окна: | | Клиентская область при отрисовке окна: | ||
− | * 0 | + | * 0 — заполняется; |
− | * 1 | + | * 1 — не заполняется. |
|- | |- | ||
− | | | + | | class="bits" | 31 |
− | | | + | | class="type" | [[DataTypes/ru#Bit|bit]] |
| флаг: градиентный фон | | флаг: градиентный фон | ||
| Клиентская область заполняется: | | Клиентская область заполняется: | ||
− | * 0 | + | * 0 — сплошным цветом; |
− | * 1 | + | * 1 — градиентом от указанного цвета к чёрному. |
|- | |- | ||
− | ! colspan="4" | + | ! colspan="4" class="register" | esi |
|- | |- | ||
− | | | + | | class="bits" | 0–23 |
− | | | + | | class="type" | [[DataTypes/ru#RGB888|rgb888]] |
| цвет заголовка окна | | цвет заголовка окна | ||
− | | Только для окон типа I | + | | Только для окон типа I–II. |
|- | |- | ||
− | | | + | | class="bits" | 24 |
− | | | + | | class="type" | [[DataTypes/ru#Bit|bit]] |
| флаг: неперемещаемое окно | | флаг: неперемещаемое окно | ||
| | | | ||
− | * 0 | + | * 0 — окно может быть перемещено пользователем; |
− | * 1 | + | * 1 — окно не может быть перемещено пользователем. |
|- | |- | ||
− | | | + | | class="bits" | 25–27 |
| | | | ||
| 0 | | 0 | ||
| Зарезервированы. | | Зарезервированы. | ||
|- | |- | ||
− | | | + | | class="bits" | 28–31 |
− | | | + | | class="type" | [[DataTypes/ru#UInt4|uint4]] |
| стиль заголовка окна | | стиль заголовка окна | ||
− | | Тип окна I | + | | Тип окна I–II: |
− | * 0 | + | * 0 — нет градиента; |
− | * 4 | + | * 4 — негативный градиент; |
− | * 8 | + | * 8 — обычный градиент. |
Другие значения зарезервированы. | Другие значения зарезервированы. | ||
− | Тип окна III | + | Тип окна III–IV: игнорируется. |
|- | |- | ||
− | ! colspan="4" | + | ! colspan="4" class="register" | edi |
|- | |- | ||
− | | | + | | class="bits" rowspan="2" | 0–31 |
− | | | + | | class="type" | [[DataTypes/ru#RGB888|rgb888]] |
| цвет рамки окна | | цвет рамки окна | ||
− | | Только для окон типа I | + | | Только для окон типа I–II. |
|- | |- | ||
− | | | + | | class="type" | [[DataTypes/ru#C_String|char*]] |
| адрес строки заголовка | | адрес строки заголовка | ||
− | | Только для окон типа III | + | | Только для окон типа III–IV при '''edx'''<sub>28</sub> = 1. |
|} | |} | ||
Line 132: | Line 132: | ||
Функция не возвращает значения. | Функция не возвращает значения. | ||
− | == | + | == Примеры == |
+ | |||
+ | <source> | ||
+ | ;; без макросов | ||
+ | |||
+ | ; номер функции: 0 | ||
+ | xor eax, eax | ||
+ | ; расположение окна: <смещение> * 65536 + <размер> | ||
+ | ; альтернативы: 100 shl 16 + 300, 0x0064012C | ||
+ | mov ebx, 100 * 65536 + 300 | ||
+ | mov eсx, 200 * 65536 + 150 | ||
+ | ; цвет фона: 0x0080ff (красный 0, зелёный 128, синий 255) | ||
+ | ; тип окна: III (со скином, изменяемых размеров) | ||
+ | ; флаги: есть текст заголовка, рисование относительно (0, 0), сплошная заливка фона без градиента | ||
+ | mov edx, 0x130080ff | ||
+ | ; адрес строки заголовка | ||
+ | mov edi, window_title | ||
+ | ; вызов функции | ||
+ | int 0x40 | ||
+ | |||
+ | ;; то же самое с использованием mcall | ||
+ | |||
+ | mcall 0, <100, 300>, <200, 150>, 0x130080ff, , window_title | ||
+ | |||
+ | ; ... | ||
+ | window_title db 'Foobar', 0 | ||
+ | ; ... | ||
+ | </source> | ||
+ | |||
+ | == Примечания == | ||
− | + | Положение и размеры окна устанавливаются при первом вызове этой функции и игнорируются при последующих; для изменения положения и/или размеров уже созданного окна используйте 67-ю функцию. | |
− | |||
− | |||
− | |||
− | + | Для окон типа III–IV с заголовком ('''edx'''<sub>28</sub> = 1) строка заголовка устанавливается при первом вызове этой функции и игнорируется при последующих (точнее говоря, игнорируется после вызова [[SysFn12/ru|функции 12.2]] — конца перерисовки); для изменения строки заголовка уже созданного окна используйте [[SysFn71/ru|функцию 71.1]]. | |
− | |||
− | |||