static int DrawiconWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam) { static HICON myicon_small, myicon_large; HDC hdc; switch (message) { case MSG_CREATE: myicon_small = LoadIconFromFile(HDC_SCREEN, "myicon.ico", 0); if (myicon_small == 0) fprintf (stderr, "Load icon file failure!"); myicon_large = LoadIconFromFile(HDC_SCREEN, "myicon.ico", 1); if (myicon_large == 0) fprintf (stderr, "Load icon file failure!"); break; case MSG_PAINT: hdc = BeginPaint(hWnd); if (myicon_small != 0) DrawIcon(hdc, 10, 10, 0, 0, myicon_small); if (myicon_large != 0) DrawIcon(hdc, 60, 60, 0, 0, myicon_large); EndPaint(hWnd, hdc); return 0; case MSG_CLOSE: DestroyIcon(myicon_small); DestroyIcon(myicon_large); DestroyMainWindow (hWnd); PostQuitMessage (hWnd); return 0; } return DefaultMainWinProc(hWnd, message, wParam, lParam); }
// create iconlist and Treeview control static BOOL CreateTreeIcons() { HICON hIcon; INT i; HINSTANCE hInst = GetModuleHandle(0); int numIcons = ICON_MAX + numExtraIcons; hTreeSmall = ImageList_Create (16, 16, ILC_COLORDDB | ILC_MASK, numIcons, numIcons); //dprintf("Trying to load %i normal icons",ICON_MAX); for (i = 0; i < ICON_MAX; i++) { hIcon = LoadIconFromFile(treeIconNames[i].lpName); if (!hIcon) hIcon = LoadIcon(hInst, MAKEINTRESOURCE(treeIconNames[i].nResourceID)); if (ImageList_AddIcon (hTreeSmall, hIcon) == -1) { ErrorMsg("Error creating icon on regular folder, %i %i",i,hIcon != NULL); return FALSE; } } //dprintf("Trying to load %i extra custom-folder icons",numExtraIcons); for (i = 0; i < numExtraIcons; i++) { if ((hIcon = LoadIconFromFile(ExtraFolderIcons[i])) == 0) hIcon = LoadIcon (hInst, MAKEINTRESOURCE(IDI_FOLDER)); if (ImageList_AddIcon(hTreeSmall, hIcon) == -1) { ErrorMsg("Error creating icon on extra folder, %i %i",i,hIcon != NULL); return FALSE; } } // Be sure that all the small icons were added. if (ImageList_GetImageCount(hTreeSmall) < numIcons) { ErrorMsg("Error with icon list--too few images. %i %i", ImageList_GetImageCount(hTreeSmall),numIcons); return FALSE; } // Be sure that all the small icons were added. if (ImageList_GetImageCount (hTreeSmall) < ICON_MAX) { ErrorMsg("Error with icon list--too few images. %i < %i", ImageList_GetImageCount(hTreeSmall),ICON_MAX); return FALSE; } // Associate the image lists with the list view control. TreeView_SetImageList(GetTreeView(), hTreeSmall, TVSIL_NORMAL); return TRUE; }
GrIcon CModuleType::getIcon() { if (mIcon) return mIcon; mIcon = LoadIconFromFile(getIconName()); if (!mIcon) { char sysDirIcons [FILE_MAX_PATHLEN]; char iconFilename[FILE_MAX_FILENAME]; if (RegKeyGetValue(REGKEY_SECTION_PATHNAME, REGKEY_KEY_ICONS_PATHNAME, sysDirIcons) == FALSE) strcpy(sysDirIcons, "icons\\"); sprintf(iconFilename, "%s\\%s%s", GetWorld()->getInitialDirectory(), sysDirIcons, getIconName()); mIcon = LoadIconFromFile(iconFilename); assert(mIcon); } assert(mIcon); return mIcon; }
static int GetMessIcon(int drvindex, int nSoftwareType) { int the_index = 0; int nIconPos = 0; HICON hIcon = 0; const game_driver *drv; char buffer[256]; const char *iconname; assert(drvindex >= 0); assert(drvindex < driver_list::total()); if ((nSoftwareType >= 0) && (nSoftwareType < IO_COUNT)) { iconname = device_image_interface::device_brieftypename((iodevice_t)nSoftwareType); the_index = (drvindex * IO_COUNT) + nSoftwareType; nIconPos = mess_icon_index[the_index]; if (nIconPos >= 0) { drv = &driver_list::driver(drvindex); while (drv) { _snprintf(buffer, ARRAY_LENGTH(buffer), "%s/%s", drv->name, iconname); hIcon = LoadIconFromFile(buffer); if (hIcon) break; int cl = driver_list::clone(*drv); if (cl!=-1) drv = &driver_list::driver(cl); else drv = NULL; } if (hIcon) { nIconPos = ImageList_AddIcon(GetSmallImageList(), hIcon); ImageList_AddIcon(GetLargeImageList(), hIcon); if (nIconPos != -1) mess_icon_index[the_index] = nIconPos; } } } return nIconPos; }