![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() как поместить данную функцию в таймер:
Код:
function MessageProcess(Handle: HWND; Msg: UINT; WParam: Integer; lParam: Integer): Integer;stdcall; var ps: PAINTSTRUCT; begin Result:=0; case msg of WM_CREATE: begin //*** end; WM_DESTROY: begin PostQuitMessage(0); Exit; end; Result:=DefWindowProc(Handle,Msg,WParam,LParam); end; |
#2
|
||||
|
||||
![]() Это оконная функция управляющая программой и ей нечего делать в таймере, да и в проекте в целом. Не путайте VCL и WinAPI.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
![]() ладно поясню что именно не получается, мне требуется смена картинки каждый промежуток времени, во время работы программу. По-этому решил сделать это в таймере, задать интервал и менять их. Но программа на winapi, а не VLC. Для смены картинки пытался переделать вот этот код, но на winapi:
Код:
var PngIdx: Integer; procedure TForm1.Timer1Timer(Sender: TObject); begin Image1.Picture.LoadFromFile(IntToStr(PngIdx)+'.png'); PngIdx:=(PngIdx+1) mod 8; end; вывод картинки вот так вот Код:
var bmpMain,bmpBut: hBitmap; dc,ccdc: HDC; function MesPro(Handle: HWND; Msg: UINT; WParam: Integer; lParam: Integer): Integer;stdcall; var ps: PAINTSTRUCT; begin Result:=0; case msg of WM_CREATE: begin dc:=GetDC(0); ccdc:=CreateCompatibleDC(dc); bmpBut:=LoadRes(hInstance,'button_next','PNG');//Загрузка *.RES bmpBut:=SelectObject(ccdc,bmpBut); end; WM_PAINT: begin BeginPaint(Handle,ps); BitBlt(ps.hdc,414,383,34,34,ccdc,0,0,SRCCOPY); EndPaint(Handle,ps); end; WM_DESTROY: begin DeleteObject(SelectObject(ccdc,bmpBut)); DeleteDC(ccdc); ReleaseDC(0,dc); PostQuitMessage(0); Exit; end; end; Result:=DefWindowProc(Handle,Msg,WParam,LParam); end; LoadRes, самаписная процедура, загрузки файла из RES. А как сделать смену картинки на winapi, уже 3 дня пытаюсь, переделывать но у меня либо вобще картинка не отображается, либо только 1 кадр. P.S. Картинки в RES подписаны так: Код:
1 PNG 1.PNG 2 PNG 2.PNG 3 PNG 3.PNG 4 PNG 4.PNG 5 PNG 5.PNG 6 PNG 6.PNG 7 PNG 7.PNG 8 PNG 8.PNG Последний раз редактировалось helper999999, 28.01.2015 в 14:09. |
#4
|
||||
|
||||
![]() Как вариант
Код:
var bmpMain, bmpBut, oldBmp : hBitmap; dc, ccdc : HDC; Count : Integer; function MesPro(Handle: HWND; Msg: UINT; WParam: Integer; lParam: Integer): Integer;stdcall; var ps: PAINTSTRUCT; begin Result:=0; case msg of WM_CREATE: begin dc := GetDC(0); ccdc := CreateCompatibleDC(dc); bmpBut := LoadRes(hInstance,'button_next','PNG');//Загрузка *.RES OldBmp := SelectObject(ccdc, bmpBut); SetTimer(Handle, 1, 100, NIL); end; WM_TIMER : begin inc(Coount); if Count > 8 then Count := 1; bmpBut := LoadRes(hInstance, 'button_next', IntToStr(Count) + 'PNG');//Загрузка *.RES SelectObject(ccdc, bmpBut); InvalidateRect(Handle, NIL, False); end; WM_PAINT: begin BeginPaint(Handle,ps); BitBlt(ps.hdc,414,383,34,34,ccdc,0,0,SRCCOPY); EndPaint(Handle,ps); end; WM_DESTROY: begin KillTimer(Handle, 1); DeleteObject(SelectObject(ccdc, OldBmp)); DeleteDC(ccdc); ReleaseDC(0, dc); PostQuitMessage(0); Exit; end; end; Result:=DefWindowProc(Handle,Msg,WParam,LParam); end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |