亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? dxsounds.pas

?? 雙人對(duì)戰(zhàn) 俄羅斯訪快
?? PAS
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
  NotifyEventList(dsntInitializing);
  DoInitializing;

  FInternalInitialized := True;
  try
    {  DirectSound initialization.  }
    FDSound := TDXSoundDirectSound.Create(Driver);
    TDXSoundDirectSound(FDSound).FDXSound := Self;

    FDSound.FGlobalFocus := soGlobalFocus in FNowOptions;

    {  Primary buffer made.  }
    FPrimary := TDirectSoundBuffer.Create(FDSound);
    if not FPrimary.CreateBuffer(PrimaryDesc) then
      raise EDXSoundError.CreateFmt(SCannotMade, [SDirectSoundPrimaryBuffer]);

    FInitialized := True;

    SetForm(TCustomForm(Component));
  except
    Finalize;
    raise;
  end;

  NotifyEventList(dsntInitialize);

  FCalledDoInitialize := True; DoInitialize;

  Restore;
end;

procedure TCustomDXSound.Loaded;
begin
  inherited Loaded;

  if FAutoInitialize and (not (csDesigning in ComponentState)) then
  begin
    try
      Initialize;
    except
      on E: EDirectSoundError do ;
      else raise;
    end;
  end;
end;

procedure TCustomDXSound.Restore;
begin
  if FInitialized then
  begin
    NotifyEventList(dsntRestore);
    DoRestore;
  end;
end;

procedure TCustomDXSound.SetDriver(Value: PGUID);
begin
  if not IsBadHugeReadPtr(Value, SizeOf(TGUID)) then
  begin
    FDriverGUID := Value^;
    FDriver := @FDriverGUID;
  end else
    FDriver := Value;
end;

procedure TCustomDXSound.SetForm(Value: TCustomForm);
var
  Level: Integer;
begin
  FForm := Value;

  FSubClass.Free;
  FSubClass := TControlSubClass.Create(FForm, FormWndProc);

  if FInitialized then
  begin
    if soExclusive in FNowOptions then
      Level := DSSCL_EXCLUSIVE
    else
      Level := DSSCL_NORMAL;

    FDSound.DXResult := FDSound.ISound.SetCooperativeLevel(FForm.Handle, Level);
  end;
end;

procedure TCustomDXSound.SetOptions(Value: TDXSoundOptions);
const
  DXSoundOptions = [soGlobalFocus, soStickyFocus, soExclusive];
  InitOptions: TDXSoundOptions = [soExclusive];
var
  OldOptions: TDXSoundOptions;
begin
  FOptions := Value;

  if Initialized then
  begin
    OldOptions := FNowOptions;

    FNowOptions := (FNowOptions - (DXSoundOptions - InitOptions)) +
      (Value - InitOptions);

    FDSound.FGlobalFocus := soGlobalFocus in FNowOptions;
    FDSound.FStickyFocus := soStickyFocus in FNowOptions;
  end else
    FNowOptions := FOptions;
end;

{  TWaveCollectionItem  }

constructor TWaveCollectionItem.Create(Collection: TCollection);
begin
  inherited Create(Collection);
  FWave := TWave.Create;
  FBufferList := TList.Create;
end;

destructor TWaveCollectionItem.Destroy;
begin
  Finalize;
  FWave.Free;
  FBufferList.Free;
  inherited Destroy;
end;

procedure TWaveCollectionItem.Assign(Source: TPersistent);
var
  PrevInitialized: Boolean;
begin
  if Source is TWaveCollectionItem then
  begin
    PrevInitialized := Initialized;
    Finalize;

    FLooped := TWaveCollectionItem(Source).FLooped;
    Name := TWaveCollectionItem(Source).Name;
    FMaxPlayingCount := TWaveCollectionItem(Source).FMaxPlayingCount;

    FFrequency := TWaveCollectionItem(Source).FFrequency;
    FPan := TWaveCollectionItem(Source).FPan;
    FVolume := TWaveCollectionItem(Source).FVolume;

    FWave.Assign(TWaveCollectionItem(Source).FWave);

    if PrevInitialized then
      Restore;
  end else
    inherited Assign(Source);
