Board.KolibriOS.org

Official KolibriOS board
It is currently Sat Dec 14, 2019 4:48 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 400 posts ]  Go to page Previous 114 15 16 17 1827 Next
Author Message
PostPosted: Thu Feb 14, 2013 11:13 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
0CodErr
Всё намного проще.
Code:
======================================================================
=========== Function 40 - set the mask for expected events. ==========
======================================================================
The mask for expected events affects function working with events
10, 11, 23 - they notify only about events allowed by this mask.
Parameters:
  * eax = 40 - function number
  * ebx = mask: bit i corresponds to event i+1 (see list of events)
    (set bit permits notice on event)
    bit 31: active/inactive filter
    bit 31 = 0 - inactive window receive mouse events
    bit 31 = 1 - inactive window does not receive mouse events
    bit 30: cursor position filter
    bit 30 = 0 = the window receive mouse events if cursor
                 outside window
    bit 30 = 1 - the window does not receive mouse events if cursor
                 outside window
mcall 40, 0xC0000027


Top
   
PostPosted: Thu Feb 14, 2013 11:48 am 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Спасибо, Serge!
Quote:
(set bit permits notice on event)
Очень полезная возможность. А давно она существует? В Wiki( http://wiki.kolibrios.org/wiki/SysFn40/ru ) же этого нет.
А то я в своей панельке(тут есть скриншот viewtopic.php?p=39992#p39992 ) самодельную использовал.


Top
   
PostPosted: Thu Feb 14, 2013 11:55 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Почти год. svn #2410 #2414


Top
   
PostPosted: Thu Feb 14, 2013 12:09 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Да, я и запамятовал, что для Fplay было сделано это. Больше вроде нигде не использовалось, а рабочее решение (которое я предложил) использовано во многих приложениях. Обычно не меняют по принципу - "работает хорошо? не трогай!".

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
PostPosted: Thu Mar 07, 2013 10:13 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Spoiler: Show
Code:
org 0
BITS 32

STACK_SIZE      equ 256

MENUET01           db 'MENUET01'
version            dd 1
program.start      dd start_
program.end        dd end_
program.memory     dd end_ + STACK_SIZE
program.stack      dd end_ + STACK_SIZE
program.params     dd 0
program.path       dd 0
start_:
jmp main



REDRAW_EVENT               equ 1
KEY_EVENT                  equ 2
BUTTON_EVENT               equ 3
MOUSE_EVENT                equ 6





   
box_lib dd 0

scrollbar1:
  .size_x         dw 15
  .start_x        dw 20
  .size_y         dw 300
  .start_y        dw 20
  .btn_high       dd 15
  .type           dd 1
  .max_area       dd 30
  .cur_area       dd 7
  .position       dd 0
  .bckg_col       dd 0xEEEEEE
  .frnt_col       dd 0xBBDDFF
  .line_col       dd 0
  .redraw         dd 0
  .delta          dw 0
  .delta2         dw 0
  .r_size_x       dw 0
  .r_start_x      dw 0
  .r_size_y       dw 0
  .r_start_y      dw 0
  .m_pos          dd 0
  .m_pos_2        dd 0
  .m_keys         dd 0
  .run_size       dd 0
  .position2      dd 0
  .work_size      dd 0
  .all_redraw     dd 1
  .ar_offset      dd 10
   
      
scrollbar_v_draw     dd 0
scrollbar_v_mouse    dd 0


sz_box_lib                  db "/sys/lib/box_lib.obj",0
sz_scrollbar_v_draw         db "scrollbar_v_draw",0
sz_scrollbar_v_mouse        db "scrollbar_v_mouse",0



main:

    ; set.event
    mov eax, 40
    mov ebx, 39
    int 64
   
        push sz_box_lib
    call load.library
    mov [box_lib], eax
   
        push dword[box_lib]
        push sz_scrollbar_v_draw
    call getprocaddress
    mov [scrollbar_v_draw], eax
   
        push dword[box_lib]
        push sz_scrollbar_v_mouse
    call getprocaddress
    mov [scrollbar_v_mouse], eax
   

   
    call on_redraw
   
.loop:

      ; wait.event
      mov eax, 10
      int 64

      cmp eax, REDRAW_EVENT
      jne .check_key
          call on_redraw
          jmp .loop
         
.check_key:

      cmp eax, KEY_EVENT
      jne .check_button
          ; get.key.code
          mov eax, 2
          int 64
          jmp .loop

           
     
.check_button:

      cmp eax, BUTTON_EVENT
      jne .check_mouse

            ; program.terminate
            or eax, -1
            int 64
         
           
     
.check_mouse:

      cmp eax, MOUSE_EVENT
      jne .loop
         
            push scrollbar1
        call [scrollbar_v_mouse]
            

            call draw_scrollbar_position
            
        jmp .loop


draw_scrollbar_position:
   ; draw.number
   mov eax, 47
   mov ebx, 196608 ; decimal, count = 3
   mov ecx,[scrollbar1.position]
   mov edx, 3276850 ; 50, 50
   mov esi, 40000000h
   mov edi, 00FFFFFFh 
   int 64
ret            
            

on_redraw:
   
    ; redraw.start
    mov eax, 12
    mov ebx, 1
    int 64

    ; draw.window
    xor eax, eax
    mov ebx, 400
    mov ecx, 400
    mov edx, 240000DDh
    int 64

      mov [scrollbar1.all_redraw], dword 1
   
        push scrollbar1
    call [scrollbar_v_draw]
   
      call draw_scrollbar_position
      
    ; redraw.finish
    mov eax, 12
    mov ebx, 2
    int 64
   
ret




load.library:
  mov eax, 68
  mov ebx, 19
  mov ecx, [esp + 4]
  int 64
  ret 4
;

getprocaddress:
  mov   edx, [esp + 8] ; hlib
  xor   eax, eax
  test edx, edx ; If hlib = 0 then goto .end
  jz  .end
 
  .next:     
    cmp  [edx], dword 0 ; If end of export table then goto .end
    jz  .end

          xor  eax, eax
          mov  esi, [edx]
          mov  edi, [esp + 4] ; name
         
          .next_:
            lodsb
            scasb
          jne  .fail
            or  al, al
          jnz  .next_
          jmp .ok
        .fail: 

      add  edx, 8
    jmp  .next
   
   .ok:               ; return address
      mov  eax, [edx + 4]
   .end:   
ret 8
;

end_:



Передвинуть ползунок до конца вниз, нажать на скроллбаре кнопку со стрелочкой вниз.


Top
   
PostPosted: Fri Mar 08, 2013 4:14 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
0CodErr wrote:
Передвинуть ползунок до конца вниз, нажать на скроллбаре кнопку со стрелочкой вниз.

Исправлено в SVN r. 3353.

Кстати пример вот в таком виде намного более удобен для восприятия:
Attachment:
test_scroll_bug.7z [4.64 KiB]
Downloaded 211 times

Я имею ввиду оформление и использование mcall

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
PostPosted: Fri Mar 08, 2013 9:21 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
SVN r. 3358 - EditBox учитывает нажатые клавиши Win (и перестает принимать символы), это правильно работает лишь для ядра r.3356 или последующих. Поскольку используется флаги индикации Win клавиш, получаемых ф.66.3

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
PostPosted: Sat Mar 09, 2013 11:45 am 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Leency wrote:
Баг со скроллом. Наглядно. Без СМС. Без регистрации. Звук в видео ЕСТЬ.

https://docs.google.com/file/d/0B7UOAbB ... edit?pli=1

Проблема все-же не в скроллбаре, а в невалидном для RTFREAD файле. На видео достаточно отчетливо видна куча кракозябр, вероятно это табличное или еще какое-то форматирование. Сам открываемый файл на рассмотрение не предоставлен. RTFREAD поддерживает собственно формат RTF не полностью. Когда открывается обычный - даже очень большой файл (к примеру у меня есть мануал Fasm на русском языке в формате RTF), то такого эффекта не наблюдается. Показанный пример считаю бездоказательным в отношении предполагаемого бага в scrollbar.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
PostPosted: Mon Apr 01, 2013 10:52 am 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Для приложения Desktop я "изобрел" элемент Frame (рамка).
viewtopic.php?f=42&t=1509&start=17
Имеет ли смысл сделать такой элемент в библиотеку? Будет ли востребовано?

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
PostPosted: Tue Apr 02, 2013 12:28 am 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5067
Судя по весьма неплохому результату, элемент ободок в библиотеке не помешает.

_________________
Через тернии к звездам


Top
   
PostPosted: Tue Apr 02, 2013 12:56 am 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Leency wrote:
Судя по весьма неплохому результату, элемент ободок в библиотеке не помешает.

Требуется дизайнерский пиксельхантинг, может там полоски местами переставить или еще чего? А то у нас хардкордных программистов квадратно-гнездовой прямоугольный способ построения плоскостей элементов.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
PostPosted: Tue Apr 02, 2013 1:27 am 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5067
И так нормально.

_________________
Через тернии к звездам


Top
   
PostPosted: Thu Apr 11, 2013 12:01 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Идея. Добавить в библиотеку ProgressBar.

Мой вариант:
Spoiler: Show
Image
Attachment:
File comment: pb_lib.obj должен быть в "/sys/lib"
(pb_lib.obj + pb_test.kex).7z [1021 Bytes]
Downloaded 211 times
Attachment:
pb.asm [4.05 KiB]
Downloaded 125 times
Attachment:
pb_test.asm [4.5 KiB]
Downloaded 126 times

Почему-то, когда окно активное, скриншотер его сворачивает, и скриншот не получается.


Top
   
PostPosted: Thu Apr 11, 2013 12:19 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
0CodErr
У тебя есть аккаунт SVN? Если есть прикрути, если нет аккаунта, то нужно попросить у админов.
Я сам давно хотел выдрать код из KFM и прикрутить в качестве компонента, но руки не дошли.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
PostPosted: Fri Apr 12, 2013 2:27 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5067
0CodErr
Выглядит хорошо внешне, в API пока не смотрел. Мне пришлось изобрести свой прогрессбар - можно увидеть в Лизе и ещё двум программам он уже нужен, а включать код прогрессбара в каждую - дополнительные расходы. Так что я за добавление.

_________________
Через тернии к звездам


Last edited by Leency on Fri Apr 12, 2013 2:29 pm, edited 2 times in total.

Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 400 posts ]  Go to page Previous 114 15 16 17 1827 Next

All times are UTC+03:00


Who is online

Users browsing this forum: Google [Bot] and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited