function 71.2

git-svn-id: svn://kolibrios.org@6802 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
pathoswithin 2016-12-21 09:11:27 +00:00
parent fb9e611d64
commit 4ded9c23de
4 changed files with 39 additions and 25 deletions

View File

@ -429,9 +429,7 @@ struct PROC
ht_lock rd 1
ht_free rd 1 ;htab[0] stdin
ht_next rd 1 ;htab[1] stdout
htab rd (4096-$)/4 ;htab[2] stderr
; htab rd (4096+3072-$)/4 ;htab[2] stderr
; workdir rb 1024
htab rd 1024-PROC.htab/4 ;htab[2] stderr
pdt_0 rd 1024
ends
@ -492,7 +490,6 @@ struct APPDATA
draw_bgr_x dd ? ;+116
draw_bgr_y dd ? ;+120
dd ? ;+124
wnd_shape dd ? ;+128
wnd_shape_scale dd ? ;+132
dd ? ;+136
@ -504,7 +501,8 @@ struct APPDATA
debugger_slot dd ? ;+172
terminate_protection dd ? ;+176
keyboard_mode db ? ;+180
rb 3
captionEncoding db ?
rb 2
exec_params dd ? ;+184
dbg_event_mem dd ? ;+188
dbg_regs DBG_REGS ;+192

View File

@ -4346,22 +4346,24 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
eax - SF_FILE (70)
[ebx] - SSF_CREATE_FOLDER (9)
======================================================================
=== Функция 71, подфункция 1 - установить заголовок окна программы. ==
========== Функция 71 - установить заголовок окна программы ==========
======================================================================
Параметры:
* eax = 71 - номер функции
* ebx = 1 - номер подфункции
* ebx = 1
* ecx = адрес строки заголовка,
строка может начинаться с байта кодировки:
1 = cp866
2 = UTF-16LE
3 = UTF-8
или:
* ebx = 2
* ecx = адрес строки заголовка
* dl = кодировка строки
Возвращаемое значение:
* функция не возвращает значения
Замечания:
* Строка заголовка должна заканчиваться нулём.
* Можно указать кодировку заголовка,
поместив в начале строки байт со значениями:
1 = cp866
2 = UTF-16LE
3 = UTF-8
иначе будет использоваться cp866.
* Чтобы убрать заголовок, передайте NULL в ecx.
---------------------- Константы для регистров: ----------------------

View File

@ -4301,21 +4301,23 @@ Remarks:
eax - SF_FILE (70)
[ebx] - SSF_CREATE_FOLDER (9)
======================================================================
========== Function 71, subfunction 1 - set window caption. ==========
================== Function 71 - set window caption ==================
======================================================================
Parameters:
* eax = 71 - function number
* ebx = 1 - subfunction number
* ecx = pointer to zero terminated string
Returned value:
* function does not return value
Remarks:
* You may set the caption string encoding by putting
at the start of the string a byte with next values:
* ebx = 1
* ecx = pointer to zero terminated string,
the string may start with an encoding byte:
1 = cp866
2 = UTF-16LE
3 = UTF-8
otherwise will be used cp866.
or:
* ebx = 2
* ecx = pointer to zero terminated string
* dl = string encoding
Returned value:
* function does not return value
Remarks:
* Pass NULL in ecx to remove caption.
---------------------- Constants for registers: ----------------------

View File

@ -361,8 +361,17 @@ syscall_window_settings: ;///// system function 71 ////////////////////////////
;------------------------------------------------------------------------------
mov edi, [CURRENT_TASK]
shl edi, 5
mov [edi * 8 + SLOT_BASE + APPDATA.wnd_caption], ecx
or [edi + window_data + WDATA.fl_wstyle], WSTYLE_HASCAPTION
cmp ebx, 2
jz @f
xor edx, edx
@@:
cmp dl, 4
jc @f
xor edx, edx
@@:
mov [edi*8 + SLOT_BASE + APPDATA.wnd_caption], ecx
mov [edi*8 + SLOT_BASE + APPDATA.captionEncoding], dl
jmp window._.draw_window_caption
;------------------------------------------------------------------------------
align 4
@ -2244,6 +2253,9 @@ align 4
mov esi, eax
add ebx, ebp
mov ecx, [common_colours + 16]
mov al, [edi*8 + SLOT_BASE + APPDATA.captionEncoding]
test al, al
jnz @f
mov al, 1
cmp byte [edx], 4
jnc @f