![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как загрузить анимационный курсор (ANI) из ресурсов? [D7, WinXP]
JetuS © (2008-01-11 12:35:00)Из файла загружается без проблем, но не охота таскать с собой дополнительные файлы, поэтому создаю файл Cur.res из rc-файла такого содержания:
BUSY ANICURSOR 4.ani
Пробую - не работает. Что не так?
Вот код:
const
crMyCursor = 777;
implementation
{$R *.dfm}
{$R Cur.res}
procedure TForm1.Button1Click(Sender: TObject);
var
h: THandle;
begin
h := LoadImage(hInstance, 'BUSY', IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE);
ShowMessage(IntToStr(h));
Screen.Cursors[crMyCursor] := h;
Screen.Cursor := crMyCursor;
end;
(2008-02-28 22:10:00) [1]Удалено модератором
ага (2008-01-17 10:42:00) [2]
> jetus (17.01.08 08:09) [37]
А я те говорил - давай твой курсор, попробую. Так нет, не послушал.
JetuS (2008-01-17 09:19:00) [3]Всё, проблема решена.
Достаточно было удалить строку {$R WindowsXP.res}
Большое спасибо за помощь )
jetus (2008-01-17 08:09:00) [4]
> Вот модуль:
Гы, действительно работает )
А теперь вот что я сделал: взял другой .ani-файл, назвал его "1.ani" и просто заменил твой. Скомпилировал ресурс. Перебилдил проект. Запускаю - выдаёт: "System Error. Code: 1814. Указанное имя ресурса не найдено в файле образа."
Беру твой файл назад. Компилю ресурс. Билдю проект. Запускаю - работает.
Кто-нибудь может объяснить мне, что происходит?!
З.Ы. Пробовал на 6 разных .ani-файлах с размерами от 6кБ до 80кБ - одинаково.
ага (2008-01-16 19:27:00) [5]Блин, точно пустой:(( Без понятия как оно получилось, чет с недосыпу начудил:( Вот модуль:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{$R WindowsXP.res}
{$R Anicursor.res}
procedure TForm1.FormCreate(Sender: TObject);
var
h: Cardinal;
begin
h:= LoadCursor(HInstance, PChar(200));
if 0 = h then RaiseLastOSError;
Screen.Cursors[1]:= h;
Screen.Cursor:= 1;
end;
end.
jetus (2008-01-16 18:48:00) [6]
> На рэмблер вроде ушло.
Спасибо, пришло )
Действительно, ехе-шник рабочий.
А вот с кодом я чего-то не понял: модуль оказался "пустой":
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
Ни упоминания о курсоре.
Естественно, при компиляции ехе-шник без курсора вышел.
То ли ты мне pas-файл не тот выслал, то ли лыжи не едут )
ага (2008-01-15 15:25:00) [7]Дык я и так паковал - в ZIP, не приниало. Надо было попробовать ахиву расширение заменить, чет не сообразил с недосыпу:)) На рэмблер вроде ушло.
jetus (2008-01-15 07:45:00) [8]
> Да я бы отправил, да только твой сервак не хочет принимать
> архив с экзешником.
Запакуй rar-ом, тогда ругаться не будет. А если лень, то кинь на jetus@rambler.ru :)
ага (2008-01-14 21:55:00) [9]Да я бы отправил, да только твой сервак не хочет принимать архив с экзешником.
jetus (2008-01-14 21:04:00) [10]
> С любым я уже пробовал - смотри ага (13.01.08 05:52) [17]
> Ну твои дела, как знаешь
Гм...
Ну, раз у тебя всё получается, то выложи куда-нибудь архив с проектом (с ехе-шником, rc и res-файлами), а ещё лучше - отправь на jetuso@gmail.com,
буду тебе очень благодарен.
ага (2008-01-14 19:10:00) [11]
> ALS (14.01.08 12:30) [26]
> Были аналогичные проблемы, если в рессурсах модуля присутствовал
> XP-манифест.
А у меня почему-то и с манифестом никаких проблем
ага (2008-01-14 19:05:00) [12]
> JetuS (14.01.08 11:28) [25]
> Да зачем выкладывать? Возьми любой .ani-файл (даже из папки
> винды) и попробуй с ним.
С любым я уже пробовал - смотри ага (13.01.08 05:52) [17]
Ну твои дела, как знаешь
jetus (2008-01-14 18:35:00) [13]
> Были аналогичные проблемы, если в рессурсах модуля присутствовал
> XP-манифест.
Гм... и как узнать, есть ли там манифест?
> компилятор *.rc - файлов для дельфи отстаёт от микрософта,
> по этому -[26]
Специально уже компилю через микрософтский rc.exe
icWasya (2008-01-14 17:16:00) [14]компилятор *.rc - файлов для дельфи отстаёт от микрософта, по этому -[26]
ALS (2008-01-14 12:30:00) [15]Когда-то подключал анимированный курсор из rc-файла, прописывал код:
DARROW 21 darrow.ani
Были аналогичные проблемы, если в рессурсах модуля присутствовал XP-манифест.
JetuS (2008-01-14 11:28:00) [16]
> Дык потому, что это и есть отдельный тип - анимированный
> курсор.Выложи куда-нить этот файл курсора, попробую с ним
> скомпилить.
Да зачем выкладывать? Возьми любой .ani-файл (даже из папки винды) и попробуй с ним.
ага (2008-01-14 10:50:00) [17]
> 200-ый лежит себе отдельным типом, а почему?
Дык потому, что это и есть отдельный тип - анимированный курсор.
Выложи куда-нить этот файл курсора, попробую с ним скомпилить.
Dib@zol (2008-01-13 23:03:00) [18]> 200-ый лежит себе отдельным типом, а почему?
А вот потому что
> Error Cur.rc 1 13: Invalid cursor format
Просто RC, вестимо (непонятно, правда, накой) маскирует ету проблему...
jetus (2008-01-13 22:54:00) [19]
> Попробуй MAKEINTRESOURCE() вместо приведения к PChar. И
> посмотри размер скомпиленного ресурса - если он меньше суммарного
> размера .cur и .ani иконок, значит ресурс-компилер просто
> пропускает при построении реса этот .ani файл...
C MAKEINTRESOURCE() всё аналогично.
Размер полученого .res-файла соответствующий.
Хотя, в принципе, ошибку выдаёт правильную "Указанное имя ресурса не найдено в файле образа.": в ресурсах ехе-файла в группе курсоров есть курсор 201, а 200-го нету. 200-ый лежит себе отдельным типом, а почему?
Dib@zol (2008-01-13 21:29:00) [20]Попробуй MAKEINTRESOURCE() вместо приведения к PChar. И посмотри размер скомпиленного ресурса - если он меньше суммарного размера .cur и .ani иконок, значит ресурс-компилер просто пропускает при построении реса этот .ani файл...
ЗЫ Ну уж не знаю чего у тебя там происходит 0_о
в первый раз в жизни такое получаю ©