PDA

View Full Version : مشکل این برنامه چیه؟



1485159
پنج شنبه 20 خرداد 1389, 17:22 عصر
سلام
چرا این برنامه کار نمیکنه؟

procedure d(HWnd:HWND; uMsg:UINT; idEvent:UINT_PTR ; dwTime: DWORD);
begin
if idEvent = 100012120 then
ShowMessage('d');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SetTimer(form1.Handle, 100012120, 1000, @d)
end;
ممنون.

tdkhakpur
پنج شنبه 20 خرداد 1389, 19:20 عصر
var
TimeHandle : UINT;
procedure d(HWnd:HWND; uMsg:UINT; idEvent:UINT ; dwTime: DWORD); stdcall;
begin
if idEvent = 1001 then
ShowMessage('d');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
TimeHandle = SetTimer(form1.Handle, 1001, 1000, @d)
end;

آخر کار killTimer را بصورت زیر استفاده کنید.


KillTimer(form1.Handle, TimeHandle);

1485159
پنج شنبه 20 خرداد 1389, 19:40 عصر
stdcall به چه معنیه؟

tdkhakpur
پنج شنبه 20 خرداد 1389, 19:58 عصر
stdcall به چه معنیه؟

به نظرم به کاری گیری این کلمه باعث میشه پارامتر ها از سمت راست به چپ داخل پشته قرار بگیرید (شاید برعکس باشه ولی اصولا برای این کار هست)
دلیلش هم این هست که setTimer داخل کتابخانه API پارامترها را بصورت مرتب دریافت میکند و چون شما از یک تابع callback استفاده میکنید باید طرز کامپایل را هم توسط stdcall مشخص کنید تا جابجایی پارامتر صورت نگیرد.