2011-09-26 8 views

उत्तर

40

विंडो रेक्ट में गैर-क्लाइंट क्षेत्र, यानी विंडो सीमाएं, कैप्शन बार आदि शामिल हैं। क्लाइंट रेक्ट नहीं करता है।

GetWindowRect स्क्रीन निर्देशांक में एक आयत देता है जबकि GetClientRect क्लाइंट निर्देशांक में एक आयता देता है।

InvalidateRect क्लाइंट निर्देशांक में एक आय प्राप्त करता है। यदि आप अपने पूरे ग्राहक क्षेत्र को अमान्य करना चाहते हैं, तो NULL से InvalidateRect पास करें। आप GetClientRect द्वारा लौटाए गए रेक्ट में पास हो सकते हैं, लेकिन NULL पास करने के लिए यह बहुत आसान और स्पष्ट है।

6

MSDN से:
GetWindowRect
निर्दिष्ट विंडो के सीमांकन आयत के आयाम पुन: प्राप्त करता। आयाम स्क्रीन निर्देशांक में दिए जाते हैं जो स्क्रीन के ऊपरी-बाएं कोने से संबंधित होते हैं।

GetClientRect
एक खिड़की के ग्राहक क्षेत्र के निर्देशांक पुन: प्राप्त करता। ग्राहक निर्देशांक क्लाइंट क्षेत्र के ऊपरी-बाएं और निचले-दाएं कोनों को निर्दिष्ट करते हैं। चूंकि क्लाइंट निर्देशांक विंडो के क्लाइंट क्षेत्र के ऊपरी-बाएं कोने से संबंधित होते हैं, ऊपरी-बाएं कोने के निर्देशांक (0,0) होते हैं।

अधिक: ग्राहक रेक्ट शीर्षक पट्टी, बॉर्डर, स्क्रॉल बार, स्थिति पट्टी ...

+0

GetClientRect() से वापस आने वाले सापेक्ष निर्देशांक के बारे में बिंदु के लिए धन्यवाद। – rpattabi

+1

स्क्रॉल बार के बारे में महत्वपूर्ण नोट – BlackBada

11

GetClientRect खिड़की के ग्राहक क्षेत्र के निर्देशांक हो जाता है शामिल नहीं है। विशेष रूप से इस क्षेत्र अंदर खिड़की क्रोम और शामिल नहीं हैडर आदि the MSDN page पर टिप्पणियों में से एक यह योग अप बहुत अच्छी तरह से है:

मैं कहूँगा कि क्षेत्र के इस समारोह वापसी आकार है कि मैं प्रस्तुत कर सकते हैं।

GetWindowsRect पूरे खिड़की के निर्देशांक हो जाता है। यह हैडर, शामिल स्थिति पट्टी आदि हालांकि विस्टा के अंतर्गत the MSDN page

ऐप्स पर एक टिप्पणी है कि winver साथ जुड़े हुए नहीं हैं = 6 यहाँ मूल्यों की एक भ्रामक सेट प्राप्त होगा, कि के लिए खाते में नहीं है के अनुसार "ग्लास" पिक्सेल के अतिरिक्त पैडिंग विस्टा एयरो खिड़की पर लागू होता है।

तो जब तक कि विंडोज 7 के लिए यह तय नहीं किया गया है, तो परिणाम प्राप्त करें और सुनिश्चित करें कि आपके पास WINVER का सही मान है।

9

एक बहुत ही सरल स्पष्टीकरण यह है कि GetWindowRect() आपको आयत देता है जिसमें खिड़की की सीमाएं शामिल हैं। GetClientRect() आपको आयत देता है जो सीमाओं को बाहर करता है - वह क्षेत्र जो विंडो विशिष्ट ड्राइंग को आवंटित किया जाता है।

कृपया ध्यान दें कि GetWindowRect() स्क्रीन में एक आयत रिटर्न निर्देशांक - निर्देशांक है कि स्क्रीन/मॉनिटर के सापेक्ष हैं। GetClientRect() एक आयत देता है जो खुद के सापेक्ष है।

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