如题,我现在的做法是首先用createthread创建一个handle 然后传进waveInOpen里, 但是这个线程里接收不到MM_WIM_这些消息, 直接在GetMessage里阻塞了, 而我用PostThreadMessage它是接的到的.
那个线程里是这样接消息的:
PeekMessage(&msg, NULL,0,0,PM_REMOVE); while(GetMessage(&msg,NULL,0,0)) 
{   
switch(msg.message)   
{   
case MM_WIM_OPEN:
                 ...
                break;
         }
btw 有没有waveInOpen用CALLBACK_THREAD的例子啊

解决方案 »

  1.   

    http://download.csdn.net/detail/robertbaker/5019096
      

  2.   

    你用PeekMessage不是已经把消息去掉了吗?GetMessage取不到消息自然阻塞了。
      

  3.   

    while ( !m_bQuit )
        {
            MSG msg;        if ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ))
            {
                if ( WIM_DATA == msg.message )
                {
                    WAVEHDR* pwh = ( WAVEHDR* )msg.lParam;                // do something...
                    
                    waveInPrepareHeader( m_hWavIn, pwh, sizeof( WAVEHDR ));                waveInAddBuffer( m_hWavIn, pwh, sizeof( WAVEHDR ));
                }
            }        Sleep( 10 );
        }