Recherche d’un sous-bloc
L’exemple suivant utilise la fonction mmioDescend pour rechercher le bloc « OGF » dans le bloc « RIFF » de l’exemple précédent.
// 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.
Pour rechercher un sous-bloc (autrement dit, tout segment autre qu’un bloc « RIFF » ou « LIST »), identifiez son bloc parent dans le paramètre lpckParent de la fonction mmioDescend .
Si vous ne spécifiez pas de bloc parent, la position actuelle du fichier doit se trouver au début d’un bloc avant d’appeler la fonction mmioDescend . Si vous spécifiez un bloc parent, la position actuelle du fichier peut se trouver n’importe où dans ce bloc.
Si la recherche d’un sous-bloc échoue, la position du fichier actuelle n’est pas définie. Vous pouvez utiliser la fonction mmioSeek et le membre dwDataOffset de la structure MMCKINFO décrivant le bloc parent pour revenir au début du bloc parent, comme dans l’exemple suivant :
mmioSeek(hmmio, mmckinfoParent.dwDataOffset + 4, SEEK_SET);
Étant donné que dwDataOffset spécifie le décalage au début de la partie de données du bloc, vous devez rechercher 4 octets après dwDataOffset pour définir la position du fichier après le type de formulaire.