19. oktober 2003 - 21:37Der er
10 kommentarer og 1 løsning
Put en fil i mit program.
Hey hallo...
Jeg ska til at lave et lille joke program og mangle noget kode som gør at jeg kan putte en midi fil ind i mit program og afspille den når programmet starter?
Du kan gøre det ved hjælp af DirectX... Her har jeg lavet en simpel form med 2 CommandButtons..."Afspil" & "Stop" Du kan sikkert selv regne ud hvad du skal bruge til dit projekt og hvor... =;o) Ellers spørger du bare.
! HUSK ! Du skal lave en reference til DirectX i dit projekt under menuen "Project\References", hvor du afkrydser ""DirectX 7 for Visual Basic Type Library"
************HER KOMMER KODEN****************
Option Explicit Public DX As New DirectX7 'Husk at refererer dette i menuen "References" Public Loader As DirectMusicLoader 'Dette indlæser midi-filen Public Preformance As DirectMusicPerformance 'Denne kontrol indeholder musikken Public Segment As DirectMusicSegment 'Dette indlæser midi-filen i hukommelsen
'Initialisering af alle DirectX objekterne Sub InitProg() Set Loader = DX.DirectMusicLoaderCreate Set Preformance = DX.DirectMusicPerformanceCreate Preformance.Init Nothing, hWnd Preformance.SetPort -1, 1 Preformance.SetMasterAutoDownload True End Sub
Sub LoadMIDI(FileName As String) Set Segment = Loader.LoadSegment(FileName) 'Load midi If Err.Number <> DD_OK Then MsgBox "Fejl: Kunne ikke loade MIDI fil!", vbExclamation, "FEJL!" 'Fejlmeddelelse til bruger. End Sub
Sub PlayMIDI() Preformance.PlaySegment Segment, 0, 0 'Afspil segment End Sub
Sub StopMIDI() Preformance.Stop Segment, Nothing, 0, 0 'Stop afspilning af midi End Sub
Synes godt om
Slettet bruger
20. oktober 2003 - 14:39#2
Jeg vil gerne have puttet midi filen ind i mit program... sådan at jeg ikk ska have den læggne låst ved siden af mit program...
Jeg tror godt jeg ved hvad du tænker på nu... Du skal lave en Ressource-fil i C++, som du så skal refererer til i dit projekt. Når du så compiler dit program, bliver midi-filen embedded i din .exe-fil. Jeg ved godt hvordan man gør, men jeg kan ikke rigtig få det til at fungere med en midi-fil...desværre kun .wav.
Synes godt om
Slettet bruger
21. oktober 2003 - 19:20#5
Har du noget kode??? Har fundet Resource Editor i VB 6...
'Denne kode er nogle globale deklariationer som du putter ind i et modul (.bas)
Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long Public Const SND_SYNC = &H0 ' Afspil synkront (default) Public Const SND_ASYNC = &H1 ' Afspil asynkront Public Const SND_MEMORY = &H4 ' Afspil fra Hukommelse (fra en String) Public Const SND_LOOP = &H8 ' loop afspilning indtil næste sndPlaySound kommando Public Const SND_NOSTOP = &H10 ' Stop ikke nuværende afspilning
'Herefter sætter du dette ind i en form med 2 Commandbuttons
Option Explicit
Dim Adresse As String Dim Flag As Long
Private Sub PlayResSound(Res_Id As String, File_Type As String) On Error GoTo ErrHand Adresse = StrConv(LoadResData(Res_Id, File_Type), vbUnicode) sndPlaySound Adresse, Flag Exit Sub ErrHand: MsgBox "Kan ikke afspille lyden" End Sub
Private Sub Command1_Click() Flag = SND_ASYNC Or SND_MEMORY Call PlayResSound("LYD1", "WAVE") End Sub
Private Sub Command2_Click() Flag = SND_ASYNC Or SND_MEMORY Call PlayResSound("LYD2", "WAVE") End Sub
Private Sub Form_Load() Flag = SND_ASYNC Or SND_MEMORY Call PlayResSound("LYD1", "WAVE") 'her afspilles lyd 1 ved start af program End Sub
'HUSK at indsætte din ressource-fil (.res) som et relateret dokument under "project/Add file..." 'Har du problemer med at oprette din ressource-fil med tilhørende .wav, så sig til...god fornøjelse
Tak for point. Jeg kan ikke svare på dit følgespørgsmål, men det er en ret interessant problemstilling...tror jeg vil følge lidt med hvad der sker =:o)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.