मैं एक ऐसे ऐप पर काम कर रहा हूं जो स्क्रीन पर विंडोज़ को ग्रिड शैली में रखता है। विंडोज 10 पर इसे चलाने पर, खिड़कियों के बीच एक बड़ा अंतर है। आगे की जांच से पता चलता है कि GetWindowRect
एक अदृश्य सीमा सहित अप्रत्याशित मूल्यों को वापस कर रहा है, लेकिन मैं इसे वास्तविक सीमाओं के साथ वास्तविक मूल्यों को वापस नहीं कर सकता।GetWindowRect "अदृश्य" सीमाओं सहित एक आकार देता है
1) This thread सुझाव देता है कि यह डिज़ाइन द्वारा है और आप Winver = 6 से लिंक करके इसे "ठीक" कर सकते हैं। मेरे वातावरण इस की अनुमति नहीं है, लेकिन मैं
2 को प्रभावित) उसी धागा भी DWMWA_EXTENDED_FRAME_BOUNDS
साथ DwmGetWindowAttribute
का उपयोग कर DWM है, जो काम करता है से वास्तविक निर्देशांक पाने के लिए पता चलता है कोई साथ 6 पीई MajorOperatingSystemVersion
और MajorSubsystemVersion
बदलते की कोशिश की है, लेकिन इसका मतलब है हर जगह बदल रहा है जो खिड़की निर्देशांक प्राप्त करता है। यह मूल्य को सेट करने की अनुमति नहीं देता है, जिससे हमें विंडो आकार सेट करने में सक्षम होने के लिए प्रक्रिया को उलट दिया जाता है।
3) This question बताता है कि इस प्रक्रिया में डीपीआई जागरूकता की कमी है। मेनिफेस्ट में डीपीआई जागरूकता ध्वज को सेट न करें, या SetProcessDpiAwareness
पर कॉल करने से कोई परिणाम न हो।
4) एक सनकी पर, मैंने विंडोज विस्टा, 7, 8, 8.1 और 10 संगतता झंडे जोड़ने की कोशिश की है, और विंडोज़ थीम बिना किसी परिवर्तन के प्रकट होते हैं।
यह विंडो 0x0, 1280x1024 पर ले जाया गया है, माना जाता है कि पूरी स्क्रीन भरने के लिए, और निर्देशांक को वापस पूछते समय, हमें वही मान मिलते हैं। विंडोज़ के पुराने संस्करणों पर सीमा को ध्यान में रखते हुए विंडो वास्तव में 14 पिक्सेल संकुचित है।
मैं विंडोज़ को असली खिड़की निर्देशांक के साथ काम करने के लिए कैसे मना सकता हूं?
एक विस्तृत विंडो या छोटी सी खिड़की के लिए, निर्देशांक आप उम्मीद कर रहे हैं और निर्देशांक आप हो रही है क्या हैं? –
@ बार्माक मुझे यह पसंद है जब मैं इसे 0x0 पर सेट करता हूं, तो विंडो 7x0 की बजाय शीर्ष बाईं ओर होती है, जो वास्तव में दिखाई दे रही है। स्क्रीनशॉट देखें। – Deanna
क्या यह वीबी 6 या वीबी.नेट है? – IInspectable