2009-03-05 17 views
10

मैंने CreateWindowEx() फ़ंक्शन के साथ एक विंडो बनाई है, अब मैं उस विंडो से चौड़ाई और ऊंचाई कैसे प्राप्त करूं? यह करने के लिए बहुत ही बुनियादी बात लगता है, लेकिन मुझे अभी कोई जवाब नहीं मिला; _;CreateWindowEx() विंडो से चौड़ाई और ऊंचाई कैसे प्राप्त करें? सी ++

यह आवश्यक है क्योंकि खिड़की की ऊंचाई स्वचालित रूप से बनाई जाती है कि विंडोज इसे कैसे बनाना चाहता है।

भाषा सी या सी ++

उत्तर

24

उपयोग GetWindowRect। ऊंचाई प्राप्त करने के लिए चौड़ाई और नीचे से नीचे पाने के लिए बाएं से दाईं ओर घटाएं।

RECT rect; 
if(GetWindowRect(hwnd, &rect)) 
{ 
    int width = rect.right - rect.left; 
    int height = rect.bottom - rect.top; 
} 

एक साइड नोट के रूप में, यदि आप पूरी विंडो के बजाय ग्राहक क्षेत्र चाहते हैं। आप GetClientRect का उपयोग कर सकते हैं। विंडो के बारे में अन्य जानकारी के लिए आप GetWindowInfo का उपयोग कर सकते हैं।

+1

धन्यवाद! वह पूरी तरह से काम किया! –

1

मेरा मानना ​​है कि आप के लिए GetWindowInfo

उदाहरण देख रहे हैं:

HWND window = ::CreateWindowEx(...); 
WINDOWINFO info; 
if (::GetWindowInfo(window, &info)) { 
    ... 
} 
1

आप GetWindowRect() या GetWindowInfo() जो एक WINDOWINFO संरचना देता है की कोशिश की है?

+0

GetWindowRect() सभी लोगों के लिए धन्यवाद, साथ जाने के लिए सही बात थी! –

0

यह देखते हुए कोई संकेत नहीं है कि आपको आकार की आवश्यकता क्यों है, और आकार बदल सकता है यदि विंडो शैली आकार बदलने योग्य विशेषताओं को शामिल करने के लिए सेट की गई है [और उपयोगकर्ता खिड़की के किनारे को न्यूनतम/अधिकतम/बहाल या ड्रैग करके विंडो का आकार बदलता है] आपकी सबसे सुरक्षित पसंद WM_SIZE के लिए एक संदेश हैंडलर शामिल करना और विंडो आयामों को निर्धारित करने के लिए wparam और lparam पैरामीटर मानों का उपयोग करना है। इस तरह, आप हमेशा वर्तमान आकार को जानेंगे। WM_SIZE संदेशों को पोस्ट विंडो निर्माण के अनुक्रम में बुलाया जाता है।

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