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

Вниз

TAnimate в Windows 7   Найти похожие ветки 

 
harisma ©   (2011-03-30 18:31) [0]

Здравствуйте. Такая проблема. Использую в проекте компоненту TAnimate. Пишу все еще на Д5 (в силу особенностей программы и недостатка знаний для перевода некоторых ее частей на более высокие версии). Так вот, пока работал на WinXP - в этом компоненте при установке CommonAvi = aviCopyFiles и Active = True все отображалось (листики в компоненте летали). Но поставили Win 7 - и никакое встроенное видео в этом компоненте не отображается. Как быть?
В сети и на сайте Эмбаркадеро нашел решение, что надо к проекту подключить модуль ShellAnimations.pas, но это не помогло (хотя я и этот модуль и ресурсные файлы от D2010 к себе перетащил и куда требуется положил). Какие еще будут предложения?


 
clickmaker ©   (2011-03-30 18:40) [1]

> надо к проекту подключить модуль ShellAnimations.pas

а что в этом модуле? Замена стандартного TAnimate?


 
harisma ©   (2011-03-30 19:36) [2]

Нет. Там компонента, порожденная от TComponent, но не имеющая ничего нового по сравнению с ним. Только в том модуле подгружаются ресурсные файлы этих общевиндовых авишек.
Собственно вот его исходник:

unit ShellAnimations;
{$WEAKPACKAGEUNIT ON}
interface

uses
 SysUtils, Classes;

{$R FindFolder.res }
{$R FindFile.res }
{$R FindComputer.res }
{$R CopyFiles.res }
{$R CopyFile.res }
{$R RecycleFile.res }
{$R EmptyRecycle.res }
{$R DeleteFile.res }

type
 TShellResources = class(TComponent)
 end;
 
implementation

end.


 
harisma ©   (2011-03-30 19:53) [3]

Еще одно замечание. Форма, на которой используется этот компонент, вшита в dll.


 
clickmaker ©   (2011-03-30 23:28) [4]

так может их цеплять надо через ResName или


 
clickmaker ©   (2011-03-30 23:40) [5]

или у них ResID совпадает со стандартными виндозными, и он их сам должен подцепить?
Короче, надо в отладчике смотреть с use debug dcu, чем заканчивается вызов в comctrls.pas
Result := Perform(ACM_OPEN, GetActualResHandle, GetActualResId) <> 0;


 
clickmaker ©   (2011-03-31 00:11) [6]

и еще
if FCommonAVI <> aviNone then Result := GetShellModule

то есть, если грузим свои ресурсы, то и ResHandle должен быть того модуля, к которому прилинкованы эти .res


 
Anatoly Podgoretsky ©   (2011-03-31 08:54) [7]


> хотя я и этот модуль и ресурсные файлы от D2010 к себе

А ничего, что 2010 ориентирован на Юникод, а Д5 нет и ужасно устарел.


 
harisma ©   (2011-03-31 11:29) [8]


> и еще
> if FCommonAVI <> aviNone then Result := GetShellModule
>
> то есть, если грузим свои ресурсы, то и ResHandle должен
> быть того модуля, к которому прилинкованы эти .res

А можно вот это поподробнее?


 
harisma ©   (2011-03-31 11:44) [9]

Собственно я нашел другой способ получить то, что мне надо. А именно:
-создал 2 ресурсных файла в каждом из которых находится нужный мне видеоклипик (выкушеный из виндовой Длл Shell32.dll от ВинХР)
-подгружаю эти 2 файла в проект.
- прописываю в коде проекта следующий код:

implementation

{$R *.DFM}
{$R Apply.res}
{$R Cancel.res}

procedure TForm1.Button1Click(Sender: TObject);
begin
 Animate1.ResName := "Apply";
 Animate1.Active := True;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 Animate1.ResName := "Cancel";
 Animate1.Active := True;
end;

- и тут все бы хорошо, но мне эту конструкцию надо использовать не в экзешнике, а в ДЛЛ, причем эта ДЛЛ обязательно с установленной галочкой "Build with runtime packages". Но именно в таком варианте при присвоении
Animate1.ResName := "Apply"; ругается на "Cannot open AVI".
Причем если эту галочку снять, то все будет работать.
Как мне добиться работы ДЛЛ и с установленой этой галочкой?


 
clickmaker ©   (2011-03-31 11:52) [10]

Animate1.ResHandle := HInstance?


 
harisma ©   (2011-03-31 12:00) [11]


> Animate1.ResHandle := HInstance?

Не понял.


 
Anatoly Podgoretsky ©   (2011-03-31 12:29) [12]

> harisma  (31.03.2011 11:44:09)  [9]

У ДЛЛ такой галочки нет, оно не имеет отношения к пакетам


 
harisma ©   (2011-03-31 12:40) [13]

Не правда. Есть такая галочка. И мы ее используем.



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

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

Наверх




Память: 0.49 MB
Время: 0.008 c
2-1301468675
Scott Storch
2011-03-30 11:04
2011.07.10
xml (dom)


15-1300829404
Юрий
2011-03-23 00:30
2011.07.10
С днем рождения ! 23 марта 2011 среда


2-1301910133
Magedon
2011-04-04 13:42
2011.07.10
COM: обработка исключительных ситуаций


1-1258027214
Суслик_
2009-11-12 15:00
2011.07.10
Как запретить обработку любых действий пользователя?


4-1243935428
Unknown user
2009-06-02 13:37
2011.07.10
Стек вызовов