![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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.
|
|
#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; |