2010-05-31 16 views
8

पर "सही" संवाद/यूआई फ़ॉन्ट बनाएं CreateWindow का उपयोग करके फ्लाई पर नियंत्रण (जैसे एक संपादन नियंत्रण) बनाते समय, यह आम तौर पर एक बदसूरत (बोल्डिश सैन्स सेरिफ़) फ़ॉन्ट से शुरू होता है।विंडोज़

आमतौर पर मैं पैरेंट डायलॉग के फ़ॉन्ट को पकड़कर और इसे नियंत्रण में रखकर उस पर घूमता हूं - मैं यह भी नहीं कह सकता कि यह एक अच्छा विचार है या नहीं।

मैं "कानूनी रूप से" सही फ़ॉन्ट कैसे प्राप्त करूं?

उत्तर

8

"सही" जिस तरह से फ़ॉन्ट संदेश बॉक्स की तरह संवाद बक्से में इस्तेमाल करने के लिए, आदि SystemParametersInfo() समारोह के माध्यम से होगा:

// C++ example 
NONCLIENTMETRICS metrics; 
metrics.cbSize = sizeof(NONCLIENTMETRICS); 
::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), 
    &metrics, 0); 
HFONT font = ::CreateFontIndirect(&metrics.lfMessageFont); 
::SendMessage(ctrlHWND, WM_SETFONT, (WPARAM)font, MAKELPARAM(TRUE, 0)); 

फॉन्ट को नष्ट करने के लिए मत भूलना जब नियंत्रण नष्ट कर रहे हैं :

::DeleteObject(font); 

आप को देखने के लिए क्या अन्य सिस्टम-वाइड मापदंडों आप प्राप्त कर सकते हैं NONCLIENTMETRICS और SystemParametersInfo() के लिए MSDN प्रलेखीकरण देख सकते हैं।

+0

धन्यवाद! (मैं इसे एक चैंडलरफ में डाल रहा हूं, हटाए जाने का कोई मौका नहीं! - http://www.codeproject.com/KB/stl/boostsp_handleref.aspx) – peterchen