Сейчас на форуме: ==DJ==[ZLO], Magister Yoda, Rio (+6 невидимых)

 eXeL@B —› Основной форум —› Картинка в патч
Посл.ответ Сообщение

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

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

Создал патч на delphi (winapi) размер вроде нормальный получился - небольшой. А как туда картинку вставить?

p.s. сорри за глупый вопрос, просто я с winapi ещё как то не очень.



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

Создано: 24 декабря 2004 05:15
· Личное сообщение · #2

В статик (STATIC) со свойством битмапа (SS_BITMAP) можно загрузить картинку из ресурсов при помощи LoadBitmap и установить:
SendMessage(hPlaceForBitmap,STM_SETIMAGE,IMAGE_BITMAP,hBmp);

Можно так-же просто обозвать в ресурсах битмап, и это же название поместить в заголовок(Caption) статика с флагом SS_BITMAP.

Второй случай удобнее если диалог создан из ресурсов.

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




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

Создано: 24 декабря 2004 05:31
· Личное сообщение · #3

А как создавать эти файлы с реурсами? Вроде нужна прога Borland Resource Workshop. Где её взять можно. В комплекте с дельфи нету вроде как... может аналоги есть?



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

Создано: 24 декабря 2004 09:28
· Личное сообщение · #4

Fang, в комплекте с Делфи есть brcc32.exe пишешь в блокноте текстовый файл на языке ресурсов, сохраняешь (*.rc), перетаскиваешь мышью на этоу прожку -> получаем *.res файл. А вообще есть в комплекте с С++ неплохие редакторы ресурсов. Я вот один раз файлик в рестораторе создал, и в РесХакере его копии подгоняю под нужды. В общем, набросал сейчас примерчик:
program TEMP_Late;

uses
  Windows,
  messages;

{$R _RSRC.res}

Function WNDPROC(
              wnd:dword;
              msg:dword;
              Wparam:dword;
              LParam:dword
              ):dword;stdcall;
begin
if msg=wm_close then
    postquitmessage(0);
Result:=0;
end;

begin
DialogBox(hInstance,'#7100',0,@WNDPROC);
ExitProcess(0);
end.
Короче, рулит здесь всё равно Асм 56468830___rsrc.res

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




Ранг: 103.2 (ветеран)
Активность: 0.020
Статус: Участник
Нолик :)

Создано: 24 декабря 2004 09:28
· Личное сообщение · #5

вроде ресторатором можно
лучше руками напиши .rc файл и скомпили его в brcc32.exe (поставляется с дельфой)



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

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

Редактор ресурсов из VC++ форева



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

Создано: 25 декабря 2004 04:03
· Личное сообщение · #7

