2009-04-07 14 views
9

Win32'ye tamamen yeniyim. Son 48 saat üzerinde çalışıyorum. gerekli INITCOMMONCONTROLSEX() ve InitCommonControls() kullanımı kolay mı?

Ben "grid" inşa etmeye çalışıyorum ve ben bir Liste-View kontrolü ve msdn.microsoft.com üzerinde bir Başlık kontrolü örnekleri aldık. (Bu fonksiyon kullanılmıyor okuma yanı sıra)

ilk InitCommonControls() işlevi çağırır.

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

İkincisi, InitCommonControlsEx() işlevini çağırır.

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

Bu işlevlerin comctl32.lib kütüphanesine ihtiyacı var gibi görünüyor, ancak karşıdan yükleme bir karmaşadır.

Ayrıca ben bu işlevleri kaldırırsanız, her şey iyi çalışıyor tutar fark etmiş. O zaman gerekli mi?

Teşekkürler!

cevap

6

Evet bu gereklidir. Kayıtlı bu özel kontroller için pencere sınıflarını almaları gerekmektedir. Oranlar, kodunuzdaki başka bir bileşen onları yüklemektedir. Emin değilim, ama eğer manifestinizde comctl v6 (XP ve görsel stilleri) desteği varsa, otomatik olarak commctl32.dll alırsınız. INITCOMMONCONTROLSEX ne yaptığına ilişkin

fazla bilgi here olduğunu. Eğer comctl32.lib indirerek ne anlama geldiğini

emin değil, o kadar dağıtabilir gerekmez NT 4 ve Windows 95 beri her Windows platformunda mevcuttur.

+0

Aman tanrım! Teşekkür ederim! \ Program Files \ Microsoft SDK'leri \ Windows \ v6.0A \ Lib: Ben c oldu farkında değil – kiewic

İlgili konular