在程序設計的時候常常要進行一個數據循環,好比播放音樂須要循環的向緩衝區裏面寫入數據,在這個時候比較通用的方法是創建一個線程作事情,可是有時候不想建立多線程就能夠使用微軟提供的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多線程