PDA

View Full Version : سوال: استفاده از Timer در ActiveX



Moharram
چهارشنبه 29 خرداد 1387, 16:05 عصر
سلام

من در ActiveX یک تایمر دارم که با استفاده از اون یک Event را فراخوانی میکنم. این تایمر با تابع SetTimer ساخته شده...

وقتی نتیجه کار رو در VC تست میکنم، مشکلی نیست ولی در VB و دلفی (که ActiveX در اون استفاده خواهد شد) error میده....

با دیباگ کردن هم فهمیدم که به SetTimer گیر میده...

به نظر شما مشکل چیه؟؟

با تشکر از توجهی که کردید....

mehdi.mousavi
شنبه 22 تیر 1387, 17:50 عصر
سلام

من در ActiveX یک تایمر دارم که با استفاده از اون یک Event را فراخوانی میکنم. این تایمر با تابع SetTimer ساخته شده...

وقتی نتیجه کار رو در VC تست میکنم، مشکلی نیست ولی در VB و دلفی (که ActiveX در اون استفاده خواهد شد) error میده....

با دیباگ کردن هم فهمیدم که به SetTimer گیر میده...

به نظر شما مشکل چیه؟؟

با تشکر از توجهی که کردید....



سلام.
1. پارامتر اول SetTimer رو NULL رد کردین یا Handle به یه Window ای هستش؟
2. ایرادی رو که ذکر میکنید، لطفا بنویسید چیه.

پاورقی: بسته به نوع کاری که انجام میدین، شاید استفاده از Timer Queue ها ارجحیت داشته باشه.

Moharram
یک شنبه 23 تیر 1387, 15:26 عصر
مثله اینکه دو تابع SetTimer وجود داره:
اولی اینه (که من از اون استفاده کردم):


ُCWnd::SetTimer(ID,Elapsed,function)

که معمولا در Application ها از اون استفاده میشه. وقتی function به NULL ست بشه، پیام WM_TIMER تولید میشه و میشه برای پاسخگویی به تایمر برای WM_TIMER کد نوشت.

اما بعدی:



SetTimer(HWND hWnd,ID,Elapsed,function)


که یک تابع API هستش و میشه اینجوری از اون استفاده کرد:


::SetTimer(this->m_hWnd,ID_TIMER,250,NULL);


در این حالت دیگه اون Error پیش نمی یاد ولی تابع OnTimer که برای WM_TIMER نوشتم، هیچ وقت اجرا نمیشه و نمیشه به تایمر پاسخ داد.