विंडोज परिवार के ऑपरेटिंग सिस्टम के यूजर इंटरफेस के कामकाज के सिद्धांत एक खिड़की की अवधारणा पर आधारित हैं। डेस्कटॉप, टास्कबार, सूचियाँ, संवाद, बटन, मेनू सभी विंडो हैं। इसलिए, वास्तव में, किसी भी इंटरफ़ेस तत्व को प्रदर्शित करने के लिए, आपको एक विंडोज़ विंडो बनाने की आवश्यकता है।
ज़रूरी
- - संकलक;
- - विंडोज प्लेटफॉर्म एसडीके।
निर्देश
चरण 1
यदि आवश्यक हो, तो बनाई जाने वाली विंडो के वर्ग को पंजीकृत करें। API फ़ंक्शन RegisterClass, RegisterClassEx पर कॉल करें या उपयोग किए गए ढांचे की उपयुक्त कार्यक्षमता का उपयोग करें।
RegisterClass और RegisterClassEx फ़ंक्शन पॉइंटर्स को क्रमशः WNDCLASS और WNDCLASSEX प्रकार की संरचनाओं को उनके एकमात्र पैरामीटर के रूप में स्वीकार करते हैं। विंडो बनाते समय वर्ग के नाम के स्थान पर ATOM प्रकार के रिटर्न वैल्यू का उपयोग किया जा सकता है। यदि फ़ंक्शन कॉल विफल हो जाता है, तो वापसी मान 0 है।
WNDCLASS या WNDCLASSEX प्रकार की संरचना को त्वरित करें। सभी आवश्यक फ़ील्ड भरें। विशेष रूप से, सही मानों को इसमें रखा जाना चाहिए:
- cbSize - बाइट्स में संरचना का आकार;
- शैली - विंडो वर्ग के लिए शैलियों का एक सेट;
- lpfnWndProc - एक विंडो प्रक्रिया के लिए सूचक;
- hInstance उस मॉड्यूल का हैंडल है जिसमें विंडो क्लास पंजीकृत है;
- lpszClassName वर्ग का प्रतीकात्मक नाम है।
शेष क्षेत्रों को NULL मानों के साथ लिखा जा सकता है। विंडो क्लास को रजिस्टर करने के लिए फंक्शन कॉल करें। लौटे परिणाम की जाँच करें।
चरण 2
यदि आवश्यक हो तो मौजूदा विंडो वर्ग का चयन करें। आपको सांकेतिक वर्ग नाम (जिसे पंजीकृत करते समय lpszClassName पॉइंटर से गुज़रा हो) या संबंधित ATOM मान पता होना चाहिए। वर्ग अनुप्रयोग स्तर पर स्थानीय हो सकता है, अनुप्रयोग स्तर पर वैश्विक (CS_GLOBALCLASS ध्वज के साथ पंजीकृत), या सिस्टम वर्ग। अंतिम प्रकार में नाम के साथ विंडोज़ की कक्षाएं शामिल हैं: बटन, कॉम्बोबॉक्स, एडिट, लिस्टबॉक्स, एमडीआई क्लाइंट, स्क्रॉलबार, स्टेटिक। संबंधित लाइब्रेरी लोड होने पर RichEdit20W या SysListView32 जैसी कक्षाएं पंजीकृत की जाती हैं।
चरण 3
एक विंडोज विंडो बनाएं। आपके द्वारा उपयोग किए जा रहे ढांचे या लाइब्रेरी की क्लास ऑब्जेक्ट्स के लिए API फ़ंक्शंस CreateWindow, CreateWindowEx, या उपयुक्त रैपर विधियों का उपयोग करें। CreateWindowEx फ़ंक्शन के लिए प्रोटोटाइप इस तरह दिखता है:
एचडब्ल्यूएनडी क्रिएटविंडोएक्स (DWORD dwExStyle, एलपीसीटीएसटी एलपीक्लासनाम, एलपीसीटीएसटी एलपीविंडोनाम, DWORD dwStyle, इंट एक्स, इंट वाई, इंट एनविड्थ, इंट हाइट, एचडब्ल्यूएनडी एचडब्ल्यूएनडी माता-पिता, एचएमईएनयू एचमेनू, HINSTANCE hInstance, एलपीवीओआईडी एलपीपरम);
CreateWindow फ़ंक्शन केवल dwExStyle पैरामीटर की अनुपस्थिति में CreateWindowEx से भिन्न होता है।
CreateWindow या CreateWindowEx पर कॉल करें। lpClassName पैरामीटर में उस विंडो वर्ग का नाम या ATOM मान पास करें जिसे आपने पहले या दूसरे चरण में परिभाषित किया था। पैरामीटर x, y, nWidth, nHeight बनाए जा रहे विंडो के निर्देशांक और आकार हो सकते हैं। पैरेंट विंडो हैंडल (यदि कोई हो) hWndParent के माध्यम से पारित किया जाता है।
CreateWindow या CreateWindowEx द्वारा लौटाए गए मान को सहेजें और पार्स करें। सफल होने पर, वे नई विंडो पर एक हैंडल लौटाएंगे; विफलता पर, NULL।