Русский / Russian English / Английский

Сейчас на форуме: Astap1516, Zer0, Sorry, tihiy_grom (+1 невидимый пользователь)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

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

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

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

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

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


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


Ранг: 265.2 (наставник)
Статус: Участник
very WELL :)

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

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

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

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

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


Статус: Аноним

Создано: 11 ноября 2004 02:20 New!
Цитата #4

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


Статус: Аноним

Создано: 11 ноября 2004 02:23 New!
Цитата #5

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

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

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

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


Статус: Аноним

Создано: 11 ноября 2004 02:31 · Поправил: Zer0 New!
Цитата #7

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

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

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

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

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

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

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

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

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

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

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


Ранг: 265.2 (наставник)
Статус: Участник
very WELL :)

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

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


Статус: Аноним

Создано: 11 ноября 2004 10:38 New!
Цитата #12

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

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

Создано: 11 ноября 2004 11:53 · Поправил: AlexZ New!
Цитата · Личное сообщение · #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.


Статус: Аноним

Создано: 11 ноября 2004 12:28 New!
Цитата #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: как написать текст на битмапе?

Видеокурс ВЗЛОМ