2011-08-23 23 views
14

मैं विजुअल स्टूडियो 2008 में एमएफसी संवाद आधारित अनुप्रयोग विकसित कर रहा हूं। मैं टाइमर का उपयोग करना चाहता हूं जो एप्लिकेशन की शुरुआत से शुरू होता है और चल रहा है और मेरे कार्य को करने वाले फ़ंक्शन को कॉल करता है? मैं यह कैसे कर सकता हूँ?एमएफसी संवाद आधारित आवेदन में टाइमर का उपयोग कैसे करें?

धन्यवाद

+0

http://msdn.microsoft.com/en-us/library/49313fdf(v=vs.80).aspx – YeenFei

+0

मैं इस त्रुटि हो रही है: त्रुटि C3867: 'CHDVRLauncherDlg :: TimerFunction': समारोह कॉल तर्क गुम सूची; सदस्य को पॉइंटर बनाने के लिए '& CHDVRLauncherDlg :: टाइमर फ़ंक्शन' का उपयोग करें। अगर मैं कॉलबैक फ़ंक्शन को स्थैतिक घोषित करता हूं तो मैं इस कॉलबैक से अपना अन्य फ़ंक्शन कॉल करने में सक्षम नहीं हूं। मैं एमएफसी के लिए नया हूँ। धन्यवाद –

+0

अन्य तरीकों पर आपको विचार करना चाहिए: थोड़ी देर में हर बार वर्तमान समय प्राप्त करना, और पर्याप्त समय बीतने की जांच करना, या एक नया धागा (या प्रक्रिया) शुरू करना जो 'नींद (लंबी मिलीसेक)' कहलाएगा, और फिर कॉल करें जो भी काम आप चाहते हैं। –

उत्तर

18

बस SetTimer विधि का उपयोग करें, और दो तर्क पारित: टाइमर आईडी (किसी भी संख्या), और मिलीसेकेंड में समय समाप्ति। फिर OnTimer कार्यान्वयन लिखें, और BEGIN_MESSAGE_MAP...END_MESSAGE_MAP के अंदर एक प्रविष्टि लिखें।

CWnd::SetTimer 3 पैरामीटर लेता है, लेकिन केवल 2 आवश्यक हैं। तीसरे तर्क को न्यूल के रूप में पास करें।

CWnd::OnTimer

1

आप टाइमर का उपयोग करने का मूल विचार प्राप्त करना चाहते हैं, तो कृपया इस लिंक पर एक नजर है और टाइमर के साथ काम करने पर कदम प्रक्रिया द्वारा कदम के माध्यम से जाना। इसके बाद, जब भी आप चाहें तो अपने आवेदन में आसानी से टाइमर का उपयोग करने में सक्षम होना चाहिए।

लिंक: http://www.functionx.com/visualc/controls/timer.htm

आशा इस मदद करता है।

चीयर्स।

void CMyView::OnTimer (UINT_PTR nIdEvent) 
{ 
if (nIdEvent == 1) 
    // handle timer event 
} 

वैकल्पिक रूप से आप एक समारोह से निपटने के लिए एक सूचक पारित कर सकते हैं:

1
_AFXWIN_INLINE UINT_PTR CWnd::SetTimer(UINT_PTR nIDEvent, UINT nElapse, 
    void (CALLBACK* lpfnTimer)(HWND, UINT, UINT_PTR, DWORD)) 

आप की तरह

UINT_PTR myTimer = SetTimer (1, 1000, null); // one event every 1000 ms = 1 s 

कुछ करने के लिए और अपनी खिड़की के ईवेंट हैंडलर में ON_TIMER घटना के लिए प्रतिक्रिया करने के लिए चाहते हो सकता है टाइमर घटनाओं। टाइमर को हैंडल रखने से आपको KillTimer() का उपयोग करके इसे बंद करने की अनुमति मिलती है।

संबंधित मुद्दे