2012-11-02 12 views
5

Podczas rejestracji okna klasy WNDCLASSEX wcex używam wcex.hIcon = LoadIcon(hInstance, (LPCTSTR) IDI_APPLICATION) do ustawienia ikony okna.Ikona okna ładowania dynamicznie

Czy istnieje sposób dynamicznego ładowania ikony z pliku w celu zarejestrowania okna? Coś jak LoadIcon (hInstance, "iconfile.ico") lub może być utworzony zasób ikon za pomocą pliku.

Odpowiedz

9

Można użyć LoadImage:

wcex.hIcon = (HICON) LoadImage(// returns a HANDLE so we have to cast to HICON 
    NULL,    // hInstance must be NULL when loading from a file 
    "iconfile.ico", // the icon file name 
    IMAGE_ICON,  // specifies that the file is an icon 
    0,    // width of the image (we'll specify default later on) 
    0,    // height of the image 
    LR_LOADFROMFILE| // we want to load a file (as opposed to a resource) 
    LR_DEFAULTSIZE| // default metrics based on the type (IMAGE_ICON, 32x32) 
    LR_SHARED   // let the system release the handle when it's no longer used 
); 

Upewnij się, albo ustawić wcex.hIconSm (mała ikona) na null lub załadować niewielką ikonę. Po ustawieniu na NULL, automatycznie użyje obrazu określonego przez hIcon. Po załadowaniu małej ikony z LoadImage, należy ustawić szerokość i wysokość na 16 i usunąć flagę LR_DEFAULTSIZE. Jeśli jest to ikona z przezroczystymi częściami, dodaj flagę LR_LOADTRANSPARENT

+1

Z [documentation] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms648045.aspx): Nie używaj LR_SHARED dla obrazów o nietypowych rozmiarach, które mogą się zmienić po załadowaniu lub które są ładowane z pliku. – Paul