Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Bitmap 
V
    Опции темы
gwest
Дата 23.11.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 8.11.2005

Репутация: нет
Всего: нет



Вобщем вопрос в следущем:
есть два битмапа...
надо при нажатии на одном, чтоб перерисовался вместо первого второй.
вобшем все написал... вопрос заключается тока в правильности кода реакции на сообщение wm_paint(код в приложении)

идея такая: если нажать левую клавишу мыши в определенной облости то картинка должна перерисоваться...

Все проверял, по отдельности картинки перерисовываютя... возможно ошибка либо wmlbuttondown тоесть я не посылаю сообшение перерисоваться, либо я как то не правильно работаю с отображением.

Код

wmlbuttondown:
  push offset ps
  call GetCursorPos@4
  cmp [ps.x],234
  jb ex
  cmp [ps.x],339
  ja ex
  cmp [ps.y],247
  jb ex
  cmp [ps.y],330
  ja ex
  mov Fkey,1
  ;тут вроде надо послать сообщение перерисоваться
ex:
  mov eax,0
  jmp finish

wmpaint:
  push offset pt
  push dword ptr [ebp+08h]
  call BeginPaint@8
  mov histDC,eax

  cmp Fkey,1 ;если мышь была нажата в той области то
                     ;переход на bit2
  jz bit2

  push hBitmap
  push hMemDC
  call SelectObject@8

  push SRCCOPY
  push 0
  push 0
  push hMemDC
  push 600  ;координаты картинки у нижний-правый
  push 530  ;х нижний-правый
  push 200  ;у верхний-левый
  push 200  ;х верхний-левый
  push histDC
  call BitBlt@36
  
  push hBitmap
  call DeleteObject@4
  
  jmp pexit

bit2:
  push hBitmap2
  push hMemDC
  call SelectObject@8

  push SRCCOPY
  push 0
  push 0
  push hMemDC
  push 600  ;координаты картинки у нижний-правый
  push 530  ;х нижний-правый
  push 200  ;у верхний-левый
  push 200  ;х верхний-левый
  push histDC
  call BitBlt@36

  push hBitmap2
  call DeleteObject@4

  mov Fkey,0

pexit:
  push offset pt
  push dword ptr [ebp+8h]
  call EndPaint@8
  mov eax,0
  jmp finish

PM MAIL   Вверх
Farmazon
Дата 25.11.2006, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Разработчик
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 7.7.2006

Репутация: нет
Всего: 5



Да, перерисоваться окошко надо заставить.

Для посылки события перерисовки окна используй функцию "InvalidateRect".

call InvalidateRect, хендл_акошка, 0, 1 

Подробнее на msdn.microsoft.com


--------------------
Таково моё общее мнение.
PM MAIL WWW   Вверх
gwest
Дата 26.11.2006, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 8.11.2005

Репутация: нет
Всего: нет



2 Farmazon

сенк... а то я не правильно передавал параметры этой функции

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.2860 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.