Avatar billede grantgreen Nybegynder
13. december 2002 - 12:13 Der er 6 kommentarer og
1 løsning

waveInOpen

Hej
Jeg har skrevet et program i MFC, der læser fra lydkortets input port, og analyserer disse mm.
Jeg har oplevet problemer med at bruge en callback funktion i funktionskaldet
waveInOpen(MMRESULT waveInOpen(LPHWAVEIN phwi, UINT uDeviceID, LPCWAVEFORMATEX pwfx, DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen )
Den fjerde parameter skal have adressen på min callback funktion, men dette giver fejl når programmet eksekveres, altså kan det godt kompileres.
Er der nogle der har erfaring med denne problematik ?
Jeg kan ikke se hvorfor det overhovedet skal give problemer, men det gør det ?
Kan nolge hjælpe med det ?
Avatar billede doctorseb Nybegynder
14. december 2002 - 20:48 #1
Jeg går ud fra, at du har dobbelt-checket at din callback har de rigtige parametre, men har du husket at erklære den som __stdcall (det samme som CALLBACK i dokumentationen)? Compileren checker det ikke for dig...

/doctorseb!
Avatar billede grantgreen Nybegynder
14. december 2002 - 23:35 #2
undskyld...
den ser ud som dette :
result = waveInOpen(&hWaveIn,WAVE_MAPPER,&pFormat,(DWORD)&WaveProc, 0L, CALLBACK_FUNCTION);

callback funktionen er erklærtet static
Avatar billede doctorseb Nybegynder
15. december 2002 - 12:37 #3
Hvordan ser erklæringen af WaveProc ud? Det er ikke nok, at du laver den static (hvad enten den bor i en klasse eller globalt).
Avatar billede grantgreen Nybegynder
15. december 2002 - 21:12 #4
den ser ud som flg.
static void CALLBACK WaveProc(HWAVEIN hWaveIn, UINT message, WPARAM wParam, LPARAM lParam);
Avatar billede grantgreen Nybegynder
15. december 2002 - 21:18 #5
jeg har fundet fejlen...
Skal se ud som flg.
static void CALLBACK waveInProc(  HWAVEIN hWaveIn, UINT uMsg, DWORD dwInstance,DWORD dwParam1, DWORD dwParam2 );
Tak for hjælpen....
Avatar billede doctorseb Nybegynder
15. december 2002 - 21:19 #6
Øh... det ser ud til at du mangler en parameter. I min dokumentation ser den altså ud:

void CALLBACK waveInProc(
  HWAVEIN hwi,     
  UINT uMsg,       
  DWORD dwInstance, 
  DWORD dwParam1,   
  DWORD dwParam2   
);
Avatar billede doctorseb Nybegynder
15. december 2002 - 21:20 #7
Der var du sgu' for hurtig :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester