Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2010, 18:24   #1
Zero&One
 
Регистрация: 04.12.2010
Сообщений: 5
Вопрос Вопрос актуален.Рисование bitmap'ов (имитация движения)

Здраствуйте.Вопрос по Win API\C++, пишу в Visual Studio 2008.Решил написать на форум,так как сам не могу понять почему некорректно работают мои функции.Суть в том,что я рисую (в таймере WM_TIMER) два изображения,которые накладываются друг на друга(получается похоже на анимацию),но я предполагал, что рисовать оно будет до тех пор,пока не убить таймер,а программа рисует каждую картинку по одному разу.
Помогите кто чем может,хочу чтоб эти картинки рисовались по очереди в соответствии с событиями WM_TIMER.
Смотрите прикрепленный файл...
Заранее спасибо)))

Код:
int hottabuch_control=0;//контролирует какой кадр рисовать
HBITMAP Kadr1=0,Kadr2=0;//сами кадры
 
HBITMAP loadImage(char* filename)//функция загрузки изображения
{
        HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,filename,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
        return hBitmap;
}
 
void DrawImage(HWND hWnd,HDC hdc, HBITMAP hBitmap, int x, int y)//функция рисования изображения
{  
        GetClientRect(hWnd2,&r);
        BITMAP bitmap;
        HDC hCompDC = CreateCompatibleDC(hdc);
        SelectObject(hCompDC,hBitmap);
        GetObject (hBitmap,sizeof(BITMAP),&bitmap);
        GetClientRect(hWnd2,&r);
        BitBlt(hdc, r.left+x, r.top+y, 100, 100, hCompDC, 0, 0, SRCCOPY);
        ReleaseDC(hWnd2, hCompDC);                      
}
        
//бла бла...мой код
 
case WM_CREATE:
                        GetClientRect(hWnd2,&r);
                        SetTimer (hWnd2,3,700,NULL);//таймер на каждые 0,7 секунды                      
                        Kadr2=loadImage("h3.bmp");//два хотабыча))))
                        Kadr1=loadImage("h4.bmp");
                return 0;
 
case WM_TIMER:
                        hdc=GetDC(hWnd2);
                        
                        switch(hottabuch_control)
                        {
                        case 0:
                                DrawImage(hWnd2,hdc,Kadr1,100,100);
                                hottabuch_control=1;
                        break;
 
                        case 1:
                                DrawImage(hWnd2,hdc,Kadr2,100,100);
                                hottabuch_control=0;
                        break;
                        }
                
                        ReleaseDC (hWnd2,hdc);
                return 0;
Вложения
Тип файла: rar Test.rar (24.4 Кб, 11 просмотров)

Последний раз редактировалось Zero&One; 04.12.2010 в 21:57.
Zero&One вне форума Ответить с цитированием
Старый 04.12.2010, 20:13   #2
Zero&One
 
Регистрация: 04.12.2010
Сообщений: 5
По умолчанию

чуваки,ну если никто не видит в чем я неправ, то хотябы киньте свои варианты вывода в одно окно нескольких изображений....буду ОЧЕНЬ благодарен.
Zero&One вне форума Ответить с цитированием
Старый 04.12.2010, 20:35   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

приведите нормальный код оконной процедуры, а не урезки непонятные.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.12.2010, 20:43   #4
Zero&One
 
Регистрация: 04.12.2010
Сообщений: 5
Восклицание

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
приведите нормальный код оконной процедуры, а не урезки непонятные.
я могу это сделать,если для Вас это принцип,но я выложил свой проект в тему.Отпишите чтоб я знал - писать код,или Вы посмотрите вложение

Последний раз редактировалось Zero&One; 04.12.2010 в 20:47. Причина: Изменение обращения
Zero&One вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Имитация движения мыши dueram Win Api 5 02.04.2010 22:38
Имитация нажатия на f1 ma000123 Общие вопросы C/C++ 4 02.02.2010 19:17
Имитация движения (need help!) SnakeLight Общие вопросы Delphi 2 05.06.2009 22:32
Имитация движения Napster Паскаль, Turbo Pascal, PascalABC.NET 0 20.01.2009 19:19
имитация клавиатуры Var17 Win Api 3 17.06.2008 14:28