Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];

Вниз

XP Иконки в менюшках   Найти похожие ветки 

 
Kinder   (2003-12-13 00:12) [0]

Кто подскажет. Как сделать так, чтобы XP иконки (в самой XP) в менюшках отображались нормально, а не уродливо.


 
SPeller   (2003-12-13 16:38) [1]

Рисовать самому с помощью DrawIconEx, которая нормально отрисовывает тени иконок.


 
Kinder   (2003-12-14 13:44) [2]

Вот код

procedure TForm1.Button1Click(Sender: TObject);
begin
DrawIconEx(N1231.Bitmap.Canvas.Handle, 0, 0, LoadIcon(0, IDI_APPLICATION),
16, 16, 0, 0, DI_NORMAL);
DrawIconEx(Canvas.Handle, 0, 0, LoadIcon(0, IDI_APPLICATION),
16, 16, 0, 0, DI_NORMAL);
end;


На форме всё отрисовывает, а в меню не хочет. Почему?


 
zxc   (2003-12-14 18:35) [3]

так а разве DrawIconEx в 98-м знает как рисовать 32-х битные иконки?


 
Kinder   (2003-12-14 18:52) [4]

Причем тут 98? Я в XP и рисую.


 
zxc   (2003-12-14 21:15) [5]

вообще лучше бы ты перекрыл метод DrawItem, а там рисуй как хошь.


 
SPeller   (2003-12-15 03:57) [6]

Менюхи можно OwnerDraw сделать. И в методе отрисовки преспокойно рисовать.


 
Kinder   (2003-12-15 20:15) [7]

Так дело в том что cв-во OwnerDraw включено.


 
Kinder   (2003-12-15 21:24) [8]

Пара вопросов есть
1
Почему не работает этот код?
procedure TForm1.Button1Click(Sender: TObject);
var
bitmap:TBitmap;
begin
bitmap:=TBitmap.Create;
DrawIconEx(bitmap.Canvas.Handle, 0, 0, LoadIcon(0, IDI_APPLICATION),
16, 16, 0, 0, DI_NORMAL);
Image1.Picture.Bitmap:=bitmap;
bitmap.Free;
end;


Второй

Есть ф-ция
function GetLnkIcon (const path:string):HBITMAP;
var
wcLinkName: array[0..MAX_PATH] of WideChar;
IconIndex: Integer;
hInstance:THandle;
obj: IUnknown;
isl: IShellLink;
ipf: IPersistFile;
PathBuffer, IconBuffer: array [0..MAX_PATH] of Char;
Win32FindData: TWin32FindData;
SmallIcon, HiIcon:HIcon;
ResultIcon:HBITMAP;
begin
ResultIcon:=0;
obj := CreateComObject(CLSID_ShellLink);
isl := obj as IShellLink;
ipf := obj as IPersistFile;
StringToWideChar(path, wcLinkName, SizeOf(wcLinkName));
ipf.Load(wcLinkName, STGM_READ);
isl.Resolve(0, SLR_ANY_MATCH);
isl.GetPath(PathBuffer, MAX_PATH, Win32FindData, SLGP_UNCPRIORITY);
isl.GetIconLocation(IconBuffer, MAX_PATH, IconIndex);
// Result:=ExtractIcon(hInstance,PathBuffer,IconIndex);
ExtractIconEx(PathBuffer, IconIndex, HiIcon, SmallIcon, 1);
if (SmallIcon<=0) and (HiIcon<=0) then
DrawIconEx(ResultIcon, 0, 0, LoadIcon(0, IDI_APPLICATION),
16, 16, 0, 0, DI_NORMAL)
else
if SmallIcon<=0 then
DrawIconEx(ResultIcon, 0, 0, HiIcon, 16, 16, 0, 0, DI_NORMAL)
else
DrawIconEx(ResultIcon, 0, 0, SmallIcon, 16, 16, 0, 0, DI_NORMAL);
Result:=ResultIcon;
beep;
end;


Она получает иконку ярлыка
теперь
procedure Tthe_main_form_1983.DrawItem(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; Selected: Boolean);
var
LeftPos, LeftIcon: Integer;
TopPos, TopIcon: Integer;
Text: string;
bmp:TBitmap;
begin
bmp:=TBitmap.Create;
Text := (Sender as TMenuItem).Caption;
if Selected then begin
ACanvas.Brush.Color := clMenuHighlight;
ACanvas.Font.Color := clHighlightText;
// Draw right in the middle of the menu
end
else
begin
ACanvas.Brush.Color := clMenu;
ACanvas.Font.Color := clMenuText;
// Draw right in the middle of the menu
end;
ACanvas.FillRect(ARect);
LeftPos:=ARect.Left+16+6;
TopPos:=ARect.Top+1;
ACanvas.TextOut(LeftPos, TopPos, Text);
bmp.Handle:=GetLnkIcon("C:\windows\favico.ico");
ACanvas.Draw(LeftIcon, TopIcon, bmp);
bmp.Free;
end;


Однако икнка не прорисовывается. Почему? Т.е. первая ф-ция почему-то возвращает 0.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
6-53670
pepper
2003-12-08 15:25
2004.02.17
Сетевой диск


1-53612
дурак
2004-02-09 14:41
2004.02.17
q3text


8-53646
kvp
2003-10-20 12:52
2004.02.17
Повернуть элипс на произвольный угол


3-53422
ERDEN
2004-01-26 07:34
2004.02.17
Вопрос по ExcelApplication


4-53813
BKGG
2003-12-12 13:57
2004.02.17
скажите пожалуйста! сколько процессов можно создать в Window-е.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский