मेरे पास एक खिड़की है जो इसके चारों ओर एक ठोस सीमा है। SetWindowLong और GetWindowLong का उपयोग करके मैं सीमा (सभी गैर-क्लाइंट क्षेत्र) को कैसे हटा सकता हूं?विंडो सीमा को हटा रहा है?
उत्तर
सी में/C++
LONG lStyle = GetWindowLong(hwnd, GWL_STYLE);
lStyle &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZE | WS_MAXIMIZE | WS_SYSMENU);
SetWindowLong(hwnd, GWL_STYLE, lStyle);
WS_CAPTION के रूप में परिभाषित किया गया है (WS_BORDER | WS_DLGFRAME)। आप इन दो शैलियों को हटाने के साथ दूर हो सकते हैं, क्योंकि कैप्शन गायब होने पर न्यूनतम अधिकतम और sytem मेनू गायब हो जाएगा, लेकिन उन्हें हटाने के लिए सबसे अच्छा है।
विस्तारित सीमा शैलियों को हटाने के लिए भी सबसे अच्छा है।
LONG lExStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
lExStyle &= ~(WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE | WS_EX_STATICEDGE);
SetWindowLong(hwnd, GWL_EXSTYLE, lExStyle);
और आखिरकार, बदली गई शैलियों के साथ अपनी खिड़की को फिर से निकालने के लिए, आप SetWindowPos का उपयोग कर सकते हैं।
SetWindowPos(hwnd, NULL, 0,0,0,0, SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER);
निम्नलिखित डेल्फी कोड यह करता है:
SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) and not WS_BORDER and not WS_SIZEBOX and not WS_DLGFRAME);
SetWindowPos(Handle, HWND_TOP, Left, Top, Width, Height, SWP_FRAMECHANGED);
बेशक
, इन API कॉल सभी भाषाओं में ही दिखते हैं।
कोड की यह पंक्ति नीचे किसी भी विंडो के बॉर्डर निकाल देता है, और केवल अपने ग्राहक रहता है:
SetWindowLong(hWnd /*The handle of the window to remove its borders*/, GWL_STYLE, WS_POPUP);
इसके बजाय आप SetWindowLong
समारोह के तीसरे पैरामीटर में WS_POPUPWINDOW
उपयोग कर सकते हैं। यह दिए गए विंडो की सीमाओं को भी हटा देता है और यह भी काम करता है, लेकिन अंतर यह है कि यह को विंडो के शेष शेष क्लाइंट में काले आयत को भी रेखांकित करता है। उस उल्लिखित आयताकार की मोटाई 1 पिक्सेल है। WS_POPUP
उस आयताकार को आकर्षित नहीं करता है, वास्तव में यह कुछ भी नहीं खींचता है, केवल खिड़की की सीमाओं को हटा दें।
GetWindowLong(hWnd /*The handle of the window that you want to remove its borders and later return them back to it*/, GWL_STYLE);
लेकिन निश्चित रूप से है कि इस समारोह retuns:
आप के बारे में वापस खिड़की की सीमाओं पर लौटने के लिए, इससे पहले कि आप मैं ऊपर पोस्ट कोड की है कि लाइन का उपयोग कर रहे हैं, पहले नीचे दिए गए कोड की है कि लाइन फोन खिड़की की शैलियों, इसलिए नया वैरिएबल बनाएं जो इन शैलियों को बनाए रखे, यानी इस चर को उस फ़ंक्शन के रिटर्न वैल्यू पर सेट करें।
तो फिर तुम अपनी सीमाओं को दूर करने के रूप में मैं ऊपर showen SetWindowLong
उपयोग करते हैं, और जब आप चाहते हैं बाद में अपनी सीमाओं वापस बहाल करने के लिए, बस फिर से याद करते हैं SetWindowLong
, पहले दो मापदंडों, एक ही (hWnd और GWL_STYLE) कर रहे हैं लेकिन तीसरे पैरामीटर है GetWindowLong
से लौटाई गई विंडो की शैलियों। यदि आप GetWindowLong
पर कॉल नहीं करना चाहते हैं, लेकिन फिर भी विंडो की सीमाएं वापस कर दें, तो आप पहले 12 पैरामीटर के साथ SetWindowLong
का उपयोग कर सकते हैं, और तीसरे पैरामीटर में, आप निम्न में से किसी एक का उपयोग कर सकते हैं: WS_OVERLAPPED
या/और WS_OVERLAPPEDWINDOW
या/और WS_SIZEFRAME
।
नोट: आप मेरा उत्तर की कोशिश, लेकिन यह आप के लिए काम नहीं करता है, तो यह हो सकता है, क्योंकि यह है कि दोनों कार्यों SetWindowLong
और GetWindowLong
कर लिया गया है और आप के लिए काम नहीं करता है, और है कि क्योंकि वे के साथ संगत हैं32-बिट विंडोज़ संस्करण। शायद आप 64-बिट Windows के संस्करण का उपयोग कर रहे हैं, तो SetWindowLongPtr
और GetWindowLongPtr
का उपयोग करने के बजाय, जो दोनों32-बिट और 64-बिट Windows के संस्करण के साथ संगत कर रहे हैं। एमएसडीएन सूचित करता है कि नोट अनुभाग में इन कार्यों के बारे में। बस उस साइट में उनके लिए खोजें।
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633591(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/windows/desktop/ms633584(v=vs.85).aspx
आशा है कि यह सब आपके प्रश्न के उत्तर: यहाँ अपने लिए लिंक्स हैं।
'WS_POPUP' का उपयोग करने के लिए याद दिलाने के लिए धन्यवाद, यह पहले से ही सीमाहीन विंडो बनाने के साथ काम करने वाला एक तरीका है। – nekavally
- 1. लाइन विभाजक को हटा रहा है लेकिन UITableView
- 2. स्ट्रिंग से संख्याओं को हटा रहा है?
- 3. गिट रिपोजिटरी गिटोलाइट को हटा रहा है?
- 4. mysql_real_escape_string पूरे स्ट्रिंग को हटा रहा है
- 5. phpMyAdmin एक सूचकांक को हटा रहा है
- 6. अस्थायी ASP.Net फ़ाइलों को हटा रहा है
- 7. jQuery Accordion आइटम को हटा रहा है
- 8. ActiveAdmin संसाधनों को हटा रहा है
- 9. jquery.ValidationEngine - त्रुटि पॉपअप को हटा रहा है
- 10. स्ट्रिंग से सबस्ट्रिंग को हटा रहा है?
- 11. गिट: एक फ़ाइल को संस्करणित करने से हटा रहा है, लेकिन इसे हटा नहीं रहा है
- 12. पूरी तरह से jtable ग्रिड (सेल सीमा) को हटा रहा है
- 13. क्रोम: विंडो सीमा/सजावट को हटाएं
- 14. मैं सही ब्राउज़र विंडो सीमा
- 15. पायथन: डुप्लिकेट सीएसवी प्रविष्टियों को हटा रहा है
- 16. त्रुटि: "विंडो विंडो से विधि शो() को हटा दिया गया है"
- 17. एक्सेल: सूत्रों को हटा रहा है लेकिन उत्तरों को
- 18. फ़ाइल। फ़ाइल को हटा नहीं रहा
- 19. जेपीए वनटोनी बच्चे को हटा नहीं रहा
- 20. glDeleteTextures बनावट को हटा नहीं रहा
- 21. FragmentStatePagerAdapter खंडों को हटा नहीं रहा है यदि पैरेंट खंड हटा दिया गया है
- 22. फ़ाइल से नियंत्रण कक्ष हटा रहा है
- 23. मैं चेकबॉक्स सीमा को कैसे हटा सकता हूं?
- 24. अनावश्यक log4j सेटअप आउटपुट को हटा रहा है
- 25. सूची में डुप्लिकेट ऑब्जेक्ट्स को हटा रहा है (सी #)
- 26. स्ट्रिंग से शब्द की पहली उपस्थिति को हटा रहा है?
- 27. संस्करण नियंत्रण से इंटेलिजे परियोजना को हटा रहा है
- 28. JSON Serialization - खाली कुंजियों को हटा रहा है
- 29. एचटीएमएल 5 ऑफ़लाइन ऐप कैश को हटा रहा है
- 30. ग्रहण में पिछली जगहों को हटा रहा है - टिप्पणियों से
यह पुराना है –
@NathanGoings क्या आप कृपया बता सकते हैं कि यह आपकी राय में पुराना क्यों है और इसके बजाय अद्यतित क्यों है? – RamboNo5
@ रैम्बोनो 5: SetWindowLong() को SetWindowLongPtr फ़ंक्शन() – dns