Page 1 of 1

Troubles with WinLoadFileIcon

Posted: Sat Apr 03, 2010 18:56
by Eugene Gorbunoff
From: Keith Merrington
Date: 2010/04/03


I just read aboyut the New PM controls, File Open Dialog. It looks good.

I have a question which I posted to the news groups but noone answered, and looking at the picture of the File Open Dialog it would seem that my problem has been solved in that implementation.

My questions were :

1: When using WinLoadFileIcon it would appear that the function does not always return the icon associated with a file at least not the same icon as displayed when opening a folder in which those files are in.

For example if the following files exist in a directory using WinLoadFileIcon

Code: Select all

firefox.exe  - the correct icon is returned
test.txt       - the correct icon is returned (standard icon for a file )
computer.bmp - the standard icon for a file is  returned
computer.jpg  - the standard icon for a file is  returned
a.zip - the standard icon for a file is  returned


However if the same directory is opened then in both Icon or Details view, the icon for a Bitmap and the icon for a JPEG, as well as the ZIP icon are displayed.

How can I obtain those icons?


2: How can I obtain in C the association of a data file object to its default program object?

Re: Troubles with WinLoadFileIcon

Posted: Sun Apr 04, 2010 09:35
by Eugene Gorbunoff
Glassman:

ENG:

* Please use eLoadFileIcon from eicons library (+ icon for abstract classes)
-> lib, h -- http://ecomstation.ru/projects/develope ... ft-toolkit
-> dll - eCo Software runtime


* Use eFreeFileIcon instead of WinFreeFileIcon


RUS:

Хе, я тоже хочу знать ответ на этот вопрос. Все чего я добился в eQueryFileIcon - это то что хотя бы цепляется иконка для абстрактных объектов. Т.е. когда программа ассоциируется с явным указанием иконки, то эта иконка кладется в INI. WinLoadFileIcon не делает даже этого. В принципе два возможных пути: 1. и WinLoadFileIcon и WPS в итоге пользуются одной и той же функцией, но с разным набором параметров (связанных с SOM, как я понимаю). Т.е. если разобраться, возможно можно ее вызвать из PM также как из WPS. 2. Хотя бы научиться находить ассоциированную программу из программного объекта. Как то ведь это делается в WPSTools (или не помню как зовется, набор утилит и dll для проверок ini файлов). Упросите автора поделиться сорцами. Ну, в принципе, есть еще и 3-й путь - какой то WPS класс, который предоставит интерфейс для получения иконки из PM. Но это надо спрашивать тех из наших, кто имел дело с WPS.

ИТОГО, Надо взять eLoadFileIcon из eicons. Она лучше WinLoadFileIcon, но тоже делает не все. И вместо WinFreeFileIcon - eFreeFileIcon. + она даст ему иконки дисков для путей вида "X:".