यह प्राप्त करने का उचित तरीका एक संदेश प्रो हैंडलर (उदाहरण के लिए Form.WndProc
ओवरराइड करके) WM_NCHITTEST
संदेश को संभालना होगा। (आप PInvoke.net पर उस संदेश की सी # परिभाषा पा सकते हैं) विशेष रूप से, जब आप संदेश प्राप्त करते हैं, तो गणना करें कि हिट टेस्ट उस क्षेत्र के बिंदु के लिए है जिसे आपने आकार बदलने के लिए नामित किया है और यदि ऐसा है, तो HTBOTTOMRIGHT लौटाएं। डिफ़ॉल्ट विंडो proc आपके लिए बाकी करेगी, क्योंकि यह मान लीजिए कि उपयोगकर्ता ने विंडो सीमा के निचले दाएं कोने पर क्लिक किया है, भले ही आपकी विंडो की कोई सीमा न हो।
इस aproach के लिए Win32 इंटरऑप का एक किशोर बिट की आवश्यकता है, लेकिन यह आपके आकार को किसी भी अन्य विंडो आकार बदलने की तरह दिखता है।
@benPearce के रूप में करना आसान तरीका होगा और कोने में एक पैनल डालें और चौड़ाई/ऊंचाई का उपयोग करके फॉर्म आकार समायोजित करें। यह काम करने जा रहा है, लेकिन आकार बदलना आसान नहीं होगा, खासकर विस्टा और विन 7 बेसिक पर, जहां मानक कदम और आकार बदलने पर पूर्ण रेड्रो अक्षम है, जबकि हर कदम पर फिर से प्रयास करने जा रहा है।
अद्यतन: दोनों दृष्टिकोणों में आपको यह समझना होगा कि ग्रिपर को कैसे पेंट करना है। उदाहरण के लिए, आप मानक ग्रिपर का बिटमैप डाल सकते हैं। हालांकि, यह देखते हुए कि आपके फॉर्म में कोई शीर्षक और सीमा नहीं है, इसलिए आप मानक विंडोज विज़ुअल के साथ जरूरी नहीं हैं, तो आप कुछ स्नैज़ियर चुन सकते हैं।
अपडेट 2: यदि आपके पास एक नियंत्रण है जो पूरी विंडो को कवर करता है, तो यह फॉर्म माउस संदेश खाएगा। आपको किसी भी तरह उस स्थान को क्लिप करना होगा जिसे आप उस नियंत्रण से बाहर करने के लिए उपयोग करना चाहते हैं। इस से निपटने के लिए आपके पास कई विकल्प हैं:
- आकार बदलने के लिए कुछ जगह बनाने के लिए नियंत्रण का आकार बदलें।
- आकार बदलने वाली पकड़ को बाहर करने के लिए नियंत्रण क्षेत्र (क्षेत्र संपत्ति को थ्रूग) में ट्विक करें।
- आकार बदलने वाली पकड़ को एक पैनल को कवर करें, अपने माउसइंटर संदेश को सुनें और फॉर्म को कैप्चर करें, सत्य को कैप्चर करें, जिससे सभी माउस संदेश इस पर जा सकेंगे। नोट: आकार बदलने के बाद माउस उस क्षेत्र को छोड़ने के बाद आपको कैप्चरिंग जारी करनी होगी।
मैं विकल्प 1 के लिए सबसे सरल के रूप में जाने की अनुशंसा करता हूं। विकल्प 3 सबसे जटिल है और विंडोज़ में माउस इनपुट कैसे काम करता है, इस बारे में अंतरंग विवरण की आवश्यकता होगी, इसलिए मैं इसकी अनुशंसा नहीं करता।विकल्प 2 विकल्प 1 का एक अच्छा विकल्प है, लेकिन आपको यह देखने का प्रयास करना होगा कि ListView नियंत्रण कैसे अपने क्षेत्र में tweaked पर प्रतिक्रिया करेगा।
स्रोत
2009-10-08 06:24:30
कुछ कोड पोस्ट करें। आप नियंत्रण की चौड़ाई और ऊंचाई को बदलकर आकार बदल सकते हैं। –
एंड्रयू कीथ की टिप्पणी के कारण स्क्रीनशॉट में संशोधित प्रश्न और जोड़ा गया लिंक: उपयोगकर्ता को फ़ॉर्म का आकार बदलने में सक्षम होना चाहिए। –
पैनल के साथ मेरा समाधान देखें: http://stackoverflow.com/a/8848440/640781 – edid