2017-12-21 8 views
1

デバイスWinCE 5.0に問題があります。私はリソースから音を出す必要があります。WinCe PlaySoundが毎回動作しません

BOOL PlayResource (int lpName) 
{ 
    BOOL bRtn; 
    LPTSTR lpRes; 
    HANDLE hResInfo, hRes; 
    HINSTANCE  hInst = AfxGetInstanceHandle(); 

    // Find the wave resource. 
    hResInfo = FindResource (hInst, MAKEINTRESOURCE(lpName), L"WAVE"); 

    if (hResInfo == NULL) 
    { 
     filePlay = false; 
    return FALSE; 
    } 
    // Load the wave resource. 
    hRes = LoadResource (hInst, HRSRC(hResInfo)); 

    if (hRes == NULL) 
    { 
     filePlay = false; 
    return FALSE; 
    } 
    // Lock the wave resource and play it. 
    lpRes = (LPTSTR)LockResource (hRes); 

    if (lpRes != NULL) 
    { 
    bRtn = PlaySound(lpRes,GetModuleHandle(NULL), SND_MEMORY | SND_SYNC | SND_NODEFAULT); 
    DWORD err = GetLastError(); 
    Logger::getInstance().log(Logger::LOG_INFO, "PlaySound return: %d error: %d", bRtn, err); 
    } 
    else 
    bRtn = 0; 

    filePlay = false; 
    return bRtn; 
} 

PlaySoundは毎回機能しません。 bRtnは毎回1を返しますが、毎回サウンドは再生されません。 のGetLastError()すべての時間があなたもする必要はありません最後の場合には120

答えて

0

変更

bRtn = PlaySound(lpRes,GetModuleHandle(NULL), SND_MEMORY | SND_SYNC | SND_NODEFAULT); 

のいずれかに

bRtn = PlaySound(lpRes, NULL, SND_MEMORY | SND_SYNC | SND_NODEFAULT); 

または

bRtn = PlaySound(MAKEINTRESOURCE(lpName), hInst, SND_RESOURCE | SND_SYNC | SND_NODEFAULT); 

にコードを取得しますPlaySoundを呼び出す前にサウンドをメモリにロードしてください。

関連する問題