Шаг 2 - Обработка ошибок

Как уже было сказано, функции MCI возвращают код ошибки при неудачном их выполнении. И тутже возникает вопрос: "а куда, собственно, девать этот код?". Здесь нам на помощь приходит другая функция - mciGetErrorString(), которая по коду ошибки выводит ее текстовое описание. Вот как она выглядит:

BOOL mciGetErrorString(DWORD fdwError,
	LPTSTR lpszErrorText,
	UINT cchErrorText)

где:

Как и большинство функций, она тоже возвращает результат своей деятельности. Если она вернула TRUE, то можно расслабиться и посмотреть, что же натворила функция находящаяся перед ней. Иначе (FALSE) придется поднопрячь извилины, потому что наша функция не смогла определить причину возникновения ошибки.

Давайте рассмотрим конкретный пример, где все встанет на свои места.

#include "stdafx.h"
#include <mmsystem.h>

void main()
{
	const int cchErrorText = 128;
	char lpszErrorText[cchErrorText];
	DWORD fdwError = mciSendString("play c:\\windows\\tada.wav wait", NULL, 0, NULL);
	if (fdwError)
	{
		BOOL dummy = mciGetErrorString(fdwError, lpszErrorText, cchErrorText);
		if (dummy)
			printf("%s\n", lpszErrorText);
		else
			printf("напряги извилины :-)");
	}
}

Я специально указал неверный путь до файла, чтобы сработала наша функция. Все очень просто...правда?


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Владимир Потапов.