2009-12-11 3 views
5

के लिए वैध पैरामीटर संयोजनों की एक सूची है, मैं टास्कबार और/या मेरे अनुप्रयोगों की मुख्य विंडो की पृष्ठभूमि और टेक्स्ट रंग पुनर्प्राप्त करने का प्रयास कर रहा हूं। यह पता चला कि विंडोज 7 सही रंग नहीं लौटाता है। अगर मैं गुलाबी थीम पर स्विच करता हूं, तो विंडोज 7 अभी भी विंडो कैप्शन के लिए हल्का नीला लौटाता है हालांकि यह सच नहीं है। इस के साथ हीक्या GetThemeColor/Visual Styles API

GetSysColor(COLOR_ACTIVECAPTION); 

का उपयोग कर HTHEME hTheme = OpenThemeData (hWnd, एल "खिड़की") का उपयोग होता है;

HRESULT result = GetThemeColor(  
       hTheme, 
       WP_CAPTION, 
       CS_ACTIVE, 
       TMT_FILLCOLORHINT, 
       &color); 

इसके अलावा मैं कैप्शन टेक्स्ट के रंग को जानने के लिए पैरामीटर के विभिन्न संयोजनों को आजमा रहा हूं। मैं माइक्रोसॉफ्ट के पृष्ठों

Property Identifiers और Parts and States

जानते हैं, लेकिन मानकों के इन सैकड़ों के सबसे संयोजन अमान्य हैं। क्या कोई सूची और/या विवरण है जो संयोजनों का उपयोग किया जा सकता है?

आईई।

GetThemeColor(  
        hTheme, 
        WP_CAPTION, // BP_PUSHBUTTON, 
        CS_ACTIVE, 
        TMT_CAPTIONTEXT, 
        &color); 

"तत्व नहीं मिला" लौटाता है।

उत्तर

8

XP विषयों के बारे में मेरे ज्ञान के अनुसार, एक .msstyles फ़ाइल केवल भागों परिभाषाओं का एक संग्रह है जिसमें छवियों और गुणों (रंग, आकार, फोंट, आदि) हैं, सभी मनमाने ढंग से परिभाषित हैं। UxTheme एपीआई सिर्फ इस फ़ाइल में जो भी है, लौटाता है, और गुणों के एक निश्चित संयोजन की उपस्थिति विषय लेखक पर निर्भर करती है, मूल रूप से (यही कारण है कि आपको हमेशा "क्लासिक" GetSysColor, GetSystemMetrics या SystemParametersInfo पर वापस आना चाहिए यदि विषय API विफल रहता है जो भी आप खोज रहे हैं उसे वापस करने के लिए।

हालांकि, आप यहां "गुलाबी थीम" का जिक्र करते हैं, इसलिए मुझे लगता है कि आप एरो ग्लास थीम के बारे में बात कर रहे हैं। एरो थीम रंग डीडब्लूएम द्वारा संभाले जाते हैं और क्लासिक से अभी तक अलग हैं या UxTheme API रंग। एरो विंडो रंग को पुनर्प्राप्त करने के लिए, आपको DwmGetColorizationColor का उपयोग करना होगा, जो इसे 0xAARRGGBB प्रारूप में वापस कर देगा (COLORREF के विपरीत जो 0x00BBGGRR है, इसलिए आपको दो प्रारूपों के बीच अनुवाद करना होगा)। पहली बार यह पता लगाने के लिए कि क्या डीडब्लूएम संरचना (उर्फ "एयरो ग्लास") सक्षम है डी, आपको DwmIsCompositionEnabled पर कॉल करना होगा।

+0

बहुत बहुमूल्य जानकारी। धन्यवाद। –

0

इस को समझने के लिए सबसे आसान तरीका है: ठोस शीर्षक पट्टियों के लिए रंग अभी भी हल्के नीले रंग की है।

जब एयरो सक्षम है, तो टाइटलबार टेक्स्ट को पूरी तरह से पारदर्शी पृष्ठभूमि के साथ प्रस्तुत किया जाता है, और इस प्रकार (ज्यादातर) जो भी रंग डीडब्लूएम फ्रेम को टिनटिंग कर रहा है।

0

संपत्ति स्थिरांक (अर्थात क्या थीम कार्यों iPartId पैरामीटर के रूप में स्वीकार करते हैं) बस का एक सेट प्रदान करते हैं क्या विषय परिभाषाओं मई (नहीं होगा) विभिन्न कक्षाओं/भागों/शैली संयोजन के लिए निर्धारित करते हैं।

आईई। आपका कोड किसी अन्य तरीके से निर्धारित रंग पर फ़ॉलबैक करने के लिए तैयार होना चाहिए।

यह देखने में अक्सर उपयोगी होता है कि XP ​​(लुना) या Vista/7 (एरो) परिभाषित करने के लिए मानक थीम क्या हैं। इसके लिए आप कुछ ऐसा कर सकते हैं, उदा। ThemeExplorer: http://sourceforge.net/projects/mctrl/files/theme-explorer/