Посл.ответ |
Сообщение |
Ранг: 136.3 (ветеран) Активность: 0.05↘0 Статус: Участник
|
Создано: 11 ноября 2004 00:02 · Поправил: MC707 · Личное сообщение · #1
Подскажите плз изучающему ассемблер (мне то есть), как мне реализовать такую вещь:
Есть диалог-бокс, на нем картинка. На этой картинке хочу текст написать. Нифига не выходит. Был бы у кого-то примерчик, я б был рад.
PS. Еще бонус в придачу . Не знаете случайно что за алгоритм? Может известный? (но не мне )
Берется строка, делается из нее хэш длины 0Dh (неизвестно какой хэш-функции), этот хэш переделывается в двоичную строку, дополняется нулями до длины, кратной 6, разбивается на двоичные числа длины 6, эти 6-битные числа переводятся в DEC, и из строки aAbBcCdDeE... выбираются символы соответствующие этим получившимся DEC-числам. Вот
| Сообщение посчитали полезным: |
|
Ранг: 266.8 (наставник), 5thx Активность: 0.22↘0.03 Статус: Участник very WELL :)
|
Создано: 11 ноября 2004 01:50 · Личное сообщение · #2
Поместить статик на диалог-бокс и в нём написать.
А вот как статик сделать прозрачным я не знаю.
| Сообщение посчитали полезным: |
Ранг: 136.3 (ветеран) Активность: 0.05↘0 Статус: Участник
|
Создано: 11 ноября 2004 02:04 · Личное сообщение · #3
WELL
Я так делал. Вот и у меня не получилось, чтоб текст был поверх битмапа.
| Сообщение посчитали полезным: |
Ранг: 0.0 (гость) Активность: 0.25↘0 Статус: Участник
|
Создано: 11 ноября 2004 02:20 · Личное сообщение · #4
и ваще я те кидал сырец кейгена, вот там и есть
| Сообщение посчитали полезным: |
Ранг: 0.0 (гость) Активность: 0.25↘0 Статус: Участник
|
Создано: 11 ноября 2004 02:23 · Личное сообщение · #5
ебта, я для кого инструкцию в мыле писал
| Сообщение посчитали полезным: |
Ранг: 136.3 (ветеран) Активность: 0.05↘0 Статус: Участник
|
Создано: 11 ноября 2004 02:24 · Личное сообщение · #6
Дык епта, нету там того что ты писал =)
| Сообщение посчитали полезным: |
Ранг: 0.0 (гость) Активность: 0.25↘0 Статус: Участник
|
Создано: 11 ноября 2004 02:31 · Поправил: Zer0 · Личное сообщение · #7
дык епта отправил снова
| Сообщение посчитали полезным: |
Ранг: 136.3 (ветеран) Активность: 0.05↘0 Статус: Участник
|
Создано: 11 ноября 2004 02:41 · Личное сообщение · #8
Zer0
Нда мля... дырявая твоя башка...
Половину архива мне выслал, еще хотел, чтоб у меня что-то компилилось
| Сообщение посчитали полезным: |
Ранг: 450.1 (мудрец) Активность: 0.26↘0 Статус: Участник
|
Создано: 11 ноября 2004 02:55 · Личное сообщение · #9
MC707
Это задача банальная, и сорец есть, на васме в форуме висит, там текст даже движется.. , куда интереснее изобразить link'у поверх bitmap'а, чтоб она ещё и цвет меняла при наведении курсора ;)
| Сообщение посчитали полезным: |
Ранг: 136.3 (ветеран) Активность: 0.05↘0 Статус: Участник
|
Создано: 11 ноября 2004 04:37 · Личное сообщение · #10
Asterix
Не ткнешь пальцем? А то я вроде и искал, и поиск юзал...
| Сообщение посчитали полезным: |
Ранг: 266.8 (наставник), 5thx Активность: 0.22↘0.03 Статус: Участник very WELL :)
|
Создано: 11 ноября 2004 10:02 · Личное сообщение · #11
А как статик сверху битмапа прозрачным сделать?
| Сообщение посчитали полезным: |
Ранг: 0.0 (гость) Активность: 0.25↘0 Статус: Участник
|
Создано: 11 ноября 2004 10:38 · Личное сообщение · #12
дык а нах ваще статики юзать
| Сообщение посчитали полезным: |
Ранг: 203.3 (наставник) Активность: 0.22↘0 Статус: Участник 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.25↘0 Статус: Участник
|
Создано: 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
| Сообщение посчитали полезным: |