Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.01.2015, 22:42
helper999999 helper999999 вне форума
Прохожий
 
Регистрация: 30.09.2014
Сообщения: 32
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию Поместить функцию в таймер

как поместить данную функцию в таймер:

Код:
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  
Старый 27.01.2015, 22:58
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Это оконная функция управляющая программой и ей нечего делать в таймере, да и в проекте в целом. Не путайте VCL и WinAPI.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 28.01.2015, 13:53
helper999999 helper999999 вне форума
Прохожий
 
Регистрация: 30.09.2014
Сообщения: 32
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию

ладно поясню что именно не получается, мне требуется смена картинки каждый промежуток времени, во время работы программу. По-этому решил сделать это в таймере, задать интервал и менять их. Но программа на 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  
Старый 28.01.2015, 23:01
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Как вариант
Код:
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 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:12.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025