2009-04-07 10 views
9

मैं Win32 के लिए पूरी तरह से नया हूँ। मैं पिछले 48 घंटों पर काम कर रहा हूं।क्या InitCommonControlsEx() और InitCommonControls() का उपयोग करना आवश्यक है?

मैं एक "ग्रिड" का निर्माण करने की कोशिश कर रहा हूँ, और मैं एक सूची दृश्य नियंत्रण और msdn.microsoft.com पर एक हैडर नियंत्रण के उदाहरण मिल गया।

पहला व्यक्ति InitCommonControls() फ़ंक्शन को कॉल करता है (इसके अलावा मैंने यह फ़ंक्शन पढ़ा है अप्रचलित)।

HWND DoCreateHeader(HWND hwndParent, HINSTANCE hInst) 
{ 
    HWND hwndHeader; 
    RECT rcParent; 
    HDLAYOUT hdl; 
    WINDOWPOS wp; 

    // Ensure that the common control DLL is loaded, and then create 
    // the header control. 
    InitCommonControls(); 

    // ... 

    // hwndHeader = CreateWindowEx(0, WC_HEADER, ... 
} 

दूसरा व्यक्ति InitCommonControlsEx() फ़ंक्शन को कॉल करता है।

HWND CreateListView (HWND hwndParent, HINSTANCE hInst) 
{  
    RECT rcl; 
    INITCOMMONCONTROLSEX icex; 

    // Ensure that the common control DLL is loaded. 
    icex.dwSize = sizeof(INITCOMMONCONTROLSEX); 
    icex.dwICC = ICC_LISTVIEW_CLASSES; 
    InitCommonControlsEx(&icex); 

    // ... 

    // HWND hWndListView = CreateWindow(WC_LISTVIEW ... 
} 

लगता है कि इन कार्यों को comctl32.lib लाइब्रेरी की आवश्यकता है, लेकिन डाउनलोड करें यह एक गड़बड़ है।

इसके अलावा मैंने देखा है कि यदि मैं इन कार्यों को हटा देता हूं, तो सब कुछ ठीक से काम करता रहता है। फिर, क्या वे आवश्यक हैं?

धन्यवाद!

उत्तर

6

हां यह आवश्यक है। उन्हें पंजीकृत उन कस्टम नियंत्रणों के लिए विंडो कक्षाएं प्राप्त करने की आवश्यकता है। बाधाएं हैं, आपके कोड में कुछ अन्य घटक उन्हें लोड कर रहा है। मुझे यकीन नहीं है, लेकिन मुझे लगता है कि अगर आपके मैनिफेस्ट में comctl v6 (XP और ऊपर दृश्य शैलियों) के लिए समर्थन है, तो आप स्वचालित रूप से commctl32.dll प्राप्त करते हैं।

InitCommonControlsEx क्या है here पर अधिक जानकारी।

यह सुनिश्चित नहीं है कि comctl32.lib डाउनलोड करके आपका क्या मतलब है, यह एनटी 4 और विंडोज 95 के बाद से प्रत्येक विंडोज प्लेटफॉर्म पर मौजूद है, इसलिए आपको इसे फिर से वितरित करने की आवश्यकता नहीं है।

+0

हे भगवान! धन्यवाद! मैंने देखा नहीं है कि यह सी पर था: \ प्रोग्राम फ़ाइलें \ माइक्रोसॉफ्ट एसडीके \ विंडोज \ v6.0A \ Lib – kiewic

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