Сейчас на форуме: jinoweb (+5 невидимых)

 eXeL@B —› Программирование —› Бегущая строка (как использовать этот код)
Посл.ответ Сообщение

Ранг: 6.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 12 ноября 2015 08:42
· Личное сообщение · #1

Здравствуйте! Подскажите, пожалуйста, как использовать этот код в своей программе?

Code:
  1. .const
  2. OUT_WIDTH               equ     40
  3. OUT_HEIGHT               equ     14
  4. OUT_X                    equ     20
  5. OUT_Y                    equ     20
  6. ABOUT_TXT               equ     0000000h
  7. SCROll_TXT          equ     0000000h
  8. WS_EX_LAYERED     equ     80000h
  9. LMA_ALPHA          equ     2     
  10. GRADIENT          equ     2d
  11.  
  12. .data
  13. font          db     "ms sans serif",0
  14. dbCaption     db     " BLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA "
  15. dbCaption1     db     "all memberz... ",0
  16. dbSLWA          db     "SetLayeredWindowAttributes",0
  17. dbUser32     db     "user32.dll",0
  18. rCaptRct     RECT     <OUT_X,OUT_Y,OUT_X+OUT_WIDTH,OUT_Y+OUT_HEIGHT>
  19.  
  20. .data?
  21. hfont          dd     ?
  22. memdc          dd     ?
  23. rectW          dd     ?
  24. ttread     dd     ?
  25.  
  26. .code
  27.  
  28. TextOutput proc hWn:DWORD
  29. LOCAL x:DWORD, y:DWORD, col:DWORD
  30.      xor     eax,eax
  31.      mov     ebx,SCROll_TXT
  32.      ;sub ebx,ABOUT_FRAME
  33.      mov     ecx,GRADIENT
  34.      mov     esi,3
  35. @@:
  36.      mov     al,bl
  37.      shr     ebx,8
  38.      cdq
  39.      idiv ecx
  40.      mov     byte ptr col,al
  41.      ror     col,8
  42.      dec     esi
  43.      jnz     @B
  44.      shr     col,8
  45.  
  46.      mov     edi,SCROll_TXT
  47.      mov     eax,col
  48.      imul eax,GRADIENT
  49.      sub     edi,eax
  50.  
  51.      mov     esi,rectW
  52.      dec     esi
  53. paint:
  54.      invoke BitBlt,memdc,esi,0,1,OUT_HEIGHT,memdc,0,0,SRCCOPY
  55.      invoke BitBlt,memdc,0,0,esi,OUT_HEIGHT,memdc,1,0,SRCCOPY
  56.  
  57.      ; fade out
  58.      mov     x,0
  59. @11:
  60.      mov     y,0
  61.      @21:
  62.           invoke GetPixel,memdc,x,y
  63.           .if eax!=0
  64.                sub     eax,col
  65.                invoke SetPixel,memdc,x,y,eax
  66.           .endif
  67.           inc     y
  68.           cmp     y,OUT_HEIGHT
  69.           jl     @21
  70.      inc     x
  71.      cmp     x,GRADIENT
  72.      jl     @11
  73.  
  74.      ;fade in init
  75.      mov     y,0
  76. @@:
  77.      invoke GetPixel,memdc,OUT_WIDTH,y
  78.      .if eax!=0
  79.           invoke SetPixel,memdc,OUT_WIDTH,y,edi
  80.      .endif
  81.      inc     y
  82.      cmp     y,OUT_HEIGHT
  83.      jl     @B
  84.  
  85.      ; fade in
  86.      mov     eax,OUT_WIDTH
  87.      sub     eax,GRADIENT
  88.      mov     x,eax
  89. @12:
  90.      mov     y,0
  91.      @22:
  92.           invoke GetPixel,memdc,x,y
  93.           .if eax!=0
  94.                add     eax,col
  95.                invoke SetPixel,memdc,x,y,eax
  96.           .endif
  97.           inc     y
  98.           cmp     y,OUT_HEIGHT
  99.           jl     @22
  100.      inc     x
  101.      cmp     x,OUT_WIDTH
  102.      jl     @12
  103.  
  104.      invoke InvalidateRect,hWn,addr rCaptRct,0
  105.      invoke Sleep,30d
  106.      jmp     paint
  107. ret
  108. TextOutput endp
  109.  
  110. ShowThread proc hWin:DWORD
  111. LOCAL hSLWA:DWORD
  112.      invoke LoadLibrary,addr dbUser32          ; for Win98 support (not to keep this func in import)
  113.      mov     esi,eax
  114.      invoke GetProcAddress,esi,addr dbSLWA
  115.      mov     hSLWA,eax
  116.      invoke FreeLibrary,esi
  117.  
  118.      mov ecx,10
  119. showloop:          
  120.      push ecx
  121.      
  122.      push LMA_ALPHA
  123.      push ecx
  124.      push 0
  125.      push hWin
  126.      call hSLWA
  127.  
  128.      invoke Sleep,1
  129.      pop ecx
  130.      inc cl
  131.      jnz showloop
  132.  
  133.      invoke GetWindowLong,hWin,GWL_EXSTYLE
  134.      mov     ebx,WS_EX_LAYERED
  135.      not     ebx
  136.      and eax,ebx
  137.      invoke SetWindowLong,hWin,GWL_EXSTYLE,eax
  138. ret
  139. ShowThread endp
  140.  
  141. Show proc hWin:DWORD
  142.  
  143. invoke GetVersion     ; is XP or 2000
  144.           .if     al==5
  145.                invoke GetWindowLong,hWin,GWL_EXSTYLE
  146.                or eax,WS_EX_LAYERED
  147.                invoke SetWindowLong,hWin,GWL_EXSTYLE,eax
  148.                invoke CreateThread,NULL,NULL,addr ShowThread,hWin,NULL,NULL
  149.           .endif     
  150. ret
  151. Show endp




Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 12 ноября 2015 08:52
· Личное сообщение · #2