end;                         

function TWaveCollectionItem.GetBuffer: TDirectSoundBuffer;
begin
  if FInitialized and (FBuffer=nil) then
    Restore;
  Result := FBuffer;
end;

function TWaveCollectionItem.GetWaveCollection: TWaveCollection;
begin
  Result := Collection as TWaveCollection;
end;

procedure TWaveCollectionItem.Finalize;
var
  i: Integer;
begin
  if not FInitialized then Exit;
  FInitialized := False;

  for i:=0 to FBufferList.Count-1 do
    TDirectSoundBuffer(FBufferList[i]).Free;
  FBufferList.Clear;
  FBuffer.Free; FBuffer := nil;
end;

procedure TWaveCollectionItem.Initialize;
begin
  Finalize;
  FInitialized := WaveCollection.Initialized;
end;

function TWaveCollectionItem.CreateBuffer: TDirectSoundBuffer;
begin
  Result := nil;
  if GetBuffer=nil then Exit;

  Result := TDirectSoundBuffer.Create(WaveCollection.DXSound.DSound);
  try
    Result.Assign(GetBuffer);
  except
    Result.Free;
    raise;
  end;
end;

procedure TWaveCollectionItem.Play(Wait: Boolean);
var
  NewBuffer: TDirectSoundBuffer;
  i: Integer;
begin
  if not FInitialized then Exit;

  if FLooped then
  begin
    GetBuffer.Stop;
    GetBuffer.Position := 0;
    GetBuffer.Play(True);
  end else
  begin
    NewBuffer := nil;
    for i:=0 to FBufferList.Count-1  do
      if not TDirectSoundBuffer(FBufferList[i]).Playing then
      begin
        NewBuffer := FBufferList[i];
        Break;
      end;
                 
    if NewBuffer=nil then
    begin
      if FMaxPlayingCount=0 then
      begin
        NewBuffer := CreateBuffer;
        if NewBuffer=nil then Exit;

        FBufferList.Add(NewBuffer);
      end else
      begin
        if FBufferList.Count<FMaxPlayingCount then
        begin
          NewBuffer := CreateBuffer;
          if NewBuffer=nil then Exit;

          FBufferList.Add(NewBuffer);
        end else
        begin
          NewBuffer := FBufferList[0];
          FBufferList.Move(0, FBufferList.Count-1);
        end;
      end;
    end;

    NewBuffer.Stop;
    NewBuffer.Position := 0;
    NewBuffer.Frequency := FFrequency;
    NewBuffer.Pan := FPan;
    NewBuffer.Volume := FVolume;
    NewBuffer.Play(False);

    if Wait then
    begin
      while NewBuffer.Playing do
        Sleep(10);
    end;
  end;
end;

procedure TWaveCollectionItem.Restore;
begin
  if FWave.Size=0 then Exit;

  if not FInitialized then
  begin
    if WaveCollection.Initialized then
      Initialize;
    if not FInitialized then Exit;
  end;

  if FBuffer=nil then
    FBuffer := TDirectSoundBuffer.Create(WaveCollection.DXSound.DSound);

  FBuffer.LoadFromWave(FWave);
  FBuffer.Frequency := FFrequency;
  FBuffer.Pan := FPan;
  FBuffer.Volume := FVolume;
end;

procedure TWaveCollectionItem.Stop;
var
  i: Integer;
begin
  if not FInitialized then Exit;

  FBuffer.Stop;
  for i:=0 to FBufferList.Count-1  do
    TDirectSoundBuffer(FBufferList[i]).Stop;
end;

procedure TWaveCollectionItem.SetFrequency(Value: Integer);
begin
  FFrequency := Value;
  if FInitialized then
    GetBuffer.Frequency := Value;
end;

procedure TWaveCollectionItem.SetLooped(Value: Boolean);
begin
  if FLooped<>Value then
  begin
    Stop;
    FLooped := Value;
  end;
