IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Problème avec BEGIN_MESSAGE_MAP


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2016
    Messages : 49
    Points : 25
    Points
    25
    Par défaut Problème avec BEGIN_MESSAGE_MAP
    Bonjour,

    Je suis en train d'essayer de programmer un petit logiciel qui capture le son du microphone pour ensuite l'enregistrer en fichier WAV.

    Pour ça, j'utiliser un petit tutoriel ( ainsi que les documentations ): Tutoriel ( la c'est la partie 3, donc enregistrement, mais il y a les autres bien entendu )

    La seule différence est que je n'utilise pas de classes pour faire mon code... Mais jusque là tout avais fonctionner.

    J'ai donc ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    #include <windows.h>
    #include <mmsystem.h>
     
    BEGIN_MESSAGE_MAP()
       ON_MESSAGE(MM_WIM_DATA, OnMyMessage)
    END_MESSAGE_MAP()
     
    afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
     
    LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam)
    {
    	UNREFERENCED_PARAMETER(wParam);
    	UNREFERENCED_PARAMETER(lParam);
    	return 0;
    }
     
    LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
    	switch(Message) {
    		case WM_DESTROY: {
    			PostQuitMessage(0);
    			break;
    		}
    		default:
    			return DefWindowProc(hwnd, Message, wParam, lParam);
    	}
    	return 0;
    }
     
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    	WNDCLASSEX wc;
    	HWND hwnd;
    	MSG msg;
    	memset(&wc, 0, sizeof(wc));
    	wc.cbSize		 = sizeof(WNDCLASSEX);
    	wc.lpfnWndProc	 = WndProc;
    	wc.hInstance	 = hInstance;
    	wc.hCursor		 = LoadCursor(NULL, IDC_ARROW);	
    	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    	wc.lpszClassName = "WindowClass";
    	wc.hIcon		 = LoadIcon(NULL, IDI_APPLICATION);
    	wc.hIconSm		 = LoadIcon(NULL, IDI_APPLICATION);
    	if(!RegisterClassEx(&wc)) {
    		MessageBox(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK);
    		return 0;
    	}
    	hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, "WindowClass", "Microphone Recorder", WS_VISIBLE | WS_OVERLAPPEDWINDOW,
    		CW_USEDEFAULT,
    		CW_USEDEFAULT,
    		640,
    		480,
    		NULL, NULL, hInstance, NULL);
    	if(hwnd == NULL) {
    		MessageBox(NULL, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK);
    		return 0;
    	}
    	WAVEFORMATEX WaveFormat;
    	HWAVEIN WaveHandle;
    	WAVEHDR WaveHeader;
    	WaveFormat.wFormatTag = WAVE_FORMAT_PCM;
    	WaveFormat.nChannels = 1;
    	WaveFormat.nSamplesPerSec = 22050;
    	WaveFormat.wBitsPerSample = 8;
    	WaveFormat.nAvgBytesPerSec = 22050;
    	WaveFormat.nBlockAlign = 1;
    	WaveFormat.cbSize = 0;
    	int Res = waveInOpen(&WaveHandle, WAVE_MAPPER, &WaveFormat, 0, 0, WAVE_FORMAT_QUERY);
    	if (Res == WAVERR_BADFORMAT) return 1;
    	Res = waveInOpen(&WaveHandle, WAVE_MAPPER, &WaveFormat, MAKELONG(hwnd, 0), 0, CALLBACK_WINDOW);
    	char* WaveData;
    	int BufferSize;
    	BufferSize = 10 * 22050;
    	WaveData = new char[BufferSize];
    	WaveHeader.dwBufferLength = BufferSize;
    	WaveHeader.dwFlags = 0;
    	WaveHeader.lpData = WaveData;
    	Res = waveInPrepareHeader(WaveHandle, &WaveHeader, sizeof(WAVEHDR));
    	Res = waveInAddBuffer(WaveHandle, &WaveHeader, sizeof(WAVEHDR));
    	while(GetMessage(&msg, NULL, 0, 0) > 0) {
    		TranslateMessage(&msg);
    		DispatchMessage(&msg);
    	}
    	return msg.wParam;
    }
    Et la partie qui pose problème est celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    BEGIN_MESSAGE_MAP()
       ON_MESSAGE(MM_WIM_DATA, OnMyMessage)
    END_MESSAGE_MAP()
    Dans le tutoriel à la place de "ON_MESSAGE", on devrais avoir "MESSAGE_HANDLER", mais ni l'un ni l'autre ne fonctionne... J'ai donc regarder la documentation et j'ai mis "ON_MESSAGE" mais ça ne fonctionne pas non plus. ( Documentation ) Si vous regardez bien, j'ai même essayer de mettre le code de la documentation directement pour essayer...

    Le code d'erreur que j'obtient dans tout les cas est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [Error] excepted constructor, destructor, or type conversion before 'ON_MESSAGE'
    Quelqu'un aurais-t-il une idée ??

    ( N.B: Une précision importante, j'utiliser Dev-C++, je sais que ce n'est pas un logiciel mis à jour, mais je ne peut utiliser que ça à cause de mon ordinateur... )

    Merci,

    EyesGammer

  2. #2
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    décembre 2015
    Messages
    1 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : décembre 2015
    Messages : 1 244
    Points : 6 066
    Points
    6 066
    Par défaut
    Bonjour,

    Je ne connais pas ce système. Le seule chose que je t'indiquer est que l'exemple que tu donnes ne peut pas marcher. La ligne 9 doit être déplacée avant la ligne 5 pour que ça ait un sens.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2016
    Messages : 49
    Points : 25
    Points
    25
    Par défaut
    D'accord, j'ai déjà fait cette modification, en revanche j'ai deux erreurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    'afx_msg' does not name a type
    et toujours la même erreur qu'avant,

    Merci,

    EyesGammer

  4. #4
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    décembre 2015
    Messages
    1 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : décembre 2015
    Messages : 1 244
    Points : 6 066
    Points
    6 066
    Par défaut
    Cette erreur indique qu'il ne connait le type afx_msg. Il doit te manquer un include qui s'appelle par exemple "afx.h". Il faut retrouver le bon exemple.

    En fait si tu n'utilise pas afx, il te suffit de supprimer ce mot afx_msg.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2016
    Messages : 49
    Points : 25
    Points
    25
    Par défaut
    Oui en effet c'est la librairie afx...

    Bon je passe le sujet en résolu, je ne peut tout simplement pas utiliser Dev-C++ pour faire mon projet...

    Merci,

    EyesGammer

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/01/2007, 18h52
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 12h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 19h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 17h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo