|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.02.2011, 21:10 | #1 |
Пользователь
Регистрация: 02.02.2011
Сообщений: 10
|
отрисовать BMP чрез bitblt на hdc
код
PUSH 0 PUSH 0 PUSH 0 PUSH 0 ;IMAGE_BITMAP PUSH 10 PUSH hinst CALL LoadImageA@24 MOV volume,EAX ; загружаю BMP через файл ресурсов в переменную invoke GetDC,hwndbtn9 mov hdc,eax ;получил hdc окна на котором надо отрисовать (класс static) invoke CreateCompatibleDC,0 mov SpecDC,eax ; создал hdc в памяти invoke CreateCompatibleBitmap,specdc,60,60 ; создал объект bitmap invoke SelectObject, SpecDC, eax mov OldBmp,eax ; выбрал объект bitmap и разместил на hdc в памяти invoke BitBlt, hdc, 0, 0, 60, 60, oldbmp, 0, 0, SRCCOPY ; откопировал из hdc памяти на hdc окна(класс static) invoke ReleaseDC,hwndbtn9, hdc ; освободил hdc Вопрос где втыкать переменную Volume с моим BMP ? и вообще правильно ли я делаю ? |
03.02.2011, 06:13 | #2 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
|
03.02.2011, 10:24 | #3 |
Пользователь
Регистрация: 02.02.2011
Сообщений: 10
|
прочитал, теперь код такой.
invoke LoadBitmap,hinst,10 mov volume,eax invoke GetDC,hwndbtn9 mov hdc,eax invoke CreateCompatibleDC,0 mov SpecDC,eax invoke SelectObject, specDC, volume mov OldBmp,eax invoke GetClientRect,HWNDBTN9,addr RCT invoke BitBlt, hdc, 0, 0, rct.r, rct.b, oldbmp, 0, 0, SRCCOPY invoke ReleaseDC,hwndbtn9, hdc и не чё не работает ) |
03.02.2011, 10:52 | #4 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
lestor
А под OllyDbg посмотреть не судьба? Прикрепи EXE и исходный текст целиком, посмотрю, что у тебя за баг |
03.02.2011, 11:02 | #5 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Код:
красное это должен был быть контекст с которого копируем. а OldBMP вам вообще не нужна и так же забыли удалять свой временный контекст. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
03.02.2011, 11:11 | #6 | |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Цитата:
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
|
03.02.2011, 11:39 | #7 |
Пользователь
Регистрация: 02.02.2011
Сообщений: 10
|
Пепел феникса да я увидел уже это и сиправил всё равно не работает.
мне ссылку дали на урок 25 там есть пример в RAR. в общем он заработал но там через beginpaint. может просто отрисовать на моём окне не получается ? пробовал на 2 окнах STYLBTN3 equ WS_CHILD+WS_VISIBLE+SS_CENTERIMAGE+ SS_BITMAP+SS_REALSIZEIMAGE STYLBTN equ WS_CHILD+BS_DEFPUSHBUTTON+WS_VISIBL E Последний раз редактировалось lestor; 03.02.2011 в 11:53. |
03.02.2011, 12:17 | #8 |
Пользователь
Регистрация: 02.02.2011
Сообщений: 10
|
в общем была мелочь, моя невнимательность событие wm_paint не отрабатывалось.
теперь если свернуть окно а затем развернуть то пропадают все кнопки кроме этой картинки ) Последний раз редактировалось lestor; 03.02.2011 в 13:00. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Загрузка BMP в Simple Graph и сохранение в BMP формат | artemavd | Общие вопросы Delphi | 10 | 02.10.2010 14:19 |
Передача больших файлов чрез сокет | D_E_N | Работа с сетью в Delphi | 0 | 18.01.2010 19:17 |
BitBlt | ZotaC | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 14 | 16.01.2010 19:04 |
Нужно отрисовать текст с левой стороны(LeftMargin) и сделать его вертикальным - Компонент RxLib | Михаил Юрьевич | Общие вопросы Delphi | 1 | 08.08.2009 22:16 |
как отрисовать tab-ы в pagecontrol? | blackstersl | Общие вопросы Delphi | 5 | 09.07.2009 17:57 |