MFC中PeekMessage的使用,非阻塞消息循環

    在程序設計的時候常常要進行一個數據循環,好比播放音樂須要循環的向緩衝區裏面寫入數據,在這個時候比較通用的方法是創建一個線程作事情,可是有時候不想建立多線程就能夠使用微軟提供的PeekMessage方法,使用起來很簡單,以下windows

while(waveOutUnprepareHeader((HWAVEOUT)hWaveOut, lpWaveHdr, sizeof(WAVEHDR))!= MMSYSERR_NOERROR)
        {
            //循環清除緩衝區,若是成功表示播放完畢
            //若是沒有播放完畢則循環下面語句
            if(bExit)
                break;//讓循環也能夠響應消息
            MSG message; 
            if(::PeekMessage (&message,NULL,0,0,PM_REMOVE)) 
            { 
                ::TranslateMessage (&message); 
                ::DispatchMessage (&message); 
            } 
        }

經過這個方法就可以不阻塞windows的消息循環,從消息隊列中取出消息並手動的進行轉發,over多線程

相關文章
相關標籤/搜索