2009-04-07 22 views
9

Jestem całkowicie nowy, aby wygrać32. Pracowałem nad tym przez ostatnie 48 godzin.Czy konieczne jest użycie InitCommonControlsEx() i InitCommonControls()?

Próbuję zbudować "siatkę" , i mam przykłady Lista-View kontroli i kontroli Header na msdn.microsoft.com.

Pierwsza wywołuje funkcję InitCommonControls() (poza tym, że ta funkcja jest przestarzała).

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, ... 
} 

Drugi wywołuje funkcję 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 ... 
} 

Wydaje się, że te funkcje wymagają biblioteki comctl32.lib, ale pobieranie jej jest bałaganem.

Ponadto zauważyłem, że jeśli usunę te funkcje, wszystko będzie działać poprawnie. Czy są one konieczne?

Dzięki!

Odpowiedz

6

Tak, jest to konieczne. Są one wymagane do uzyskania klas okien dla zarejestrowanych niestandardowych kontrolek. Szanse są, jakiś inny składnik w kodzie ładuje je. Nie jestem pewien, ale myślę, że jeśli masz wsparcie dla comctl v6 (XP i up wizualne style) w twoim manifeście, otrzymasz commctl32.dll automatycznie.

Więcej informacji na temat funkcji InitCommonControlsEx to here.

Nie jesteś pewien, co masz na myśli, pobierając comctl32.lib, jest obecny na każdej platformie Windows od NT 4 i Windows 95, więc nie musisz go redystrybuować.

+0

O mój Boże! Dziękuję Ci! Nie zauważyłem, że było to c: \ Program Files \ Microsoft SDK \ Windows \ v6.0A \ Lib – kiewic

Powiązane problemy