• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Codejie's C++ Space

            Using C++

            DSound的更新,以支持SetCurrentPosition功能

                查看了DirectSound的MSDN文檔,才發(fā)現(xiàn)DirectSoundBuffer的Primary Buffer和Second Buffer還是有很大區(qū)別的,就像SetCurrentPosition函數(shù)不支持Primary Buffer。
                這里是MSDN上的說明:
            IDirectSoundBuffer8::SetCurrentPosition

            IDirectSoundBuffer8::SetCurrentPosition

            The SetCurrentPosition method sets the position of the play cursor, which is the point at which the next byte of data is read from the buffer.

            HRESULT SetCurrentPosition(
            DWORD dwNewPosition
            );

            Parameters

            dwNewPosition
            Offset of the play cursor, in bytes, from the beginning of the buffer.

            Return Values

            If the method succeeds, the return value is DS_OK. If the method fails, the return value may be one of the following error values:

            Return code
            DSERR_INVALIDCALL
            DSERR_INVALIDPARAM
            DSERR_PRIOLEVELNEEDED

            Remarks

            This method cannot be called on the primary buffer.

            If the buffer is playing, the cursor immediately moves to the new position and play continues from that point. If it is not playing, playback will begin from the new position the next time the Play method is called.



                相應(yīng)代碼修改如下,用于建立新的DirectSoundBuffer8對象。
             1 int CDSoundObject::CreateDSoundBuffer()
             2 {
             3     IDirectSoundBuffer* psbuffer = NULL;
             4 
             5     DSBUFFERDESC desc;
             6     memset(&desc, 0sizeof(DSBUFFERDESC));
             7     desc.dwSize = sizeof(DSBUFFERDESC);
             8     desc.dwFlags = DSBCAPS_GLOBALFOCUS | DSBCAPS_CTRLVOLUME | DSBCAPS_CTRLPOSITIONNOTIFY | DSBCAPS_LOCSOFTWARE;
             9     desc.dwBufferBytes = CDSoundObject::SIZE_DS_BUFFER;//header.data_size;
            10     desc.lpwfxFormat = &_fmtWave;
            11 
            12     if(_pDSBuffer != NULL)
            13         _pDSBuffer->Release();
            14 
            15     HRESULT hr = _pDS->CreateSoundBuffer(&desc, &psbuffer, NULL);
            16     if(hr != DS_OK)
            17         return -1;
            18     hr = psbuffer->QueryInterface(IID_IDirectSoundBuffer8, (void**)&_pDSBuffer);
            19     psbuffer->Release();
            20     if(hr != DS_OK)
            21         return -1;
            22 
            23     return 0;
            24 }


            posted on 2009-03-27 10:10 codejie 閱讀(926) 評論(0)  編輯 收藏 引用 所屬分類: C++

            公告

            Using C++

            導(dǎo)航

            統(tǒng)計

            留言簿(73)

            隨筆分類(513)

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            香蕉久久夜色精品升级完成| 成人亚洲欧美久久久久| 伊人久久五月天| 久久国产免费直播| 伊人久久大香线蕉AV一区二区| 久久综合综合久久综合| 久久乐国产精品亚洲综合| 无码人妻少妇久久中文字幕蜜桃| 欧美激情精品久久久久久久九九九 | 久久久久久国产精品无码下载 | 久久久亚洲精品蜜桃臀| 久久久一本精品99久久精品88| 欧美亚洲日本久久精品| 国产亚洲欧美成人久久片| 国产农村妇女毛片精品久久| 久久综合精品国产二区无码| 国产精品伊人久久伊人电影| 日本精品一区二区久久久| 色综合久久中文字幕无码| 一本色道久久88加勒比—综合| 久久精品国产91久久麻豆自制 | 伊人久久大香线蕉影院95| 国产成人精品久久| 欧美国产成人久久精品| 人妻无码久久精品| 久久人人添人人爽添人人片牛牛 | 人妻系列无码专区久久五月天| 国产成人精品久久综合| 久久久久无码精品国产app| 久久久久国产一区二区三区| 久久久久久久久久免免费精品| 少妇人妻88久久中文字幕| 久久久精品人妻一区二区三区四| 97久久超碰国产精品旧版| 国产亚洲婷婷香蕉久久精品| 久久夜色精品国产亚洲| 老司机国内精品久久久久| 九九精品久久久久久噜噜| 久久夜色精品国产噜噜麻豆| 久久免费视频网站| 久久人人爽人人爽人人片av麻烦|