कुछ चीजें हैं जो आप कर सकते हैं।
(1) आप पद संवाद CDialog :: OnInitDialog विधि के अंदर से एक संदेश है और फिर उस पोस्ट किए गए संदेश का संदेश हैंडलर में लंबे समारोह संभाल सकता था। इस तरह संवाद पहले प्रदर्शित किया जाएगा और उसके बाद लंबे कार्य को चलाया जाएगा।
(2) दूसरा विकल्प यह सुनिश्चित करना है कि संदेश लूप को कुछ प्रसंस्करण समय मिल जाए। तो अपने लंबे समारोह पाश किसी प्रकार का है अगर सिर्फ बनाने के लिए ProcessMessages को कभी कॉल सुनिश्चित करें, संदेश कतार में रखा जाता है खाली:
void ProcessMessages()
{
MSG msg;
CWinApp* pApp = AfxGetApp();
while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
pApp->PumpMessage();
}
}
संपादित करें: यह निश्चित रूप से संभव है धागे का उपयोग करने के इस तरह के है एक परिस्थिति, लेकिन ऐसा करना हमेशा जोखिम और जटिलता के बिना नहीं होता है।
एक जीयूआई के साथ धागे का उपयोग करना कई संदेश कतार से निपटने के लिए जो तब एपीआई का उपयोग कर तरह PostThreadMessage का मतलब है और कहा कि मुद्दों का एक नया सेट से सावधान रहना करने के लिए परिचय होने का मतलब है।
ऐसे ही एक मुद्दे के एक उदाहरण के लिए इस लिंक का संदर्भ लें:
http://msdn.microsoft.com/en-us/library/ms644946(VS.85).aspx
जहां है कहते हैं:
PostThreadMessage द्वारा भेजे गए संदेश एक खिड़की के साथ जुड़े नहीं हैं। सामान्य नियम के रूप में, संदेश जो विंडो से जुड़े नहीं हैं डिस्पैच मैसेज फ़ंक्शन द्वारा प्रेषित नहीं हो सकते हैं। इसलिए, यदि प्राप्तकर्ता थ्रेड एक मोडल लूप में है (जैसा कि संदेशबॉक्स या डायलॉगबॉक्स द्वारा उपयोग किया जाता है), संदेश खो जाएंगे। थ्रेड संदेशों को एक मोडल लूप में अवरुद्ध करने के लिए, थ्रेड-विशिष्ट हुक का उपयोग करें।
मैं Zeus IDE में प्रक्रिया संदेश दृष्टिकोण का उपयोग करें और यह सुनिश्चित करें कि जीयूआई उपयोगकर्ता के लिए उत्तरदायी रहता है बनाने में बहुत अच्छी तरह से काम करता है। इसे लागू करने में बहुत आसान होने का लाभ भी है।
आईएमओ प्रक्रिया मैसेज() फ़ंक्शन एक एमएफसी ऐप पर प्रतिक्रिया जोड़ने का तरीका है। – Hapkido
मैं भी प्रोसेस मैसेज विकल्प का उपयोग करूंगा;) – jussij
मैं दृढ़ता से असहमत हूं। 1) एक यूआई विधि बहुत सारे "अन्य" काम नहीं करनी चाहिए, चिंताओं को अलग किया जाना चाहिए। 2) इन परिस्थितियों में से अधिकांश में एक साधारण कार्यकर्ता थ्रेड का उपयोग किया जा सकता है, एकाधिक पंपों की आवश्यकता नहीं है। आप ओपी को धागे से दूर डराने की कोशिश क्यों कर रहे हैं? –