2011-11-03 15 views
5

हम अपने मौजूदा Win32 MFC आधारित अनुप्रयोगों में से एक के साथ एक समस्या हो रही है। यह उन डिस्प्ले पर सही ढंग से प्रस्तुत नहीं करता है जो उच्च डीपीआई सेटिंग्स का उपयोग करते हैं। 120 डीपीआई के साथ अधिक विशेष रूप से विंडोज एक्सपी में, ऐप में कई जगहें हैं जहां टेक्स्ट स्केल हो जाता है लेकिन उनके कंटेनर नहीं (टेक्स्ट इसके बटन की सीमाओं को बहती है)। यह विंडोज 7 (और Vista) में भी होता है जब> 9 6 डीपीआई का चयन किया जाता है और "एक्सपी स्टाइल डीपीआई स्केलिंग का उपयोग करें" चुना जाता है। यदि एक्सपी स्टाइल स्केलिंग का चयन नहीं किया गया है तो मैं समझता हूं कि विन 7 इसके बजाय डीपीआई वर्चुअलाइजेशन का उपयोग करता है। डीपीआई वर्चुअलाइजेशन का उपयोग करते समय सब कुछ ठीक दिखता है (ठीक चीजें धुंधली होती हैं लेकिन कम से कम वे सही हैं)। डिफ़ॉल्ट रूप से Win7 120 डीपीआई एक्सपी शैली स्केलिंग का उपयोग करता है और अगली सेटिंग (144 डीपीआई) नहीं करता है। तो हमारा ऐप 144 डीपीआई पर सही दिखता है लेकिन 120 डीपीआई पर गलत है।विंडोज आवेदन - डीपीआई मुद्दे

यदि मैं ऐप को "डीपीआई जागरूक" के रूप में घोषित करने के लिए अनुप्रयोगों को संपादित करता हूं तो यह डीपीआई वर्चुअलाइजेशन (लेकिन XP शैली डीपीआई स्केलिंग नहीं) के रूप में बदल जाता है और यह मुझे कहीं नहीं मिलता है। चीजें अभी भी बहुत खराब लगती हैं (120 डीपीआई के लिए कोई बदलाव नहीं, 144 डीपीआई अब टूट गया)।

मुझे इस समस्या को ठीक करने की आवश्यकता है और मैंने सामान्य रूप से डीपीआई/स्केलिंग मुद्दों पर पढ़ने की कोशिश की है और यह एक सीखने का अनुभव रहा है। अब तक मुझे एक उपयुक्त समाधान नहीं मिला है। फिलहाल मुझे वर्तमान में एक पूर्ण और सही फिक्स करने का कोई इरादा नहीं है (ऐप डीपीआई के अनुसार सभी तत्वों को सही ढंग से स्केल करता है)। इसमें बहुत सारी पुनर्लेखन शामिल होगी। मुझे लगता है कि वास्तव में दो संभावित समाधान हैं। एक भी सभी प्रकार के डीपीआई स्केलिंग को बंद कर देता है। इसका मतलब यह होगा कि यदि कोई उपयोगकर्ता Win7 सिस्टम 120 डीपीआई पर सेट किया गया था तो उनके सिस्टम पर सब कुछ अच्छा/बड़ा लगेगा, लेकिन हमारा ऐप सही दिखाई देगा लेकिन अन्य ऐप्स में बाकी सब कुछ की तुलना में छोटा होगा। दूसरा समाधान कुछ लोगों के लिए होगा कि हमारे ऐप को डीपीआई वर्चुअलाइजेशन का उपयोग करने के लिए मजबूर किया जाए, लेकिन XP शैली डीपीआई स्केलिंग का कभी भी उपयोग न करें। मैं चाहता हूं कि यह एक एप्लीकेशन साइड चेंज हो और अंतिम उपयोगकर्ताओं पर विंडोज कॉन्फ़िगरेशन परिवर्तन करने के लिए भरोसा न करें।

अब तक मैं या तो समाधान पूरा करने के लिए एक तरह से नहीं मिली है।

कर सकते हैं किसी को इस विषय कृपया जवाब देते हैं और सही तरीके से मुझे बात पर अधिक जानकार?

धन्यवाद

+1

अपने लेआउट कोड में या अपने ड्राइंग कोड में समस्या है? उदाहरण के लिए, क्या आप समस्याएं बना रहे हैं कि आप वाई पिक्सेल द्वारा बटन और अन्य मानक नियंत्रण x बना रहे हैं, या यह समस्या है कि आपके पास कोड है जो आपके नियंत्रण को खींचता है (उदा।, जीडीआई कॉल का उपयोग करके) जिसमें निश्चित आकार हैं? आप अपना लेआउट कैसे कर रहे हैं? फार्म? संवाद टेम्पलेट्स? कस्टम कोड? –

+0

यहां कोई जादू नहीं है, आपको बस अपनी खिड़कियां बड़ी करनी होंगी। या आपके फ़ॉन्ट छोटे, अपने जहर उठाओ। –

उत्तर

2

आप 120 डीपीआई सेटिंग्स पर डीपीआई वर्चुअलाइजेशन के लिए मजबूर नहीं कर सकते। मैंने खुद को एक उत्पाद के लिए जांच की है क्योंकि उच्च डीपीआई में अस्पष्ट दिखने के लिए एक अच्छा व्यापारिक लग रहा था।

हमने उच्च डीपीआई सेटिंग्स में फ़ॉन्ट स्केलिंग के साथ उचित रूप से स्केल करने के लिए यूआई पोजिशनिंग और स्केलिंग का पूर्ण पुनर्लेखन समाप्त कर दिया। ग्राहक अब पूरी तरह से डीपीआई जागरूक है और किसी भी डीपीआई सेटिंग में ठीक से स्केल करता है।

ऐसा करने के लिए काम एक सुंदर जटिल ग्राहक के लिए हमारे मामले में एक व्यक्ति ~ 3 महीने ले गया।

हमारे पास एक माध्यमिक योजना थी जिसकी हमने कभी कोशिश नहीं की लेकिन यह आपके लिए काम कर सकता है: स्टार्ट-अप ओएस के डीपीआई स्केलिंग कारक को पढ़ें। फिर इस कारक द्वारा आपके पास मौजूद सभी फ़ॉन्ट उदाहरणों को कम करें ताकि जब विंडोज फोंट को फिर से स्केल करे तो वे उस आकार पर वापस आ जाएंगे जहां यूआई उन्हें फिट कर सकता है। बेशक उच्च डीपीआई सेटिंग्स वाले उपयोगकर्ताओं को आपके आवेदन में बड़े फोंट नहीं मिलेगा लेकिन यह कम से कम उपयोग योग्य होगा।

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