C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
внедрить Flash ролик
DIMATEUS
Отправлено: 15.05.2004, 01:30


Не зарегистрирован







Уважаемые, подскажите пожалуйста, как в программу внедрить Flash ролик?
Но только так, что бы он работал как Animate.
Где-то читал, что можно c помощью OleContainer, но у меня нечего не вышло.

P.S. Если вас не затруднит то напишите какой нибуть пример.
В заранее благодарен.
OpeR
Отправлено: 17.05.2004, 06:42


Ученик-кочегар

Группа: Участник
Сообщений: 4



У меня установлен Flash MX, C++ Builder 6. В билде нажать меню Project ---> Import Type Library в списке выбрать FlashAccessibility (Vertion 1), нажать Install. После установки и компиляции на выбранной вкладке панели инструментов появится три компонента (один визуальный и два не визуальных). Создай новое приложение (или открой уже ранее созданное), выбери из вкладки компонент ShockwaveFlash и помести на форме. В место нахождения проекта перекопируй файлы, начинающиеся с ShockwaveFlashObjects*.*, из папки Program Files\Borland\CBuilder№\Imports.

по действию кнопки или ещё чему
ShockwaveFlash1->Movie = "d:\\globel.swf";

например:


#include
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "ShockwaveFlashObjects_OCX"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
ShockwaveFlash1->Movie = "d:\\globel.swf";
}
//---------------------------------------------------------------------------
DIMATEUS
Отправлено: 21.05.2004, 02:51


Не зарегистрирован







С этим я у же разобрался! Но вот как реалезовывать нажатие на Flash кнопку, я не пойму! При нажатии открывает чистую страницу интернета.
Я предпологаю что нежно пописывать функции кнопки во Flash MX, но это так не удобно и многое теряется.
klen
Отправлено: 23.05.2004, 10:26


Машинист паровоза

Группа: Участник
Сообщений: 239



Я уже сдесь несколько раз об этом писал. Поищи поиском. Напомню — для того что ты хочешь надо использоать событие обьекта FlashPlaer -> FlashFSCommand? это событие возвращает кто нажался и "чего нажался". Вот пример из моего одного проекта.
CODE
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "uShell.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "ShockwaveFlashObjects_OCX"
#pragma resource "*.dfm"
TShell *Shell;
//---------------------------------------------------------------------------
__fastcall TShell::TShell(TComponent* Owner)
       : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TShell::FormActivate(TObject *Sender)
{
  WindowState = wsMaximized;
}
//---------------------------------------------------------------------------
void __fastcall TShell::FormShow(TObject *Sender)
{
  Flash -> Movie = GetCurrentDir () + "\\Data\\test.swf";
}
//---------------------------------------------------------------------------
void __fastcall TShell::FlashFSCommand(TObject *Sender,
     BSTR command, BSTR args)
{
 // ????
 if ( AnsiString(command) == "Close" ) Close();
 if ( AnsiString(command) == "Minimize") Application -> Minimize();

 wchar_t Target[128];
 AnsiString("_level0.NotifyHandler").WideChar( Target , 128);
 wchar_t Label [128];

 // ?????
 if ( AnsiString(command) == "Action_0" )
  {
    AnsiString("Event_0").WideChar( Label , 128);
    Flash -> TGotoLabel( Target , Label );
  };

 if ( AnsiString(command) == "Action_1" )
  {
    TStringList* ObjectList = new  TStringList();
    TStringList* SearchList = new  TStringList();
    ObjectList -> LoadFromFile ("Data\\Object.txt");
    for ( int Obj = 0; Obj < ObjectList -> Count; Obj++ )
      {
        if ( ObjectList -> Strings[Obj].Pos(args) )
          SearchList -> Add (ObjectList -> Strings[Obj]);
      }

    if ( SearchList -> Count == 0)
     {
       SearchList -> Add("Data=Not found");
       SearchList -> SaveToFile ("Data\\Search.txt");
     }
    else
     {
       SearchList -> Strings[0] = "Data=" + SearchList -> Strings[0];
       SearchList -> SaveToFile ("Data\\Search.txt");
     }

    delete ObjectList;
    delete SearchList;

    AnsiString("Event_1").WideChar( Label , 128);
    Flash -> TGotoLabel( Target , Label );
   };

 if ( AnsiString(command) == "Action_2" )
  {
    AnsiString("Event_2").WideChar( Label , 128);
    Flash -> TGotoLabel( Target , Label );
  };
}
//---------------------------------------------------------------------------
exp
Отправлено: 23.05.2004, 21:58


Мастер участка

Группа: Участник
Сообщений: 304



А будет флэшка играть если Flash не установлен?
klen
Отправлено: 25.05.2004, 21:40


Машинист паровоза

Группа: Участник
Сообщений: 239



Конечно будет smile.gif, но надо записать на машину flash.ocx — флешовый сервер и зарегестрировать его. Это у же неоднократно писалось и обсуждалось, поищи поиском. Если не получится, пиши отвечу.

Вернуться в Технологии COM/DCOM, ActiveX