資原始檔的應用 (轉)

themoney發表於2007-10-04
資原始檔的應用 (轉)[@more@]

建立一個RC,本示例:SwfFile.rc
RC檔案其實就是一個資原始檔的描述文字。然後可以輸入一些我們要定義的資源,示例:
Flash SwfFile1 Thanks.SWF
然後用BRCC32把這個RC檔案編譯成SwfFile.RES。
BRCC32 SwfFile.rc儲存為Swf.bat批處理檔案。
在的工程檔案中使用 $R 編譯指令讓Delphi包括資源到EXE檔案裡面。
{$R SwfFile.RES}
此時我們可以在單一的檔案中資源了。示例程式碼如下:
//資原始檔流的應用
procedure FlashResToFile(const ResName, ResType, FileName: string);
var
  FlashRes: TReStream;
begin
  FlashRes := TResourceStream.Create(HInstance, ResName, PChar(ResType));
  try
  FlashRes.SaveToFile(FileName); //將資源儲存為檔案,即還原檔案
  finally
  FlashRes.Free;
  end;
end;
//執行資原始檔中的Flash檔案
procedure TFlashRerm.PlayResFileBtnClick(Sender: T);
begin
  if FileExists(ExtractFilePath(ParamStr(0)) + 'Thanks.SWF') then
  DeleteFile(ExtractFilePath(ParamStr(0)) + 'Thanks.SWF');
  FlashResToFile('FLASH', 'SwfFile1', 'Thanks.SWF');
  ShockwaveFlash1.Mov:= ExtractFilePath(ParamStr(0)) + 'Thanks.SWF';
  ShockwaveFlash1.Play;
end;

通常在Delphi的應用程式中會呼叫到很多的資源,例如圖片,動畫(AVI),,甚至於別的執行檔案。
ResICO ICON "example.ico"  //加入圖示
ResCursor Cursor "example.cur"  //加入游標
ResBitmap Bitmap "example.bmp"  //加入點陣圖
ResAVI AVI "example.avi"  //加入影片
ResWav WAVE "example.wav"  //加入影片

{$R ResDefine.RES}

procedure TResourceForm.FormCreate(Sender: TObject);
begin
  Application.Icon.Handle := LoadIcon(hInstance,'ResICO');
  Application.Title := '資原始檔使用集合';
  ResourceForm.Caption := '資原始檔使用集合--[Delphi驛站:;
end;

procedure TResourceForm.Image1MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
  //把MMSystem加入到Interface的uses單元中
  PlaySound('ResWav',HInstance,Snd_ASync or Snd_Memory or snd_Resource) ;
end;

procedure TResourceForm.AVIPlayBtnClick(Sender: TObject);
begin
  Animate1.ResName :='ResAVI' ; //資源標識
  Animate1.Active :=True ;
end;

procedure TResourceForm.BmpShowBtnClick(Sender: TObject);
begin
  //Image1.Picture.Bitmap.Handle :=Loaitmap(hInstance,'ResBitmap');
  Image1.Picture.Bitmap.LoadFromResourceName(hInstance,'ResBitmap');
  Image1.Visible := True;
end;

procedure TResourceForm.CursorUpdateBtnClick(Sender: TObject);
begin
  Screen.Cursors[1] :=LoadCursor(hInstance,'ResCursor');
  //Image1.Cursor := 1;
  ResourceForm.Cursor :=1;
end;


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10794571/viewspace-974725/,如需轉載,請註明出處,否則將追究法律責任。

相關文章