end;

procedure TWaveCollectionItem.SetMaxPlayingCount(Value: Integer);
var
  i: Integer;
begin
  if Value<0 then Value := 0;

  if FMaxPlayingCount<>Value then
  begin
    FMaxPlayingCount := Value;

    if FInitialized then
    begin
      for i:=0 to FBufferList.Count-1 do
        TDirectSoundBuffer(FBufferList[i]).Free;
      FBufferList.Clear;
    end;
  end;
end;

procedure TWaveCollectionItem.SetPan(Value: Integer);
begin
  FPan := Value;
  if FInitialized then
    GetBuffer.Pan := Value;
end;

procedure TWaveCollectionItem.SetVolume(Value: Integer);
begin
  FVolume := Value;
  if FInitialized then
    GetBuffer.Volume := Value;
end;

procedure TWaveCollectionItem.SetWave(Value: TWave);
begin
  FWave.Assign(Value);
end;

{  TWaveCollection  }

constructor TWaveCollection.Create(AOwner: TPersistent);
begin
  inherited Create(TWaveCollectionItem);
  FOwner := AOwner;
end;

function TWaveCollection.GetItem(Index: Integer): TWaveCollectionItem;
begin
  Result := TWaveCollectionItem(inherited Items[Index]);
end;

function TWaveCollection.GetOwner: TPersistent;
begin
  Result := FOwner;
end;

function TWaveCollection.Find(const Name: string): TWaveCollectionItem;
var
  i: Integer;
begin
  i := IndexOf(Name);
  if i=-1 then
    raise EWaveCollectionError.CreateFmt(SWaveNotFound, [Name]);
  Result := Items[i];
end;

procedure TWaveCollection.Finalize;
var
  i: Integer;
begin
  for i:=0 to Count-1 do
    Items[i].Finalize;
  FDXSound := nil;
end;

procedure TWaveCollection.Initialize(DXSound: TCustomDXSound);
var
  i: Integer;
begin
  Finalize;
  FDXSound := DXSound;
  for i:=0 to Count-1 do
    Items[i].Initialize;
end;

function TWaveCollection.Initialized: Boolean;
begin
  Result := (FDXSound<>nil) and (FDXSound.Initialized);
end;

procedure TWaveCollection.Restore;
var
  i: Integer;
begin
  for i:=0 to Count-1 do
    Items[i].Restore;
end;

type
  TWaveCollectionComponent = class(TComponent)
  private
    FList: TWaveCollection;
  published
    property List: TWaveCollection read FList write FList;
  end;

procedure TWaveCollection.LoadFromFile(const FileName: string);
var
  Stream: TFileStream;
begin
  Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
    LoadFromStream(Stream);
  finally
    Stream.Free;
  end;
end;

procedure TWaveCollection.LoadFromStream(Stream: TStream);
var
  Component: TWaveCollectionComponent;
begin
  Clear;
  Component := TWaveCollectionComponent.Create(nil);
  try
    Component.FList := Self;
    Stream.ReadComponentRes(Component);

    if Initialized then
    begin
      Initialize(FDXSound);
      Restore;
    end;
  finally
    Component.Free;
  end;
end;

procedure TWaveCollection.SaveToFile(const FileName: string);
var
  Stream: TFileStream;
begin
  Stream := TFileStream.Create(FileName, fmCreate);
  try
    SaveToStream(Stream);
  finally
    Stream.Free;
  end;
end;

procedure TWaveCollection.SaveToStream(Stream: TStream);
var
  Component: TWaveCollectionComponent;
begin
  Component := TWaveCollectionComponent.Create(nil);
  try
    Component.FList := Self;
    Stream.WriteComponentRes('DelphiXWaveCollection', Component);
  finally
    Component.Free;
  end;
end;

{  TCustomDXWaveList  }

constructor TCustomDXWaveList.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FItems := TWaveCollection.Create(Self);
end;

destructor TCustomDXWaveList.Destroy;
begin
  DXSound := nil;
  FItems.Free;
  inherited Destroy;