Откуда столько конченых идиотов в последнее время? Магнитные бури что ли?



Ранг: 6.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 12 ноября 2015 09:02
· Личное сообщение · #3

Зачем сразу так ругаться?! У меня задание бегущая строка, есть код, как вызвать его в программе?

include line.asm

А дальше?



Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 12 ноября 2015 09:12
· Личное сообщение · #4

дальше вызвать процедуру Show



Ранг: 6.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 12 ноября 2015 09:13
· Личное сообщение · #5

Я вызываю: invoke Show, hWin
Но безрезультатно!




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 12 ноября 2015 09:20
· Личное сообщение · #6

Andrello_88 пишет:
Я вызываю: invoke Show, hWin
Но безрезультатно!

Операционка Вин7+ и проверка не канает
Code:
  1. invoke GetVersion     ; is XP or 2000
  2.           .if     al==5


-----
127.0.0.1, sweet 127.0.0.1


| Сообщение посчитали полезным: samtehnik

Ранг: 3.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 13 ноября 2015 01:35
· Личное сообщение · #7

пипец какой год уже, до сих пор примеры окон на асме собирают




Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 13 ноября 2015 07:34
· Личное сообщение · #8

carpucio пишет:
примеры окон на асме собирают


А на чем надо ? )



Ранг: 30.2 (посетитель), 18thx
Активность: 0.030
Статус: Участник

Создано: 13 ноября 2015 07:39
· Личное сообщение · #9

Rainbow пишет:
А на чем надо ? )

На c# же. =)



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 13 ноября 2015 07:53 · Поправил: dosprog
· Личное сообщение · #10

carpucio пишет:
пипец какой год уже, до сих пор примеры окон на асме собирают


А чо делать-то?..


Andrello_88 пишет:
Подскажите, пожалуйста, как использовать этот код в своей программе?


Этот код - пожалуй, не получится.





Ранг: 19.4 (новичок), 11thx
Активность: 0.020
Статус: Участник

Создано: 14 ноября 2015 15:43 · Поправил: elch
· Личное сообщение · #11

Andrello_88 пишет:
Подскажите, пожалуйста, как использовать этот код в своей программе?

Тут явно нерабочий код. Вот пример нормального скроллера от diablo2oo2:

088f_14.11.2015_EXELAB.rU.tgz - textscroller.rar

Вот ещё примеры: Scroller lib v1.01 и на FASM: --> Link <--

| Сообщение посчитали полезным: Andrello_88
 eXeL@B —› Программирование —› Бегущая строка (как использовать этот код)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати