![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
belphegor |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.12.2006 Где: Молдова, Кишинев Репутация: нет Всего: нет |
Здравствуйте. У меня возникла проблемма и решил попросить помощи у мудрецов.
Я только начинаю изучать ВинАпи и мне не очень легко в этом разобраться. Мне нужно выводить в окне картинки, в зависимости от нажатия кнопки. допустим у меня есть 3 картинки и кнопка next, сделать так чтоб при нажатии на кнопку картинки чередовались. единственное что у меня получилось пока это просто загрузить онду картинку в окно. case WM_PAINT: hDC=BeginPaint(hwnd,&PaintStruct); LoadImage(NULL,"4.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE); GetObject(hBitmap,sizeof(BITMAP),&Bitmap); hCompatileDC=CreateCompatibleDC(hDC); hOldBitmap=SelectObject(hCompatileDC,hBitmap); GetClientRect(hwnd,&Rect); StretchBlt(hDC,0,0,Rect.right,Rect.bottom,hCompatileDC,0,0,Bitmap.bmWidth,Bitmap.bmHeight,SRCCOPY); SelectObject(hCompatileDC,hOldBitmap); DeleteObject(hBitmap); DeleteDC(hCompatileDC); EndPaint(hwnd,&PaintStruct); return 0; break; а как делать дальше не представляю пока,думаю может ктото сможет мне помочь. В принципе в уме я представляю как это реализовать, но кодом нет. Буду очень благодарен за помощь. Заранее спасибо. |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
Создай массив из 3-х битмапов, и индекс текущего битмапа, загрузи, каждый битмап, в пайнте рисуй текущий. Обработай нажатие кнопки, например так:
ID_SWITCH_PIC - идентификатор кнопки Next, установи свое значение. PicId - индекс текущего битмапа. Вот и все. -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
belphegor |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.12.2006 Где: Молдова, Кишинев Репутация: нет Всего: нет |
я сделал так
char* str; s="1.bmp"; ........................ case WM_PAINT: hDC=BeginPaint(hwnd,&PaintStruct); LoadImage(NULL, str ,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); GetObject(hBitmap,sizeof(BITMAP),&Bitmap); hCompatileDC=CreateCompatibleDC(hDC); hOldBitmap=SelectObject(hCompatileDC,hBitmap); GetClientRect(hwnd,&Rect); StretchBlt(hDC,0,0,Rect.right,Rect.bottom,hCompatileDC,0,0,Bitmap.bmWidth,Bitmap.bmHeight,SRCCOPY); SelectObject(hCompatileDC,hOldBitmap); DeleteObject(hBitmap); DeleteDC(hCompatileDC); EndPaint(hwnd,&PaintStruct); return 0; break; case WM_COMMAND: if((HWND) lparam==b1hwnd) { str="2.bmp"; InvalidateRect(hwnd,0,FALSE);} break; --------------------------------- по идее второй битмап должен заменить первый,но картинка не меняется а остается прежней то что в команде в иф заходит это точно и str="2.bmp" тоже, я проверял только вот не перерисовывается в PAINT |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
LoadImage куда возвращает результат-то? наверное все таки присваивание нужно сделать:
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
belphegor |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.12.2006 Где: Молдова, Кишинев Репутация: нет Всего: нет |
я так сделал, странно но при вызове invalidate перерисовывается этот же битмап
Это сообщение отредактировал(а) belphegor - 18.3.2007, 11:23 |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
str, объявленная в WndProc инициируется на каждое сообщение, вынеси её из процедуры, тогда все будет нормально, только первый раз не забудь её присвоить "3.bmp".
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
belphegor |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.12.2006 Где: Молдова, Кишинев Репутация: нет Всего: нет |
Ок , спасибо я как раз сам допер.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |