मैं देशी सी ++ के लिए नया हूं। अभी, मैंने इसे तब बनाया जब मैं बाएं माउस बटन दबाता हूं, इसमें एक लूप है जो अमान्येट्रैक करता है और एक आयताकार खींचता है, और जब भी यह पुनरावृत्त होता है तो बॉक्स आकार द्वारा एक्स को बढ़ाता है। लेकिन, सी ++ सी # की तुलना में ड्राइंग पर इतना तेज और कुशल है, यह सब तुरंत इसे खींचता है। मैं यह चाहता हूं कि आयत को अमान्य कर दें, आयत दिखाएं, 50ms प्रतीक्षा करें, फिर लूप जारी रखें। मैंने नींद की कोशिश की (50) लेकिन परिणाम दिखाने से पहले पेंटिंग करने तक यह अभी भी इंतजार कर रहा है। मैंने PeekMessage भी कोशिश की लेकिन यह कुछ भी नहीं बदला। किसी भी मदद की सराहना की जाएगी। धन्यवादसी ++ के लिए समकक्ष DoEvents?
उत्तर
DoEvents मूल रूप से तब्दील हो के रूप में:
void DoEvents()
{
MSG msg;
BOOL result;
while (::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
result = ::GetMessage(&msg, NULL, 0, 0);
if (result == 0) // WM_QUIT
{
::PostQuitMessage(msg.wParam);
break;
}
else if (result == -1)
{
// Handle errors/exit application, etc.
}
else
{
::TranslateMessage(&msg);
:: DispatchMessage(&msg);
}
}
}
मैं थोड़ा Win32 एपीआई में जंग लगी हूँ, लेकिन ऐसा करने का अतुल्यकालिक तरीका होगा:
- रेक्ट अमान्य
- सेट एक 50ms
- के बाद एक संदेश भेजने के लिए टाइमर (नीचे देखें) WM_PAINT ईवेंट होने के लिए ईवेंट लूप पर वापस जाएं
- टाइमर संदेश प्राप्त करने पर, रेक्ट को ले जाएं, फिर
इस तरह से ईवेंट संचालित होने के साथ अच्छी तरह से एकीकृत करता है। मुझे एहसास है कि यह वही नहीं है जो आप पूछते हैं, लेकिन मैंने सोचा कि मैं इसे किसी भी संभावित समाधान के रूप में उल्लेख करूँगा :)
संपादित करें: एक त्वरित Google विंडोज एपीआई कॉल [सेटटाइमर] (http://msdn.microsoft.com/en-us/library/ms644906(VS.85,loband).aspx)) का उपयोग कर सकता है जिसका आप उपयोग कर सकते हैं यह सुविधा प्रदान करने के लिए। संदेश एक WM_TIMER होगा।
+1, यह विशेष समस्या के लिए एक बेहतर समाधान है। –
- 1. सी # वीबी 6 DoEvents
- 2. एप्लिकेशन है। DoEvents() केवल WinForms के लिए?
- 3. reinterpret_cast के लिए सी समकक्ष क्या है?
- 4. गिट - आरएम समकक्ष "एड।" के लिए समकक्ष?
- 5. मैवेन आर्केटाइप के लिए समकक्ष समकक्ष?
- 6. MySQL, खाली मूल्यों के लिए समकक्ष समकक्ष?
- 7. आईफोन के लिए जैक्सन समकक्ष?
- 8. 'setw' फ़ंक्शन के सी-समकक्ष
- 9. सी ++ गेटलाइन के पाइथन समकक्ष()
- 10. ग्रूवी रूबी के लिए समकक्ष समकक्ष और कोई भी
- 11. ऑब्जेक्टिव सी जावा समकक्ष
- 12. सी # समकक्ष "नहीं MyEnum.SomeValue"
- 13. nmake के साथ उपयोग के लिए समकक्ष समकक्ष?
- 14. सी # के लिए "विस्तारित" के बराबर कोई समकक्ष?
- 15. DoEvents घटनाएं नहीं करता ... क्यों?
- 16. जावा समकक्ष (सी ++)
- 17. एसक्यूएल के समकक्ष Django समकक्ष
- 18. मैं WPF में "DoEvents" कैसे करूं?
- 19. मोनो टच। डायलॉग उद्देश्य सी के लिए समकक्ष?
- 20. सी # जावा निष्पादक सेवा के लिए समकक्ष। NewSingleThreadExecutor(), या: संसाधन
- 21. सी # 3.0 ट्यूपल समकक्ष (गरीब पुरुषों के लिए)
- 22. एसटीएल वेक्टर के एक अच्छा सी समकक्ष?
- 23. MATLAB के मैथनेट समकक्ष सी = ए \ बी
- 24. हास्केल - लूप के लिए कुशल समकक्ष?
- 25. MsgWaitForMultipleObjects के सी # समकक्ष क्या है?
- 26. फैक्टरीगर्ल/मशीनिस्ट समकक्ष सी # /। नेट
- 27. जावा डेटास्ट्रक्चर/सी ++ एसटीएल समकक्ष?
- 28. सी # कक्षा से जावास्क्रिप्ट समकक्ष
- 29. एक्शनस्क्रिप्ट में समकक्ष बीआईआईडी समकक्ष?
- 30. सी # जावा हैश मैप समकक्ष
+1, लगभग सही है, सिवाय इसके कि GetMessage का वापसी मूल्य चेक नहीं किया गया है और WM_QUIT सही तरीके से संभाला नहीं गया है। –
यदि GetMessage वापसी 0 है, तो WM_QUIT संदेश की आवश्यकता है दोबारा पोस्ट किया जाना चाहिए (http://blogs.msdn.com/oldnewthing/archive/2005/02/22/378018.aspx)। GetMessage भी वापस आ सकता है, जिसे संभाला जाना चाहिए। –
@ फिलिपनावरा मैं इसके लिए बस इसके लिए इरादा रखता था मूल बातें दिखाएं, लेकिन आप बिल्कुल सही हैं - सभी 3 संभावित मामलों को दिखाने के लिए संपादित। –