end;

procedure TCustomDXWaveList.Notification(AComponent: TComponent; Operation: TOperation);
begin
  inherited Notification(AComponent, Operation);
  if (Operation=opRemove) and (DXSound=AComponent) then
    DXSound := nil;
end;

procedure TCustomDXWaveList.DXSoundNotifyEvent(Sender: TCustomDXSound;
  NotifyType: TDXSoundNotifyType);
begin
  case NotifyType of
    dsntDestroying: DXSound := nil;
    dsntInitialize: FItems.Initialize(Sender);
    dsntFinalize  : FItems.Finalize;
    dsntRestore   : FItems.Restore;
  end;
end;

procedure TCustomDXWaveList.SetDXSound(Value: TCustomDXSound);
begin
  if FDXSound<>nil then
    FDXSound.UnRegisterNotifyEvent(DXSoundNotifyEvent);

  FDXSound := Value;

  if FDXSound<>nil then
    FDXSound.RegisterNotifyEvent(DXSoundNotifyEvent);
end;

procedure TCustomDXWaveList.SetItems(Value: TWaveCollection);
begin
  FItems.Assign(Value);
end;

initialization
finalization
  DirectSoundDrivers.Free;
  DirectSoundCaptureDrivers.Free;
end.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕在线视频一区| 日韩国产欧美在线播放| 国产欧美综合色| 自拍偷拍亚洲激情| 亚洲视频在线一区观看| 亚洲午夜久久久久久久久久久| 日本亚洲欧美天堂免费| 国产a级毛片一区| 欧美无砖专区一中文字| 欧美精品一区二区在线观看| 亚洲国产成人在线| 亚洲国产精品久久人人爱| 九九精品视频在线看| 91免费版pro下载短视频| 欧美一区二区三区人| 亚洲乱码精品一二三四区日韩在线| 日韩黄色一级片| 91色乱码一区二区三区| 久久久久久久国产精品影院| 日本韩国一区二区三区视频| 精品美女被调教视频大全网站| 亚洲男人的天堂网| 免费成人在线视频观看| 欧美日韩中文字幕一区二区| 久久精品一区蜜桃臀影院| 欧美bbbbb| 欧美性猛片aaaaaaa做受| 国产精品毛片高清在线完整版| 男人的天堂久久精品| 欧美日本国产视频| 亚洲成人免费看| 色噜噜夜夜夜综合网| 国产三级一区二区三区| 国产乱码字幕精品高清av | 免费成人在线影院| 欧美久久久久久久久久| 亚洲午夜在线电影| 色狠狠色狠狠综合| 亚洲精品成人天堂一二三| 成人av午夜电影| 国产精品毛片大码女人| av欧美精品.com| 亚洲免费在线播放| 91啪亚洲精品| 亚洲国产一区二区视频| 欧美电影一区二区| 麻豆精品一区二区av白丝在线| 欧美一级国产精品| 精品一区二区三区的国产在线播放| 日韩一区二区三区免费看 | 亚洲欧美一区二区三区极速播放| 91在线国产观看| 亚洲成人高清在线| 日韩女优制服丝袜电影| 国产91精品一区二区| 亚洲欧美在线视频观看| 欧美日韩高清一区二区不卡| 久久国产欧美日韩精品| 国产精品免费丝袜| 欧美日韩一区国产| 国精品**一区二区三区在线蜜桃| 国产亚洲精品bt天堂精选| 欧美一级理论片| 91影视在线播放| 国产中文字幕一区| 亚洲综合精品久久| 精品福利一二区| 欧洲在线/亚洲| 国产91精品露脸国语对白| 亚洲成人资源网| 综合分类小说区另类春色亚洲小说欧美| 欧美日本在线一区| av在线免费不卡| 精品影视av免费| 亚洲h动漫在线| 亚洲免费视频中文字幕| 国产无一区二区| 精品精品国产高清a毛片牛牛 | 欧美videofree性高清杂交| 色婷婷狠狠综合| thepron国产精品| 成人av动漫网站| 风间由美一区二区av101| 久久丁香综合五月国产三级网站| 一区二区日韩av| 综合久久国产九一剧情麻豆| 中文字幕免费不卡| 国产欧美一区二区精品久导航| 亚洲18女电影在线观看| 一区二区视频免费在线观看| 国产精品嫩草99a| 亚洲国产精华液网站w | 99免费精品在线| k8久久久一区二区三区| 床上的激情91.| 国产大陆a不卡| 成人午夜激情片| 色综合久久久久综合体桃花网| 色中色一区二区| 91精品办公室少妇高潮对白| 色成人在线视频| 欧美情侣在线播放| 欧美一区永久视频免费观看| 91精品国产综合久久久久久| 久久精品欧美日韩精品| 国产精品日日摸夜夜摸av| 日韩一区有码在线| 一区二区三区四区在线免费观看 | 国产一区二区三区免费播放| 成人性生交大片免费看中文| 91蜜桃在线观看| 91精品国产品国语在线不卡| 久久综合成人精品亚洲另类欧美| 国产日韩精品一区| 亚洲国产色一区| 国产激情精品久久久第一区二区| 波多野结衣的一区二区三区| 日韩视频国产视频| 亚洲欧美日韩成人高清在线一区| 污片在线观看一区二区| 国产成人亚洲综合a∨猫咪| 欧美在线啊v一区| 日本一区二区高清| 蜜桃精品在线观看| 色综合久久88色综合天天免费| 欧美成人猛片aaaaaaa| 亚洲在线观看免费视频| 国产精品888| 日韩情涩欧美日韩视频| 亚洲国产另类av| 色综合久久中文综合久久97| 国产日产欧美一区二区三区| 亚洲一区二区三区国产| 成人高清免费观看| 精品国产成人在线影院 | 久久久久久久久久久99999| 日日噜噜夜夜狠狠视频欧美人| 在线一区二区视频| 国产精品乱码妇女bbbb| 韩国女主播成人在线| 56国语精品自产拍在线观看| 一区二区三区日韩欧美精品| 成a人片国产精品| 欧美激情在线一区二区三区| 国内精品久久久久影院薰衣草 | 日韩电影在线一区| 欧美日韩情趣电影| 亚洲一区视频在线| 欧美少妇bbb| 亚洲国产视频在线| 欧美日韩视频专区在线播放| 亚洲一区二区在线播放相泽| 色婷婷狠狠综合| 亚洲国产综合色| 6080日韩午夜伦伦午夜伦| 免费久久99精品国产| 精品国产乱码久久久久久影片| 另类小说图片综合网| 精品理论电影在线| 成人激情动漫在线观看| 成人免费视频在线观看| 欧美综合一区二区| 日本欧美韩国一区三区| 日韩欧美激情四射| 国产精品一区一区三区| 亚洲免费av在线| 91精品在线麻豆| 韩国精品免费视频| 亚洲日本电影在线| 日韩精品自拍偷拍| av电影天堂一区二区在线观看| 亚洲乱码精品一二三四区日韩在线| 欧美在线观看视频一区二区| 久久精品国产一区二区三区免费看| 久久综合久久鬼色中文字| 91在线看国产| 国模少妇一区二区三区| 亚洲综合激情网| 中文字幕免费不卡| 日韩一区二区三| 欧美亚男人的天堂| 国产91色综合久久免费分享| 午夜精品久久久久久不卡8050| 国产无遮挡一区二区三区毛片日本| 欧美日韩一级视频| 91影院在线观看| 成人黄页毛片网站| 国产精品自在在线| 男人的天堂久久精品| 日韩激情一区二区| 一区二区久久久久久| 亚洲图片欧美视频| 一区二区三区中文字幕在线观看| 久久精品日产第一区二区三区高清版| 91精品国产品国语在线不卡| 欧美日韩一卡二卡| 欧美精品高清视频| 欧美日韩国产成人在线免费| 欧美私人免费视频| 欧美日韩综合在线免费观看|