Иконки с альфа каналом
От: Norton  
Дата: 26.08.02 20:47
Оценка:
Привет всем.
Есть вопросик к тем, кто работал с ресурсами.
А конкретно вопрос касается изьятия иконок из *.dll.
Есть класс, всё замечательно работает под 98/2000/NT4/ но вот проблема с WindowsXP.
Никак не пойму как выташить например иконку папки, без альфа канала, или наоборот с альфа каналом? Вот с размерами всё понятно, а вот как быть с альфа каналом?
Если юзать это же под XP, то вокруг иконок, вместо прозрачности появляется черные пикселя, что понятно.....
Может кто сталкивался с подобной проблемой?


Код примерно след:
public class IconExtracterEx
{
[DllImportAttribute("Shell32.dll")]
private static unsafe extern int ExtractIconEx(
string lpszExeFileName, // file name
int nIconIndex, // icon index
int** phiconLarge, // large icon array
int** phiconSmall, // small icon array
int nIcons // number of icons to extract
);
public unsafe static Icon GetSmallIcon( string p_sFile, int p_iIndex )
{
int iRes = 0;
int iL = 5;
int* pL = &( iL );
int** ppL = &( pL );
int iS = 5;
int* pS = &( iS );
int** ppS = &( pS );
Icon ic = null;
iRes = IconExtracterEx.ExtractIconEx( p_sFile, p_iIndex, ppL, ppS, 1 );
ic = Icon.FromHandle( new IntPtr( *ppS ) );
return ic;
}
}

Ну и вызов из другого класса типа :
Icon objIcon = IconExtracterEx.GetSmallIcon( "shell32.dll", 3 );

Устал, голова болит
Peter Norton
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.