Текущий архив: 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.46 MB
Время: 0.044 c