Вообщем с созданием файла ресурсов я вроде бы как разобрался (VC + Resource Hacker). Теперь вот хочется чтобы в патче были не просто кнопки а картинки (наподобие кряков от WELL'a). Как обработать сообщение при нажатии на картинку? С кнопкой всё понятно wm_command а с картинками как быть?



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

Создано: 25 декабря 2004 04:27
· Личное сообщение · #8

И ещё.......
Как сделать чтобы окно можно было таскать за любое место (за картинку)?




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

Создано: 25 декабря 2004 09:40
· Личное сообщение · #9

WM_LBUTTONUP
WM_LBUTTONDOWN




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 25 декабря 2004 09:50
· Личное сообщение · #10

Fang пишет:
С кнопкой всё понятно wm_command а с картинками как быть?

Поставь поверх кнопки картинку...



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

Создано: 26 декабря 2004 06:17
· Личное сообщение · #11

WELL пишет:
WM_LBUTTONUP
WM_LBUTTONDOWN


Эти вроде для кнопки.
Ara пишет:
Поставь поверх кнопки картинку...


Как поставить? Может кусочек кода дашь. А то я эксперементировал но что то не получилось ничего.




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 26 декабря 2004 06:24
· Личное сообщение · #12

Fang пишет:
Как поставить? Может кусочек кода дашь

В МАСМ32 есть пример BMPBUTTON (вроде так пишется), глянь его...

Я в ресурсах создавал кнопу и картинку на нее ставил. Получается, что ты кликаешь на кнопу и обрабатывешь сообщения WM_COMMAND как обычно. Только вместо кнопки-картинка. И со стилями кнопки поэкспериментируй...



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

Создано: 26 декабря 2004 07:36
· Личное сообщение · #13

Ara пишет:
В МАСМ32 есть пример BMPBUTTON (вроде так пишется), глянь его...

Я ж не дельфи делаю. Пример посмотрел но что-то не всё понял я с асмом пока не очень.

Ara пишет:
Я в ресурсах создавал кнопу и картинку на нее ставил. Получается, что ты кликаешь на кнопу и обрабатывешь сообщения WM_COMMAND как обычно. Только вместо кнопки-картинка. И со стилями кнопки поэкспериментируй...


Вот мне так и надо. Или ты на асме делал?




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 26 декабря 2004 08:01
· Личное сообщение · #14

Fang пишет:
Вот мне так и надо.

Ну да, на асме.
Ты же файл ресурсов создал? Вот туда добавляешь картинку, которая будет лежать на кнопке, меняешь стили кнопки и все. Дальше ты пишешь обычный код, как будто картинки нет. Это для начала. Потом, если это сделаешь, делай, чтоб кнопка меняла картину (эффект нажатия).
Ты хочешь картинку вместо кнопки или кнопку с иконкой?



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

Создано: 26 декабря 2004 08:38
· Личное сообщение · #15

Ara пишет:
Ты хочешь картинку вместо кнопки или кнопку с иконкой?

Картинку вместо кнопки. Картинку с иконкой я уже научился делать.
Ладно буду пробовать...



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

Создано: 26 декабря 2004 13:06
· Личное сообщение · #16

Блин что то не выходит никак Уже третий день с этим патчем вожусь...
Вообщем чтобы поместить картинку в Static я делаю так:
CONTROL 101, 1, STATIC, SS_BITMAP | WS_CHILD | WS_VISIBLE | WS_GROUP, 0, 0, 167, 126

Чтобы поместить битмап на кнопку по идее надо писать в ресурсах
CONTROL 101, 5, BUTTON, BS_BITMAP | WS_CHILD | WS_VISIBLE | WS_GROUP, 13, 33, 60, 14

Но картинка не появляется. Подскажите где ошибка?




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 26 декабря 2004 13:12
· Личное сообщение · #17

не-е-т, ты меня не понял.
Отдельно картинка и отдельно кнопка.
==============================================
PUSHBUTTON "Generate", 500, 60,18, 45, 12, WS_CHILD | WS_VISIBLE | WS_TABSTOP|BS_OWNERDRAW
CONTROL "", 255, "static", WS_CHILD | WS_VISIBLE |SS_BITMAP|WS_EX_TOPMOST , 0, 18, 165, 40
==============================================
Так у меня сделано, картинка только на всю форму и на ней нарисована кнопка. Потом совмещаешь реальную и нарисованную кнопку.



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

Создано: 26 декабря 2004 13:58
· Личное сообщение · #18

Спасибо. Смысл я понял. Только вот на месте кнопки серое пятно =( Как сделать чтобы её не было видно? Убирал св-во ws_visible - не отображается, но и нажимается.



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

Создано: 26 декабря 2004 14:14
· Личное сообщение · #19

Fang пишет:
Убирал св-во ws_visible - не отображается, но и нажимается.

Хотел сказать не отображается и не нажимается

p.s. Ara может выложишь кусок своего *.res файла. Там где кнопка описывается и статик. А то я этими свойствами совсем запутался никак не могу подобрать то что надо.




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 26 декабря 2004 14:27
· Личное сообщение · #20

Fang
Ну в последнем посте я и выложил кусок своего rc файла, прям из него выделил. Кнопа и статик.



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

Создано: 27 декабря 2004 01:40
· Личное сообщение · #21

Я делаю кнопку и статик с такимиже св-вами как у тебя но кнопка у меня всё равно поверх статика как серый прямоугольник



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

Создано: 27 декабря 2004 08:16
· Личное сообщение · #22

Fang Файл ресурсов и ехе_шник приаттачены (нажимать на кнопку "ПУСК").
program TEMP_Late;

uses
  Windows,
  messages;

{$R _RSRC.res}

Function WNDPROC(
              wnd:dword;
              msg:dword;
              Wparam:dword;
              LParam:dword
              ):dword;stdcall;
begin
if msg=wm_command then
  if Wparam=6667 then
    MessageBox(wnd,'Поехали!','Get start!',MB_OK);
if msg=wm_close then
    postquitmessage(0);
Result:=0;
end;

begin
DialogBox(hInstance,'#7100',0,@WNDPROC);
ExitProcess(0);
end.
_1713007570__WinAPI.zip

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




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

Создано: 29 декабря 2004 09:40
· Личное сообщение · #23

3 дня болел (лежал с температурой) Щас вот вроде поправился. В инет выбрался. AlexZ вообщем скачал твой *.res файл теперь понятно всё. Но мне ещё один вопрос не понятен: Fang пишет:
......
Как сделать чтобы окно можно было таскать за любое место (за картинку)?


Если я конечно вас сильно не достал ещё



Ранг: 192.3 (ветеран), 18thx
Активность: 0.120
Статус: Участник
stoned machine-gunner

Создано: 29 декабря 2004 10:00
· Личное сообщение · #24

.elseif uMsg == WM_LBUTTONDOWN
invoke SendMessage, hWin, WM_NCLBUTTONDOWN, HTCAPTION, lParam

И будешь таскать за любое место формы.

-----
once you have tried it, you will never want anything else




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

Создано: 29 декабря 2004 10:05
· Личное сообщение · #25

Отвечу сорцем

_1988470516__WinAPI_Ex.zip

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




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

Создано: 30 декабря 2004 01:42
· Личное сообщение · #26

Спасибо всем наконец-то у меня получилось!

p.s. Ara и AlexZ можно в About вам приветы передать? (я пока релизить не собираюсь, учиться надо ещё, но просто чтоб в будущем если вдруг буду не забыть кто помогал мне =)



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

Создано: 30 декабря 2004 03:38
· Личное сообщение · #27

Даже нужно :)))))

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



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


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