ACMDialog.pas
上传用户:hylc_2004
上传日期:2014-01-23
资源大小:46800k
文件大小:1k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit ACMDialog;
  2. interface
  3. uses
  4.   msacm,mmsystem,Windows, SysUtils, Classes, Controls, Dialogs;
  5. type
  6.   TACMDialog = class(TComponent)
  7.   private
  8.     { Private declarations }
  9.   protected
  10.     { Protected declarations }
  11.   public
  12.     function OpenDialog:pointer;
  13.     { Public declarations }
  14.   published
  15.     { Published declarations }
  16.   end;
  17. var
  18. fc:TACMFORMATCHOOSEA;
  19. procedure Register;
  20. implementation
  21. procedure Register;
  22. begin
  23.   RegisterComponents('Milos', [TACMDialog]);
  24. end;
  25. function TACMDialog.OpenDialog:Pointer;
  26. var maxsizeformat,res:longint;
  27. begin
  28.   if fc.pwfx = nil then
  29.   begin
  30.    acmMetrics(0, ACM_METRIC_MAX_SIZE_FORMAT, MaxSizeFormat);
  31.    fc.cbStruct := sizeof(fc);
  32.    fc.cbWfx := MaxSizeFormat;
  33.    getmem(fc.pwfx, MaxSizeFormat);  
  34.    fc.pwfx.wFormatTag :=$31;   //WAVE_FORMAT_GSM610; set default format to GSM6.10
  35.    fc.pwfx.nChannels := 1;     //mono
  36.    fc.pwfx.nSamplesPerSec := 8000;  
  37.    fc.pwfx.nAvgBytesPerSec:= 8000; { for buffer estimation }
  38.    fc.pwfx.nBlockAlign:=1;      { block size of data }
  39.    fc.pwfx.wbitspersample := 8;
  40.   end;
  41.   fc.fdwStyle:=ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT;  //use the pwfx(waveformatex structure) as default
  42.   res:=acmFormatChoose(fc); //display the ACM dialog box
  43.   result:=nil;
  44.   if res=MMSYSERR_NOERROR then result:=fc.pwfx; //return the pointer to waveformatex structure
  45. end;
  46. end.