搜索 Subchunk
以下示例使用 mmioDescend 函数在上一个示例的“RIFF”区块中搜索“FMT”区块。
// Find the format chunk (form type "FMT"); it should be
// a subchunk of the "RIFF" parent chunk.
mmckinfoSubchunk.ckid = mmioFOURCC('f', 'm', 't', ' ');
if (mmioDescend(hmmio, &mmckinfoSubchunk, &mmckinfoParent,
MMIO_FINDCHUNK))
// Error, cannot find the "FMT" chunk.
else
// "FMT" chunk found.
若要搜索子 (即“RIFF”或“LIST”区块) 以外的任何区块,请在 mmioDescend 函数的 lpckParent 参数中标识其父区块。
如果未指定父区块,在调用 mmioDescend 函数之前,当前文件位置应位于区块的开头。 如果指定父区块,则当前文件位置可以位于该区块中的任意位置。
如果搜索子丘克失败,则当前文件位置未定义。 可以使用 mmioSeek 函数和描述父区块的 MMCKINFO 结构的 dwDataOffset 成员来回溯到父区块的开头,如以下示例所示:
mmioSeek(hmmio, mmckinfoParent.dwDataOffset + 4, SEEK_SET);
由于 dwDataOffset 指定到区块数据部分开头的偏移量,因此必须查找 dwDataOffset 之后的 4 个字节,以在窗体类型之后设置文件位置。