Bonjour,
Comment convertir : afx_msg void OnMM_WIM_DATA(UINT parm1, LONG parm2); pour ne pas utiliser les MFC?
J'ai essayé de comprendre le but des afxmsg...je ne vois toujours pas.
Merci
Version imprimable
Bonjour,
Comment convertir : afx_msg void OnMM_WIM_DATA(UINT parm1, LONG parm2); pour ne pas utiliser les MFC?
J'ai essayé de comprendre le but des afxmsg...je ne vois toujours pas.
Merci
salut,
je ne comprends pas la question .
quel est le but ?
:D
Mon but est de transformer tout le programme MFC en simple win32
pour cela, je ne comprend pas l'utilité ni le fonction d'un AFX message
Déclaration de la class principale
La class Csoundin herite de la class Cwinthread...Code:
1
2
3
4
5
6
7
8
9
10
11
12 CSoundIn::CSoundIn() { m_QueuedBuffers = 0; m_hRecord = NULL; m_bRecording = false; DataFromSoundIn = NULL; m_pOwner = NULL; CreateThread(); m_bAutoDelete = false; }
Je suppose que le ON_THREAD_MESSAGE démarre quand la fonction On WIM_DATA quand il recoit un message de MM_WIM_DATA???Code:
1
2
3
4
5
6
7 BEGIN_MESSAGE_MAP(CSoundIn, CWinThread) //{{AFX_MSG_MAP(CSoundIn) // NOTE - the ClassWizard will add and remove mapping macros here. //}}AFX_MSG_MAP ON_THREAD_MESSAGE(MM_WIM_DATA, OnMM_WIM_DATA) END_MESSAGE_MAP()
Ca c la fonction qui ouvre le port...
Code:
1
2 mmReturn = ::waveInOpen( &m_hRecord, WAVE_MAPPER, &m_Format, m_ThreadID, NULL, CALLBACK_THREAD);
Fonction qui realise le travail principal, recup buffer du port audio ...
Mon problème aujourd'hui c'est que je veux utiliser les threads win32, que je maitrise pas, il faut donc convertir le code,Code:
1
2
3
4
5
6
7
8
9
10
11 afx_msg void OnMM_WIM_DATA(UINT parm1, LONG parm2); void CSoundIn::OnMM_WIM_DATA(UINT parm1, LONG parm2) { ... }
Je propose
Code:
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 class CWorkerThread { public: CWorkerThread() { m_dwID = 0; m_hThread = 0; } ~CWorkerThread() { CloseHandle(m_hThread); } bool InitThread() { m_hThread = CreateThread(0, 0, ThreadFunc, this, 0, &m_dwID); if(!m_hThread) { // Impossible de créer le thread ! return false; } return true; } public: DWORD GetCurrentThreadId(); private: DWORD m_dwID; HANDLE m_hThread; static DWORD WINAPI ThreadFunc(LPVOID pvParam); }; DWORD WINAPI CWorkerThread::ThreadFunc(LPVOID pvParam) { CWorkerThread *pThis=reinterpret_cast< CWorkerThread *>( pvParam) ; // le code !! return 0; } DWORD CWorkerThread ::GetCurrentThreadId() { return m_dwID; }
Je peux tjours faire ??
Class Csoundin : public CWorkerThread
Comment mettre en place le lien qui existe avec le afx message... et le ON_THREAD_MESSAGE(MM_WIM_DATA, OnMM_WIM_DATA)?