2011-12-20 18 views
6

मुझे पता है कि उन्हें कैसे सेट करें (SetConsoleTextAttribute) लेकिन इस जानकारी को पुनर्प्राप्त करने के लिए GetConsoleTextAttribute नहीं है। एक अप्रभावित कंसोल पर यह int 7.वर्तमान कंसोल पृष्ठभूमि और टेक्स्ट रंग कैसे प्राप्त करें?

समस्या यह है कि पाठ रंग सेट करने वाले प्रोग्राम से बाहर निकलने पर यह विंडो विंडो के समय के लिए समान रहता है, और मैं यह नहीं मान सकता कि उपयोगकर्ता ने सेट नहीं किया है अपने कस्टम पसंद के लिए रंग।

उत्तर

4

wincon.h का एक त्वरित ग्रेप से पता चलता CONSOLE_SCREEN_BUFFER_INFO एक wAttributes सदस्य जो documented as "WriteFile और WriteConsole कार्यों द्वारा एक स्क्रीन बफर करने के लिए लिखा है, या ReadFile और ReadConsole कार्यों द्वारा एक स्क्रीन बफर को प्रतिध्वनित पात्रों की विशेषताओं है है। " यह the description of SetConsoleTextAttribute से मेल खाता है: "कंसोल स्क्रीन बफर में लिखे गए अक्षरों के गुणों को WriteFile या WriteConsole फ़ंक्शन द्वारा सेट किया गया है, या रीडफाइल या रीडकंसोल फ़ंक्शन द्वारा प्रतिबिंबित किया गया है।" संरचना GetConsoleScreenBufferInfo द्वारा वापस कर दी गई है।

2

यहां कोड स्निपेट है।

HANDLE      m_hConsole; 
WORD      m_currentConsoleAttr; 
CONSOLE_SCREEN_BUFFER_INFO csbi; 

//retrieve and save the current attributes 
m_hConsole=GetStdHandle(STD_OUTPUT_HANDLE); 
if(GetConsoleScreenBufferInfo(m_hConsole, &csbi)) 
    m_currentConsoleAttr = csbi.wAttributes; 

//change the attribute to what you like 
SetConsoleTextAttribute (
      m_hConsole, 
      FOREGROUND_RED | 
      FOREGROUND_GREEN); 

//set the ttribute to the original one 
SetConsoleTextAttribute (
      m_hConsole, 
      m_currentConsoleAttr); 

उम्मीद है कि यह मदद की है। रंग के उत्पादन में नंबर (पृष्ठभूमि * 16 + मुख्य रंग) के लिए चर -

GetColor(CurrentColor); 

CurrentColor:

#include <Windows.h>  
bool GetColor(short &ret){ 
     CONSOLE_SCREEN_BUFFER_INFO info; 
     if (!GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &info)) 
      return false; 
     ret = info.wAttributes; 
     return true; 
} 

इसे प्रयोग:

6

Talent25 के लिए धन्यवाद मैं इस समारोह बना दिया। वापसी मूल्य बताता है कि क्या कार्रवाई सफल हुई थी।

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