Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.29;
Скачать: CL | DM;

Вниз

LoadIcon и Windows Vista   Найти похожие ветки 

 
Pavel__   (2006-09-17 01:44) [0]

Здравствуйте. Использую функцию LoadIcon для загрузки стандартных изображений системы, код выглядит так:

Image.Picture.Icon.Handle := LoadIcon(0, IDI_WARNING);

При этом загружаются изображения в стиле XP, что нежелательно. Сталкивался ли кто-нибудь с подобным? Есть ли иные методы загрузки, корректно работающие в системах от 98 до Vista? Заранее благодарен.


 
Anatoly Podgoretsky ©   (2006-09-17 10:43) [1]

Нежелательно другое, системные иконки должны соответсвовать стилю. Но кто тебя заставляет загружать системные иконки, раз ты такой противник системы?


 
Pavel__   (2006-09-17 15:04) [2]


> Нежелательно другое, системные иконки должны соответсвовать
> стилю. Но кто тебя заставляет загружать системные иконки,
>  раз ты такой противник системы?

Вот именно. В Vista они должны соответствовать стилю Vista а не XP.

Приведу пример:
Application.MessageBox показывает в Vista те самые изображения, что не удивительно — насколько я помню эта функция — часть системы, а не VCL.

Тот код, который я приводил в первом посте, показывает все так, как должно быть по замыслу разработчиков системы вплоть до Vista. Т.е в win98 изображения выглядят как в win98, в winXP — как winXP. А вот с Vista — проблемы. Может все дело в недоработанности системы?

Прошу прощения за сумбурность.


 
Eraser ©   (2006-09-17 16:16) [3]

> Application.MessageBox показывает

а что показывает Windows.MessageBox?


 
Pavel__   (2006-09-17 16:49) [4]

Надеюсь, уважаемый Eraser хотел лишь проверить мою память:

function TApplication.MessageBox(const Text, Caption: PChar; Flags: Longint): Integer;
...
try
 Result := Windows.MessageBox(TaskActiveWindow, Text, Caption, Flags);
finally


Windows.pas:

function MessageBox; external user32 name "MessageBoxA";


 
guav ©   (2006-09-17 17:07) [5]

может, LoadImage, там флагов больше ?


 
Eraser ©   (2006-09-17 17:36) [6]

> [4] Pavel__   (17.09.06 16:49)

действительно, MessageBox - не то, попробуйте MessageDlg.


 
Pavel__   (2006-09-17 18:00) [7]

2 Eraser

> действительно, MessageBox - не то, попробуйте MessageDlg

Там используется все тот же LoadIcon с IDI_*-константами.

2 guav

Пытаюсь использовать так:

Image.Picture.Icon.Handle :=
LoadImage(0, MAKEINTRESOURCE(OIC_WARNING), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE);


Ничего не рисуется. Можно ли примерчик рабочий привести? Спасибо.


 
Pavel__   (2006-09-18 14:57) [8]

Все еще актуально..


 
guav ©   (2006-09-18 17:45) [9]

> Пытаюсь использовать так:
>
> Image.Picture.Icon.Handle :=
> LoadImage(0, MAKEINTRESOURCE(OIC_WARNING), IMAGE_ICON, 0,
> 0, LR_DEFAULTSIZE);
>
> Ничего не рисуется. Можно ли примерчик рабочий привести?
> Спасибо.


LoadImage(0, MAKEINTRESOURCE(OIC_WARNING), IMAGE_ICON, 0,
0, LR_DEFAULTSIZE or LR_SHARED);
Там ещё другие флаги есть, можно их попробовать, но вряд ли поможет..

можно попробовать посмотреть ресурсы висты и поискать там нужные картинки и ненужные картинки. и тогда можно быдет явно грузить нужные.
или может манифест какой-то нужен, как с темами ХР.


 
Pavel__   (2006-09-18 19:09) [10]

2 guav

Спасибо, только что увидел:

IDI_WARNING = IDI_EXCLAMATION;
...
IDI_EXCLAMATION = MakeIntResource(32515);
...
OIC_WARNING = OIC_BANG;
...
OIC_BANG = 32515;


Видимо, все-таки дело в недоработанности системы...



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

Текущий архив: 2006.10.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.031 c
15-1159937308
vidiv
2006-10-04 08:48
2006.10.29
Непрерывное профессиональное обучение.


15-1160059562
zdm
2006-10-05 18:46
2006.10.29
FastReport BDS 2006


2-1160746142
i-am-vladko
2006-10-13 17:29
2006.10.29
конструктор


15-1160137869
oldman
2006-10-06 16:31
2006.10.29
Нехватка виртуальной памяти...


2-1160904568
pathfinder
2006-10-15 13:29
2006.10.29
Переопределение методов..