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

 eXeL@B —› Крэки, обсуждения —› asm: как написать текст на битмапе?
Посл.ответ Сообщение

Ранг: 136.3 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 11 ноября 2004 00:02 · Поправил: MC707
· Личное сообщение · #1

Подскажите плз изучающему ассемблер (мне то есть), как мне реализовать такую вещь:

Есть диалог-бокс, на нем картинка. На этой картинке хочу текст написать. Нифига не выходит. Был бы у кого-то примерчик, я б был рад.


PS. Еще бонус в придачу . Не знаете случайно что за алгоритм? Может известный? (но не мне )
Берется строка, делается из нее хэш длины 0Dh (неизвестно какой хэш-функции), этот хэш переделывается в двоичную строку, дополняется нулями до длины, кратной 6, разбивается на двоичные числа длины 6, эти 6-битные числа переводятся в DEC, и из строки aAbBcCdDeE... выбираются символы соответствующие этим получившимся DEC-числам. Вот




Ранг: 266.8 (наставник), 5thx
Активность: 0.220.03
Статус: Участник
very WELL :)

Создано: 11 ноября 2004 01:50
· Личное сообщение · #2

Поместить статик на диалог-бокс и в нём написать.
А вот как статик сделать прозрачным я не знаю.



Ранг: 136.3 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 11 ноября 2004 02:04
· Личное сообщение · #3

WELL
Я так делал. Вот и у меня не получилось, чтоб текст был поверх битмапа.



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

Создано: 11 ноября 2004 02:20
· Личное сообщение · #4

и ваще я те кидал сырец кейгена, вот там и есть



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

Создано: 11 ноября 2004 02:23
· Личное сообщение · #5

ебта, я для кого инструкцию в мыле писал



Ранг: 136.3 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 11 ноября 2004 02:24
· Личное сообщение · #6

Дык епта, нету там того что ты писал =)



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

Создано: 11 ноября 2004 02:31 · Поправил: Zer0
· Личное сообщение · #7

дык епта отправил снова



Ранг: 136.3 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 11 ноября 2004 02:41
· Личное сообщение · #8

Zer0
Нда мля... дырявая твоя башка...

Половину архива мне выслал, еще хотел, чтоб у меня что-то компилилось



Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

Создано: 11 ноября 2004 02:55
· Личное сообщение · #9

MC707
Это задача банальная, и сорец есть, на васме в форуме висит, там текст даже движется.. , куда интереснее изобразить link'у поверх bitmap'а, чтоб она ещё и цвет меняла при наведении курсора ;)



Ранг: 136.3 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 11 ноября 2004 04:37
· Личное сообщение · #10

Asterix
Не ткнешь пальцем? А то я вроде и искал, и поиск юзал...




Ранг: 266.8 (наставник), 5thx
Активность: 0.220.03
Статус: Участник
very WELL :)

Создано: 11 ноября 2004 10:02
· Личное сообщение · #11

А как статик сверху битмапа прозрачным сделать?



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

Создано: 11 ноября 2004 10:38
· Личное сообщение · #12

дык а нах ваще статики юзать



Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 11 ноября 2004 11:53 · Поправил: AlexZ
· Личное сообщение · #13

MC707
WELL прально подсказал, а вот статик прозрачным делается при помощи обработки сообщения (msg):

case msg of
.......
WM_CTLCOLORSTATIC : {Обработка label's}
Begin
SetBkMode(Wparam,TRANSPARENT);
Result:=GetStockObject(Null_Brush);
//if (wparam<>0) and (lparam=Label6) then
//SetTextColor(wparam,rgb(0,0,0)); //Здесь можно изменить цвет текста
End;
........


На асме это так:

MainWndProc proc
............................................
cmp dword ptr [ebp+0Ch], WM_CTLCOLORSTATIC
jne @F

push TRANSPARENT
push dword ptr [ebp+10h]
call SetBkMode

push NULL_BRUSH
call GetStockObject
push eax ;Result=GetStockObject

cmp dword ptr [ebp+10h], 0 ; wParam
jne @@IsCurrentStatic
pop eax
jmp @@EndWndProc

@@IsCurrentStatic:
push 000000FFh
push dword ptr [ebp+10h]
call SetTextColor
pop eax ; достать из стека Result
jmp @@EndWndProc ; Функция должна вернуть НЕ нулевой результат!
@@:
........................................
MainWndProc endp


Вот как это выглядит (правда это я ещё на Винапи в делфе делал) :
скачать патчик http://www.rockteam.org/rlz/file.renamer.1.0.9.patch-rock.zip

И ещё можно при помощи TextOut Примерчика под рукой пока нет, но копать нужно в сторону BeginPaint, EndPaint, TextOut, GetDC, ReleaseDC, SetBkMode, SetBkColor.

-----
Я медленно снимаю с неё UPX... *FF_User*




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

Создано: 11 ноября 2004 12:28
· Личное сообщение · #14

у меня это сделано так:
invoke CreateFont,FontSize,0,0,0,FW_ULTRABOLD,0,0,0,0,0,0,0,0,addr szTextFont
mov hTextFont,eax

invoke SetBkMode,DC,TRANSPARENT
invoke SetTextColor,DC,FontColor
invoke SelectObject,DC,hTextFont
invoke TextOut,DC,x,2,addr szText, sizeof szText


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


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