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)?