home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 16 / CD_ASCQ_16_0994.iso / news / 4611 / fw16d.ins / SAMPLES / MMEDIA.PRG < prev    next >
Text File  |  1994-06-07  |  14KB  |  343 lines

  1. #include "FiveWin.ch"
  2.  
  3. static oWnd,hBorland 
  4. static oBrw,aDispos
  5. static aMciDev,oBrw2
  6.  
  7. Function Main()
  8.    Local cBuffer:=Space(200),xValor,aDisp[7]
  9.    Local cBuffer2:=Space(200),nVolR:=0,nVolL:=0,nVol:=0
  10.    Local aDev:={0,0,0,Space(32),0,0},nA
  11.    Local nMciDev,oBrush,nDisp,nMci
  12.    
  13.    aDispos:={}
  14.    aMciDev:={}
  15.  
  16.    DEFINE BRUSH oBrush STYLE TILED
  17.  
  18.    DEFINE WINDOW oWnd FROM 1,1 TO 30,88 ;
  19.          TITLE "CONTROL MULTIMEDIA" ;
  20.          BRUSH oBrush ;
  21.          MENU BuildMenu()
  22.  
  23.     hBorland := LoadLibrary( "BWCC.DLL" )     // Loading Borland's dll
  24.    SET RESOURCES TO "MMEDIA.DLL"           // Our stored screens
  25.  
  26.    SET 3DLOOK ON   
  27.  
  28.    mciSendStr("SYSINFO ALL QUANTITY",@cBuffer,oWnd:hWnd)   
  29.    nMciDev=Val(cBuffer)
  30.    For nA:= 1 To nMciDev
  31.       mciSendStr("SYSINFO ALL NAME "+lTrim(Str(nA)),@cBuffer,oWnd:hWnd)   
  32.       AADD(aMciDev,{xPadL( lTrim(Str(nA)),30),Left(cBuffer,15),"","",""} )
  33.  
  34.       mciSendStr("CAPABILITY "+Upper(AllTrim(aMciDev[nA,2]))+" DEVICE TYPE",@cBuffer,oWnd:hWnd)
  35.       aMciDev[nA,3]=Left(cBuffer,15)
  36.  
  37.       mciSendStr("SYSINFO "+Upper(AllTrim(aMciDev[nA,2]))+" QUANTITY",@cBuffer,oWnd:hWnd)
  38.       aMciDev[nA,4]=Trim(cBuffer)
  39.  
  40.       mciSendStr("SYSINFO "+Upper(AllTrim(aMciDev[nA,2]))+" QUANTITY OPEN",@cBuffer,oWnd:hWnd)
  41.       aMciDev[nA,5]=Trim(cBuffer)
  42.    Next nA
  43.  
  44.  
  45.  
  46.    For nA:= 0 To AUXGETDEV()-1
  47.  
  48.       AUXGETCAPS(nA,@aDev)
  49.       AuxGetVol(nA,@nVolL,@nVolR)
  50.  
  51.       AADD(aDispos,{xPadL( lTrim(Str(nA)),30),xPadL( lTrim(Str(aDev[1])),30 ),xPadL( lTrim(Str(aDev[2])),30 ),;
  52.                    xPadL( lTrim(Str(aDev[3])),30 ),xPadR( "  "+Left(aDev[4],20),200),;
  53.                    xPadL( lTrim(Str(aDev[5])),30 ),xPadL( lTrim(Str(aDev[6])),30 ),;
  54.                    xPadL( lTrim(Str(nVolL  )),60 ),xPadL( lTrim(Str(nVolR  )),60 )}  )
  55.    Next nA   
  56.  
  57.    if Len( aDispos ) == 0
  58.       AAdd( aDispos, { "", "", "", "", "", "", "", "", "" } )
  59.    endif
  60.  
  61.    nDisp=1
  62.    @11,24 SAY " AUXILIARY DEVICES WITH VOLUMEN CONTROL : " BORDER PIXELS COLOR "R+/W" SIZE 360,18
  63.    @ 2, 3 LISTBOX oBrw FIELDS aDispos[nDisp,1],aDispos[nDisp,2],;
  64.                             aDispos[nDisp,3],aDispos[nDisp,4],;
  65.                             aDispos[nDisp,5],aDispos[nDisp,6],;
  66.                             aDispos[nDisp,7],aDispos[nDisp,8],;
  67.                             aDispos[nDisp,9] ;
  68.                             FIELDSIZES 40, 40, 40, 40, 210, 40, 40, 70, 70 ;
  69.                             HEADERS "DISP.","M.Id.","P.Id.","Ver","Name","Tech.","V.Supp","Lft. Vol.","Rght. Vol." ;
  70.                             OF oWnd SIZE 620,200
  71.  
  72.    // Some blocks for management the browse array
  73.  
  74.    oBrw:bLogicLen = { || Len( aDispos ) }
  75.  
  76.    oBrw:bGoTop    = { || nDisp := 1 }
  77.    oBrw:bGoBottom = { || nDisp := Len( aDispos ) }
  78.    oBrw:bSkip     = { | nWant, nDo | ;
  79.                       nDo := Min( Max( nWant, 1 - nDisp ), ;
  80.                       Len( aDispos ) - nDisp ), ;
  81.                       nDisp += nDo, nDo }
  82.  
  83.  
  84.    nMci=1
  85.    @19,20 SAY " MCI DEVICES INSTALLED :"  BORDER COLOR "R+/W" SIZE 200,18
  86.    @19,20 LISTBOX oBrw2 FIELDS aMciDev[nMci,1],aMciDev[nMci,2],;
  87.                               aMciDev[nMci,3],aMciDev[nMci,4], ;
  88.                               aMciDev[nMci,5] ;
  89.                               FIELDSIZES 40, 100, 100, 20,20  ;
  90.                               HEADERS "DISP.","Name","I.Name","N║","Op." ;
  91.                               OF oWnd SIZE 320,150
  92.  
  93.    // Some blocks for management the browse array
  94.  
  95.    oBrw2:bLogicLen = { || Len( aMciDev ) }
  96.  
  97.    oBrw2:bGoTop    = { || nMci := 1 }
  98.    oBrw2:bGoBottom = { || nMci := Len( aMciDev ) }
  99.    oBrw2:bSkip     = { | nWant, nDo | ;
  100.                       nDo := Min( Max( nWant, 1 - nMci ), ;
  101.                       Len( aMciDev ) - nMci ), ;
  102.                       nMci += nDo, nDo }
  103.  
  104.     ACTIVATE WINDOW oWnd
  105.  
  106.    SET RESOURCES TO
  107.  
  108.    FreeLibrary( hBorland )                // We have finish with it
  109.  
  110.    Return
  111.  
  112.  
  113. Function BuildMenu()
  114.    local oMenu
  115.  
  116.    MENU oMenu
  117.       MENUITEM "&Control CD" ;
  118.                 ACTION (CdAudio(),ActuVol(@aDispos),oBrw:Refresh() )
  119.       MENUITEM "&Control Wave" ;
  120.                 ACTION (WaveAudio(),ActuVol(@aDispos),oBrw:Refresh() )
  121.       MENUITEM "&Control AviVideo" ;
  122.                 ACTION (AviVideo(),ActuVol(@aDispos),oBrw:Refresh() )
  123.       MENUITEM "&Control MIDI" ;
  124.                 ACTION (Sequencer(),ActuVol(@aDispos),oBrw:Refresh() )
  125.       MENUITEM "&Salir" ACTION If( MsgYesNo( OemToAnsi( "¿ Desea terminar la Ejecución ?" ), ;
  126.                                              "Seleccione, por favor" ), ;
  127.                                    oWnd:End,)
  128.    ENDMENU
  129.  
  130. return oMenu
  131.  
  132. Function ActuVol(aDispos)
  133.    Local nA,nVolL:=0,nVolR:=0
  134.  
  135.    For nA=1 To AUXGETDEV()
  136.       AuxGetVol(nA-1,@nVolL,@nVolR)
  137.       aDispos[nA,8]=xPadL( lTrim(Str(nVolL  )),60 )
  138.       aDispos[nA,9]=xPadL( lTrim(Str(nVolR  )),60 )
  139.    Next nA
  140.    Return
  141.  
  142.  
  143. Function CdAudio()
  144.    Local cPrompt     // Declared to avoid array range error. See FOR loop
  145.    Local oDlg,lMute,lLeft,lRight,lOpen
  146.    Local oPLay,oStop,oAvTrack,oReTrack,oOpenClose,oSalir
  147.    Local oT1,oT2,oT3,oT4,oT5,oT6,oT7,oT8,oT9,oT10
  148.    Local oL1,oL2,oL3,oL4,oL5,oL6,oL7,oL8,l1,l2,l3,l4,l5,l6,l7,l8
  149.    Local cBuffer:=Space(200),oSBRight,oSBLeft,nVolR:=0,nVolL:=0
  150.    Local oTextLV,oTextRV
  151.    Local oTimer,oTracks[25]
  152.    Local aoStat[10],acStat[10]
  153.    Local nA,oFile,oType
  154.  
  155.    DEFINE DIALOG oDlg RESOURCE "CDAUDIO"
  156.    
  157.    mciSendStr("OPEN CDAUDIO",@cBuffer,oDlg:hWnd)
  158.    mciSendStr("SET CDAUDIO TIME FORMAT TMSF",@cBuffer,oDlg:hWnd)
  159.    
  160.     DEFINE TIMER oTimer INTERVAL 2000 ACTION (GetStat(@acStat,@oDlg),RefreshStat(@aoStat,@acStat))
  161.  
  162.    mciSendStr("CAPABILITY CDAUDIO CAN EJECT"      ,@cBuffer,oDlg:hWnd)
  163.    l1 :=  cBuffer=="verdadero"
  164.    mciSendStr("CAPABILITY CDAUDIO CAN PLAY"       ,@cBuffer,oDlg:hWnd)  
  165.    l2 := cBuffer=="verdadero"
  166.    mciSendStr("CAPABILITY CDAUDIO CAN RECORD"     ,@cBuffer,oDlg:hWnd)
  167.    l3 := cBuffer=="verdadero"
  168.    mciSendStr("CAPABILITY CDAUDIO CAN SAVE"       ,@cBuffer,oDlg:hWnd)
  169.    l4 := cBuffer=="verdadero"
  170.    mciSendStr("CAPABILITY CDAUDIO COMPOUND DEVICE",@cBuffer,oDlg:hWnd)
  171.    l5 := cBuffer=="verdadero"
  172.    mciSendStr("CAPABILITY CDAUDIO HAS AUDIO"      ,@cBuffer,oDlg:hWnd)
  173.    l6 := cBuffer=="verdadero"
  174.    mciSendStr("CAPABILITY CDAUDIO HAS VIDEO"      ,@cBuffer,oDlg:hWnd)
  175.    l7 := cBuffer=="verdadero"
  176.    mciSendStr("CAPABILITY CDAUDIO USES FILES"      ,@cBuffer,oDlg:hWnd)
  177.    l8 := cBuffer=="verdadero"
  178.  
  179.    REDEFINE BUTTON oPlay      ID 103 OF oDlg ACTION mciSendStr("PLAY CDAUDIO",@cBuffer,oDlg:hWnd)
  180.    REDEFINE BUTTON oStop      ID 109 OF oDlg ACTION mciSendStr("STOP CDAUDIO",@cBuffer,oDlg:hWnd)
  181.    REDEFINE BUTTON oAvTrack   ID 101 OF oDlg ACTION ( AvPista(@oDlg),mciSendStr("PLAY CDAUDIO",@cBuffer,oDlg:hWnd) )
  182.    REDEFINE BUTTON oReTrack   ID 106 OF oDlg ACTION ( RePista(@oDlg),mciSendStr("PLAY CDAUDIO",@cBuffer,oDlg:hWnd) )
  183.    REDEFINE BUTTON oOpenClose ID 107 OF oDlg ACTION OpenClose(@oDlg)
  184.    REDEFINE BUTTON oSalir     ID 115 OF oDlg ACTION ( mciSendStr("STOP CDAUDIO",@cBuffer,oDlg:hWnd),mciSendStr("CLOSE CDAUDIO",@cBuffer,oDlg:hWnd),oDlg:End() )
  185.  
  186.    REDEFINE CHECKBOX oL1 VAR l1 ID 150 OF oDlg
  187.    REDEFINE CHECKBOX oL2 VAR l2 ID 151 OF oDlg
  188.    REDEFINE CHECKBOX oL3 VAR l3 ID 152 OF oDlg
  189.    REDEFINE CHECKBOX oL4 VAR l4 ID 153 OF oDlg
  190.    REDEFINE CHECKBOX oL5 VAR l5 ID 154 OF oDlg
  191.    REDEFINE CHECKBOX oL6 VAR l6 ID 155 OF oDlg
  192.    REDEFINE CHECKBOX oL7 VAR l7 ID 156 OF oDlg
  193.    REDEFINE CHECKBOX oL8 VAR l8 ID 157 OF oDlg
  194.  
  195.    mciSendStr("CAPABILITY CDAUDIO DEVICE TYPE"      ,@cBuffer,oDlg:hWnd)
  196.    REDEFINE SAY oType PROMPT UPPER(cBuffer) ID 170 OF oDlg
  197.  
  198.    AuxGetVol(5,@nVolL,@nVolR)
  199.    REDEFINE SAY oTextLV PROMPT Str(nVolR) ID 122 OF oDlg
  200.    REDEFINE SAY oTextRV PROMPT Str(nVolR) ID 123 OF oDlg
  201.  
  202.    GetStat(@acStat,@oDlg)
  203.    For nA=1 TO LEN(aoStat)
  204.       cPrompt := acStat[nA]
  205.       REDEFINE SAY aoStat[nA] PROMPT cPrompt ID 160+(nA-1) OF oDlg
  206.    Next nA
  207.  
  208.    REDEFINE SCROLLBAR oSBRight ID 130 RANGE 0,32 ;
  209.     ON UP   (AuxGetVol(5,@nVolL,@nVolR),;
  210.              AuxSetVol(5,if(nVolL<63000,nVolL+2047,nVolL),nVolR),;
  211.              AuxGetVol(5,@nVolL,@nVolR),;
  212.              oTextLV:SetText(Str(nVolL)),oTextRV:SetText(Str(nVolR)) ) ;
  213.     ON DOWN (AuxGetVol(5,@nVolL,@nVolR),;
  214.              AuxSetVol(5,if(nVolL>2047,nVolL-2047,nVolL),nVolR),;
  215.              AuxGetVol(5,@nVolL,@nVolR),;
  216.              oTextLV:SetText(Str(nVolL)),oTextRV:SetText(Str(nVolR)) )  OF oDlg
  217.  
  218.    REDEFINE SCROLLBAR oSBLeft  ID 131 RANGE 0,32 ;
  219.     ON UP  (AuxGetVol(5,@nVolL,@nVolR),;
  220.             AuxSetVol(5,nVolL,if(nVolR<63000,nVolR+2040,nVolR)),;
  221.             AuxGetVol(5,@nVolL,@nVolR),;
  222.             oTextLV:SetText(Str(nVolL)),oTextRV:SetText(Str(nVolR)) ) ;
  223.     ON DOWN (AuxGetVol(5,@nVolL,@nVolR),;
  224.              AuxSetVol(5,nVolL,if(nVolR>2047,nVolR-2040,nVolR)),;
  225.              AuxGetVol(5,@nVolL,@nVolR),;
  226.              oTextLV:SetText(Str(nVolL)),oTextRV:SetText(Str(nVolR)) ) OF oDlg
  227.  
  228.    // Botones de Acceso Directo a las Pistas.
  229.  
  230.    REDEFINE BUTTON oTracks[ 1] ID 201 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 1",@cBuffer,oDlg:hWnd)
  231.    REDEFINE BUTTON oTracks[ 2] ID 202 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 2",@cBuffer,oDlg:hWnd) 
  232.    REDEFINE BUTTON oTracks[ 3] ID 203 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 3",@cBuffer,oDlg:hWnd)
  233.    REDEFINE BUTTON oTracks[ 4] ID 204 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 4",@cBuffer,oDlg:hWnd) 
  234.    REDEFINE BUTTON oTracks[ 5] ID 205 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 5",@cBuffer,oDlg:hWnd) 
  235.    REDEFINE BUTTON oTracks[ 6] ID 206 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 6",@cBuffer,oDlg:hWnd)
  236.    REDEFINE BUTTON oTracks[ 7] ID 207 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 7",@cBuffer,oDlg:hWnd) 
  237.    REDEFINE BUTTON oTracks[ 8] ID 208 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 8",@cBuffer,oDlg:hWnd)
  238.    REDEFINE BUTTON oTracks[ 9] ID 209 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 9",@cBuffer,oDlg:hWnd) 
  239.    REDEFINE BUTTON oTracks[10] ID 210 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 10",@cBuffer,oDlg:hWnd) 
  240.    REDEFINE BUTTON oTracks[11] ID 211 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 11",@cBuffer,oDlg:hWnd)
  241.    REDEFINE BUTTON oTracks[12] ID 212 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 12",@cBuffer,oDlg:hWnd) 
  242.    REDEFINE BUTTON oTracks[13] ID 213 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 13",@cBuffer,oDlg:hWnd)
  243.    REDEFINE BUTTON oTracks[14] ID 214 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 14",@cBuffer,oDlg:hWnd) 
  244.    REDEFINE BUTTON oTracks[15] ID 215 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 15",@cBuffer,oDlg:hWnd) 
  245.    REDEFINE BUTTON oTracks[16] ID 216 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 16",@cBuffer,oDlg:hWnd)
  246.    REDEFINE BUTTON oTracks[17] ID 217 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 17",@cBuffer,oDlg:hWnd) 
  247.    REDEFINE BUTTON oTracks[18] ID 218 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 18",@cBuffer,oDlg:hWnd)
  248.    REDEFINE BUTTON oTracks[19] ID 219 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 19",@cBuffer,oDlg:hWnd) 
  249.    REDEFINE BUTTON oTracks[20] ID 220 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 20",@cBuffer,oDlg:hWnd) 
  250.    REDEFINE BUTTON oTracks[21] ID 221 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 21",@cBuffer,oDlg:hWnd)
  251.    REDEFINE BUTTON oTracks[22] ID 222 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 22",@cBuffer,oDlg:hWnd) 
  252.    REDEFINE BUTTON oTracks[23] ID 223 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 23",@cBuffer,oDlg:hWnd)
  253.    REDEFINE BUTTON oTracks[24] ID 224 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 24",@cBuffer,oDlg:hWnd) 
  254.    REDEFINE BUTTON oTracks[25] ID 225 OF oDlg ACTION mciSendStr("PLAY CDAUDIO FROM 25",@cBuffer,oDlg:hWnd) 
  255.  
  256.    ACTIVATE DIALOG oDlg ON INIT (oSBLeft:SetPos(nVolL/2047)==oSBRight:SetPos(nVolR/2047),oTimer:Activate()==Nil)
  257.  
  258.    RELEASE TIMER oTimer   
  259.  
  260.    RETURN Nil
  261.  
  262. Function GetStat(acStat,oDlg)
  263.    Local cBuffer:=Space(200),aMessages:={"STATUS CDAUDIO MODE",;
  264.                                          "STATUS CDAUDIO CURRENT TRACK",;
  265.                                          "STATUS CDAUDIO LENGTH",;
  266.                                          "STATUS CDAUDIO LENGTH TRACK",;
  267.                                          "STATUS CDAUDIO TIME FORMAT",;
  268.                                          "STATUS CDAUDIO START POSITION",;
  269.                                          "STATUS CDAUDIO MEDIA PRESENT",;
  270.                                          "STATUS CDAUDIO NUMBER OF TRACKS",;
  271.                                          "STATUS CDAUDIO POSITION",;
  272.                                          "STATUS CDAUDIO READY"}
  273.    Local nA,cActTrack
  274.  
  275.    For nA=1 TO Len(aMessages)
  276.       mciSendStr(aMessages[nA]+If(nA=4,cActTrack,"" ),@cBuffer,oDlg:hWnd)
  277.       Do Case
  278.          Case nA=3 .or. nA=4
  279.             acStat[nA]=Left(Upper(trim(cBuffer)),5)
  280.          Case nA=6 .or. nA=9
  281.             acStat[nA]=Left(Upper(trim(cBuffer)),8)
  282.          OtherWise
  283.             acStat[nA]=Upper(trim(cBuffer))
  284.       EndCase
  285.  
  286.       If nA=2
  287.          cActTrack=" "+lTrim(Str(Val(cBuffer)))
  288.       Endif
  289.    Next nA
  290.    Return
  291.  
  292. Function RefreshStat(aoStat,acStat)
  293.    Local nA
  294.    
  295.    For nA=1 to Len(aoStat)
  296.       aoStat[nA]:SetText(acStat[nA])
  297.    Next nA
  298.    Return
  299.  
  300.  
  301. Function ActPista(oDlg)
  302.    Local nActPista,cBuffer:=Space(200)
  303.  
  304.    mciSendStr("STATUS CDAUDIO CURRENT TRACK",@cBuffer,oDlg:hWnd)
  305.    nActPista=Val(cBuffer)
  306.  
  307.    Return "TRACK : "+Ltrim(Str(nActPista))
  308.  
  309.  
  310. Function OpenClose(oDlg)
  311.    Local cStatus,cBuffer:=Space(200)
  312.  
  313.    mciSendStr("STATUS CDAUDIO MODE",@cBuffer,oDlg:hWnd)
  314.  
  315.    If Upper(cBuffer)="ABIERTO" //.or. Empty(Upper(cBuffer))
  316.       mciSendStr("SET CDAUDIO DOOR CLOSED",@cBuffer,oDlg:hWnd)
  317.    Else
  318.       mciSendStr("SET CDAUDIO DOOR OPEN",@cBuffer,oDlg:hWnd)
  319.    Endif
  320.   
  321.    Return
  322.  
  323.  
  324. Function AvPista(oDlg)
  325.    Local nActPista,cBuffer:=Space(200)
  326.  
  327.    mciSendStr("STATUS CDAUDIO CURRENT TRACK",@cBuffer,oDlg:hWnd)
  328.    nActPista=Val(cBuffer)
  329.  
  330.    mciSendStr("SEEK CDAUDIO TO "+ltrim(Str(nActPista+1)),@cBuffer,oDlg:hWnd)
  331.   
  332.    Return
  333.  
  334. Function RePista(oDlg)
  335.    Local nActPista,cBuffer:=Space(200)
  336.  
  337.    mciSendStr("STATUS CDAUDIO CURRENT TRACK",@cBuffer,oDlg:hWnd)
  338.    nActPista=Val(cBuffer)
  339.  
  340.    mciSendStr("SEEK CDAUDIO TO "+ltrim(Str(nActPista-1)),@cBuffer,oDlg:hWnd)
  341.    
  342.    Return
  343.