| Посл.ответ | 
Сообщение | 
 Ранг: 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
   | Сообщение посчитали полезным:  |