2011-12-14 10 views
7

विंडोज एपीआई एप्लिकेशन में विंडो बनाते समय WNDCLASSEX और RegisterClassEx() के माध्यम से विंडो क्लास को पंजीकृत करने का क्या उद्देश्य है?विंडो कक्षाओं को पंजीकृत करने का उद्देश्य क्या है?

+3

सी ++ शर्तों में इसके बारे में सोचने में सहायता करें। विंडो वर्ग == सी ++ वर्ग, CreateWindow == नया ऑपरेटर। –

उत्तर

5

खिड़की की जुदाई CreateWindow() सामान और RegisterClass() सामान जल्दी पर किया गया था समान रूप से-व्यवहार के निर्माण को सक्षम करने में जिम्मेदार बताते हैं विंडोज। संवाद नियंत्रण (बटन, सूची बॉक्स, आदि) एक प्रमुख उदाहरण हैं - वे सभी एक वर्ग साझा करते हैं। इसका मतलब है - वे एक विंडो प्रक्रिया साझा करते हैं, इसका मतलब है - वे चित्रकला तर्क, इनपुट प्रतिक्रियाएं, कस्टम संदेश, सूचनाएं इत्यादि साझा करते हैं

ऐप स्तर पर, सबसे सामान्य मामला जब आपके पास एक ही कक्षा की कई खिड़कियां होती हैं एक बहु-दस्तावेज़ इंटरफ़ेस के भीतर दस्तावेज़। कभी-कभी लोग ऐप-विशिष्ट नियंत्रण पेश करते हैं। तो भेद इसके उद्देश्य को पूरा करता है।

5

मुख्य उद्देश्य सिस्टम को WndProc को कॉल करने के लिए संदेश कतार में कुछ कहने के लिए सही है।

कुछ झंडे हैं, लेकिन मुख्य बिंदु ऊपर है।

खिड़की वर्गों यूआई पर 'widgets' के प्रकार के अनुरूप:

  • बटन
  • चेकबॉक्स
  • स्क्रॉलबार
  • बता गया
  • लिस्टबॉक्स

WndProc एकमात्र है चौराहे के व्यवहार का चालक टी।

इसलिए

मानचित्रण: विजेट (नियंत्रण प्रकार) ->wndclass ->WndProc

+0

अन्य चीजों के अलावा, यह कुछ विंडो विशेषताओं को निर्दिष्ट करने के लिए भी उपयोग किया जाता है जैसे अतिरिक्त विंडो मेमोरी की संख्या ['GetWindowLongPtr()'] (http://msdn.microsoft.com/en-us/library/windows/desktop/ ms633585.aspx)। खिड़की के उपयोग के अतिरिक्त विंडो विंडो बाइट्स की संख्या तय करने के बाद तय की जाती है। –

+0

क्या विंडो वर्ग को अलग से पंजीकृत करने का कोई ऐतिहासिक कारण है? सैद्धांतिक रूप से, WndProc() CreateWindow() के हिस्से के रूप में पारित किया जा सकता है। विंडोज सिस्टम पर पंजीकरण का उद्देश्य क्या है? –

+0

कुछ तंत्र है जो आपको वैश्विक स्तर पर विंडोज़ कक्षाओं को पंजीकृत करने की अनुमति देगा, और उस समय से किसी भी एप्लिकेशन में उनका उपयोग करें। वास्तव में, हर अंतर्निहित विंडोज नियंत्रण उस तरह से पंजीकृत है। मुझे विशिष्टता याद नहीं है, लेकिन आप 'वैश्विक wndclass' देख सकते हैं –

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