2010-04-29 18 views
7

मेरे पास एक घटक है जो मैंने बनाया है जो एक TWINControl में हार्डवेयर-त्वरित रेंडरर एम्बेड करता है ताकि आप इसे एक फॉर्म पर रख सकें। यह ज्यादातर मामलों में बहुत अच्छी तरह से काम करता है, लेकिन अगर मैं नियंत्रण का आकार बदलने का प्रयास करता हूं, तो संदेश लूप चलाए जाने तक सब कुछ खाली हो जाता है और बाहरी डीएलएल में होस्ट किया गया है, जो रेंडरर के लिए WndProc को कॉल करता है। इसका मतलब यह है कि कोड में नियंत्रण का आकार बदलने के बाद मुझे एप्लिकेशन.प्रोसेस मैसेज को स्पष्ट रूप से कॉल करने की आवश्यकता है, जिसे मैं जानता हूं कि खराब अभ्यास माना जाता है।ProcessMessages को कॉल करने की आवश्यकता से बचें

क्या मैं नियंत्रण में कुछ तर्क डालता हूं ताकि डीएलएल में डब्लूडब्लूपीआरओसी को आवेदक के आकार को बदल सकें, इसलिए मुझे प्रक्रिया प्रस्तुत करने के लिए प्रक्रिया मैसेज को कॉल करने की आवश्यकता नहीं होगी?

+0

+1। –

उत्तर

10

इसके बजाय आप TWinControl.Update पर कॉल कर सकते हैं, जो केवल एक WM_PAINT ईवेंट SendMessage को भेजना चाहिए, इसलिए आप मनमाना संदेशों को प्रबंधित नहीं कर रहे हैं।

+0

यह काम किया। धन्यवाद! –

3

सही समाधान है जब आप आकार बदलते हैं तो अमान्येट्रैक को कॉल करना है। विंडोज़ आपको एक WM_PAINT संदेश पोस्ट करेगा। संदर्भ के लिए आपको शेल्ज़ से पेटज़ोल्ड खींचना चाहिए और चित्रकला पर अपना अध्याय पढ़ना चाहिए। प्रोसेस मैसेज से बचने के लिए पहले स्थान पर

+1

और क्या है, यदि आप सिस्टम सेटिंग्स को आकार बदलने के दौरान विंडो को फिर से खींचना नहीं चाहते हैं तो आपको फिर से आकार का ऑपरेशन पूरा होने तक WM_PAINT नहीं मिलेगा। –

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

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