Difference between revisions of "SysFn00/ru"
Jump to navigation
Jump to search
m |
m |
||
(4 intermediate revisions by 3 users not shown) | |||
Line 3: | Line 3: | ||
---- | ---- | ||
− | Определяет окно приложения. Рисует рамку окна, заголовок и рабочую область. | + | Определяет окно приложения. Рисует рамку окна, заголовок и рабочую |
+ | область. Для окон со скином определяет стандартные кнопки закрытия и | ||
+ | минимизации. | ||
+ | Параметры: | ||
+ | :* eax = 0 - номер функции | ||
+ | :* ebx = [координата по оси x]*65536 + [размер по оси x] | ||
+ | :* ecx = [координата по оси y]*65536 + [размер по оси y] | ||
+ | :* edx = 0xXYRRGGBB, где: | ||
+ | ::* Y = стиль окна: | ||
+ | :::* Y=0 - тип I - окно фиксированных размеров | ||
+ | :::* Y=1 - только определить область окна, ничего не рисовать | ||
+ | :::* Y=2 - тип II - окно изменяемых размеров | ||
+ | :::* Y=3 - окно со скином | ||
+ | :::* Y=4 - окно со скином фиксированных размеров | ||
+ | :::* остальные возможные значения (от 5 до 15) зарезервированы, | ||
+ | ::::вызов функции с такими Y игнорируется | ||
+ | ::* RR, GG, BB = соответственно красная, зеленая, синяя | ||
+ | :::составляющие цвета рабочей области окна | ||
+ | :::(игнорируется для стиля Y=1) | ||
+ | ::* X = DCBA (биты) | ||
+ | :::* A = 1 - у окна есть заголовок; для стилей Y=3,4 адрес строки | ||
+ | :::::::::заголовка задаётся в edi, для прочих стилей | ||
+ | :::::::::используется подфункция 1 функции 71 | ||
+ | :::* B = 1 - координаты всех графических примитивов задаются | ||
+ | :::::::::относительно клиентской области окна | ||
+ | :::* C = 1 - не закрашивать рабочую область при отрисовке окна | ||
+ | :::* D = 0 - нормальная заливка рабочей области, 1 - градиентная | ||
+ | ::Следующие параметры предназначены для окон типа I и II и | ||
+ | ::игнорируются для стилей Y=1,3: | ||
+ | :* esi = 0xXYRRGGBB - цвет заголовка | ||
+ | ::* RR, GG, BB определяют сам цвет | ||
+ | ::* Y=0 - обычное окно, Y=1 - неперемещаемое окно (работает для всех стилей окон) | ||
+ | ::* X определяет градиент заголовка: X=0 - нет градиента, | ||
+ | :::X=8 - обычный градиент, | ||
+ | :::для окон типа II X=4 - негативный градиент | ||
+ | ::* прочие значения X и Y зарезервированы | ||
+ | :* edi = 0x00RRGGBB - цвет рамки | ||
+ | Возвращаемое значение: | ||
+ | :* функция не возвращает значения | ||
+ | Замечания: | ||
+ | :* Положение и размеры окна устанавливаются при первом вызове | ||
+ | ::этой функции и игнорируются при последующих; для изменения | ||
+ | ::положения и/или размеров уже созданного окна используйте | ||
+ | ::67-ю функцию. | ||
+ | :* Для окон стилей Y=3,4 с заголовком (A=1) строка заголовка | ||
+ | ::устанавливается при первом вызове этой функции и игнорируется при | ||
+ | ::последующих (точнее говоря, игнорируется после вызова | ||
+ | ::подфункции 2 функции 12 - конца перерисовки); | ||
+ | ::для изменения строки заголовка уже созданного окна используйте | ||
+ | ::подфункцию 1 функции 71. | ||
+ | :* Если использовать окна соответствующих стилей, то положение | ||
+ | ::и/или размеры окна могут меняться пользователем. | ||
+ | ::Текущие положение и размеры могут быть получены вызовом функции 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 (с учетом градиента) | ||
+ | ::* если A=1 и строка заголовка установлена подфункцией 1 | ||
+ | :::функции 71, то она выводится в соответствующем месте заголовка | ||
+ | :* Вид окна стиля Y=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 (с учетом градиента) | ||
+ | ::* если A=1 и строка заголовка установлена подфункцией 1 | ||
+ | :::функции 71, то она выводится в соответствующем месте заголовка | ||
+ | :* Вид окна со скином: | ||
+ | ::* рисуется внешняя рамка шириной 1 пиксель | ||
+ | :::цвета 'outer' из скина | ||
+ | ::* рисуется промежуточная рамка шириной 3 пикселя | ||
+ | :::цвета 'frame' из скина | ||
+ | ::* рисуется внутренняя рамка шириной 1 пиксель | ||
+ | :::цвета 'inner' из скина | ||
+ | ::* рисуется заголовок (по картинкам из скина) в прямоугольнике | ||
+ | :::(0,0) - (xsize,_skinh-1) | ||
+ | ::* если ysize>=26, то закрашивается рабочая область окна - | ||
+ | :::прямоугольник с левым верхним углом (5,_skinh) и правым нижним | ||
+ | :::(xsize-5,ysize-5) - цветом, указанным в edx (с учетом градиента) | ||
+ | ::* определяются две стандартные кнопки: закрытия и минимизации | ||
+ | :::(смотри функцию 8) | ||
+ | ::* если A=1 и в edi (ненулевой) указатель на строку заголовка, | ||
+ | :::то она выводится в заголовке в месте, определяемом скином | ||
+ | ::* Значение переменной _skinh доступно как результат вызова | ||
+ | :::подфункции 4 функции 48 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_CREATE_WINDOW (0) | ||
+ | {{System_functions}} | ||
[[Category: SysCalls]] | [[Category: SysCalls]] | ||
− |
Latest revision as of 16:54, 12 January 2016
Функция 0 - определить и нарисовать окно
Определяет окно приложения. Рисует рамку окна, заголовок и рабочую область. Для окон со скином определяет стандартные кнопки закрытия и минимизации. Параметры:
- eax = 0 - номер функции
- ebx = [координата по оси x]*65536 + [размер по оси x]
- ecx = [координата по оси y]*65536 + [размер по оси y]
- edx = 0xXYRRGGBB, где:
- Y = стиль окна:
- Y=0 - тип I - окно фиксированных размеров
- Y=1 - только определить область окна, ничего не рисовать
- Y=2 - тип II - окно изменяемых размеров
- Y=3 - окно со скином
- Y=4 - окно со скином фиксированных размеров
- остальные возможные значения (от 5 до 15) зарезервированы,
- вызов функции с такими Y игнорируется
- RR, GG, BB = соответственно красная, зеленая, синяя
- составляющие цвета рабочей области окна
- (игнорируется для стиля Y=1)
- X = DCBA (биты)
- A = 1 - у окна есть заголовок; для стилей Y=3,4 адрес строки
- заголовка задаётся в edi, для прочих стилей
- используется подфункция 1 функции 71
- B = 1 - координаты всех графических примитивов задаются
- относительно клиентской области окна
- C = 1 - не закрашивать рабочую область при отрисовке окна
- D = 0 - нормальная заливка рабочей области, 1 - градиентная
- Следующие параметры предназначены для окон типа I и II и
- игнорируются для стилей Y=1,3:
- esi = 0xXYRRGGBB - цвет заголовка
- RR, GG, BB определяют сам цвет
- Y=0 - обычное окно, Y=1 - неперемещаемое окно (работает для всех стилей окон)
- X определяет градиент заголовка: X=0 - нет градиента,
- X=8 - обычный градиент,
- для окон типа II X=4 - негативный градиент
- прочие значения X и Y зарезервированы
- edi = 0x00RRGGBB - цвет рамки
Возвращаемое значение:
- функция не возвращает значения
Замечания:
- Положение и размеры окна устанавливаются при первом вызове
- этой функции и игнорируются при последующих; для изменения
- положения и/или размеров уже созданного окна используйте
- 67-ю функцию.
- Для окон стилей Y=3,4 с заголовком (A=1) строка заголовка
- устанавливается при первом вызове этой функции и игнорируется при
- последующих (точнее говоря, игнорируется после вызова
- подфункции 2 функции 12 - конца перерисовки);
- для изменения строки заголовка уже созданного окна используйте
- подфункцию 1 функции 71.
- Если использовать окна соответствующих стилей, то положение
- и/или размеры окна могут меняться пользователем.
- Текущие положение и размеры могут быть получены вызовом функции 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 (с учетом градиента)
- если A=1 и строка заголовка установлена подфункцией 1
- функции 71, то она выводится в соответствующем месте заголовка
- Вид окна стиля Y=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 (с учетом градиента)
- если A=1 и строка заголовка установлена подфункцией 1
- функции 71, то она выводится в соответствующем месте заголовка
- Вид окна со скином:
- рисуется внешняя рамка шириной 1 пиксель
- цвета 'outer' из скина
- рисуется промежуточная рамка шириной 3 пикселя
- цвета 'frame' из скина
- рисуется внутренняя рамка шириной 1 пиксель
- цвета 'inner' из скина
- рисуется заголовок (по картинкам из скина) в прямоугольнике
- (0,0) - (xsize,_skinh-1)
- если ysize>=26, то закрашивается рабочая область окна -
- прямоугольник с левым верхним углом (5,_skinh) и правым нижним
- (xsize-5,ysize-5) - цветом, указанным в edx (с учетом градиента)
- определяются две стандартные кнопки: закрытия и минимизации
- (смотри функцию 8)
- если A=1 и в edi (ненулевой) указатель на строку заголовка,
- то она выводится в заголовке в месте, определяемом скином
- Значение переменной _skinh доступно как результат вызова
- подфункции 4 функции 48
Константы для регистров:
- eax - SF_CREATE_WINDOW (0)
|