विंडोज में यूजर इंटरफेस की अवधारणा एक विंडो की अवधारणा पर आधारित है। डायलॉग्स, बटन्स, कंट्रोल पैनल्स, लिस्ट्स सभी विंडो हैं। इसलिए, अपने या किसी और के एप्लिकेशन के इंटरफ़ेस के किसी भी तत्व के साथ कोई भी क्रिया करने के लिए, आपको एक विंडो हैंडल प्राप्त करने की आवश्यकता है।
ज़रूरी
- - प्लेटफार्म एसडीके पैकेज;
- - संकलक।
निर्देश
चरण 1
इसे बनाकर खिड़की पर हैंडल प्राप्त करें। CreateWindow या CreateWindowEx API फ़ंक्शन को कॉल करें, या उपयोग किए गए फ्रेमवर्क या लाइब्रेरी के वर्गों के उपयुक्त रैपर विधियों (आवश्यक वस्तुओं पर) को कॉल करें जो विंडोज़ या नियंत्रण के साथ काम करने की कार्यक्षमता को समाहित करता है। CreateWindow और CreateWindowEx फ़ंक्शन सीधे वापस लौटाते हैं सफल निर्माण पर विंडो हैंडल। अगर असफल रूप से बुलाया जाता है, तो वे न्यूल वापस कर देते हैं। GetLastError API फ़ंक्शन का उपयोग करके त्रुटि कारण कोड का अनुरोध किया जा सकता है। CreateWindow और CreateWindowEx फ़ंक्शंस के पैरामीटर के प्रोटोटाइप और विस्तृत विवरण https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx लिंक से प्राप्त किए जा सकते हैं। और https:// msdn.microsoft.com / en-us / लाइब्रेरी / विंडोज़ / डेस्कटॉप / ms632680% 28v = vs.85% 29.aspx विभिन्न चौखटे के वर्गों का उपयोग करते समय, ऑपरेटिंग सिस्टम विंडो ऑब्जेक्ट का निर्माण या तो स्पष्ट रूप से हो सकता है (एक विधि को कॉल करके) या परोक्ष रूप से (RAII रणनीति का कार्यान्वयन)। इसलिए, तैयार किए गए प्रारंभिक ऑब्जेक्ट पर विंडो हैंडल प्राप्त करना बेहतर होता है। आप संबंधित ढांचे के दस्तावेज़ीकरण में उन वर्गों के तरीकों के बारे में जान सकते हैं जो ऑब्जेक्ट द्वारा एनकैप्सुलेटेड विंडो हैंडल लौटाते हैं। उदाहरण के लिए, MFC में, एक समान विधि CWnd वर्ग का GetSafeHwnd है।
चरण 2
किसी विंडो को खोजकर उसके लिए एक हैंडल प्राप्त करें। आपके द्वारा उपयोग किए जा रहे ढांचे के लिए FindWindow और FindWindowEx API फ़ंक्शंस या उपयुक्त क्लास ऑब्जेक्ट रैपर का उपयोग करें। FindWindow शीर्ष-स्तरीय विंडो में एक हैंडल देता है, या विफलता पर NULL देता है। खोज वर्ग के नाम और विंडो शीर्षक द्वारा की जाती है। फ़ंक्शन के पैरामीटर और पहलुओं का विवरण लिंक https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx पर पाया जा सकता है। FindWindowEx फ़ंक्शन FindWindow के समान है, केवल अंतर यह है कि यह चाइल्ड विंडो की खोज करता है। FindWindowEx के लिए प्रलेखन https://msdn.microsoft.com/en-us/library/windows/desktop/ms633500%28v=vs.85%29.aspx पर उपलब्ध है।
चरण 3
उनके सेटों को सूचीबद्ध करते समय खिड़की का हैंडल ढूंढें। एपीआई फ़ंक्शंस EnumWindows, EnumChildWindows, EnumThreadWindows, या आपके द्वारा उपयोग किए जा रहे ढांचे के क्लास ऑब्जेक्ट्स के तरीकों का उपयोग करें। EnumWindows और EnumChildWindows फ़ंक्शन क्रमशः शीर्ष-स्तरीय विंडो और चाइल्ड विंडो की गणना करते हैं। EnumThreadWindows फ़ंक्शन निर्दिष्ट थ्रेड की सभी गैर-बाल विंडो की गणना करता है। इन कार्यों में से प्रत्येक को कॉलबैक प्रक्रिया के लिए एक पॉइंटर पास किया जाना चाहिए, जो ऑपरेशन के दौरान पाए गए विंडो के हैंडल को पैरामीटर के रूप में पारित किया जाएगा। गणना कार्यों को जोड़कर, कॉलबैक प्रक्रिया में विंडो गुणों को प्राप्त करना और उनका विश्लेषण करना, आप का हैंडल पा सकते हैं आवश्यक खिड़की। वर्णित कार्यों के लिए प्रलेखन लिंक पर दिया गया है: - EnumWindows: https://msdn.microsoft.com/en-us/library/windows/desktop/ms633497%28v=vs.85%29.aspx; - EnumChildWindows: https:// msdn.microsoft.com/en-us/library/windows/desktop/ms633494%28v=vs.85%29.aspx; - EnumThreadWindows: https://msdn.microsoft.com/en-us/library /windows/desktop /ms633495%28v=vs.85%29.aspx.
चरण 4
ज्ञात निर्देशांक पर एक विंडो के लिए एक हैंडल प्राप्त करें। WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx फ़ंक्शन उन विंडो को हैंडल लौटाता है जो निर्दिष्ट बिंदु से संबंधित हैं। WindowFromPoint फ़ंक्शन उपयोग करने में सबसे आसान है, लेकिन छिपी या अक्षम विंडो के लिए हैंडल वापस नहीं करता है। आप https://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx पर इसके उपयोग पर दस्तावेज़ पा सकते हैं। ChildWindowFromPoint और ChildWindowFromPointEx फ़ंक्शन बच्चे के लिए हैंडल ढूंढते हैं किसी दिए गए बिंदु से संबंधित किसी दिए गए मूल विंडो की खिड़कियां। इस स्थिति में, ChildWindowFromPointEx के व्यवहार को एक अतिरिक्त पैरामीटर का उपयोग करके लचीले ढंग से नियंत्रित किया जा सकता है। इन कार्यों के लिए प्रलेखन लिंक द्वारा प्रदान किया गया है: - ChildWindowFromPoint: https://msdn.microsoft.com/en-us/library/windows/desktop/ms632676%28v=vs.85%29.aspx; - ChildWindowFromPointEx: https:// msdn.microsoft.com/en-us/library/windows/desktop/ms632677%28v=vs.85%29.aspx.