Трухильо Стэн
Шрифт:
Наконец, функция ShowDialog выводит диалоговое окно для выбора AVI-файла и ожидает ввод от пользователя. Однако перед тем, как обсуждать ShowDialog, необходимо рассмотреть функцию SelectInitialDisplayMode, которая вызывается при использовании функции OnCreate класса DirectDrawWin.
Как упоминалось выше, функция SelectInitialDisplayMode решает три задачи. Она выглядит так:
Перед тем как выполнять свою основную задачу (выбор исходного видеорежима), функция SelectInitialDisplayMode вызывает функцию GetSystemPalette. В свою очередь GetSystemPalette создает палитру DirectDraw на базе текущей палитры Windows. Эта палитра обеспечивает правильный вывод диалогового окна независимо от того, какая палитра была установлена для воспроизведения ролика. Вспомните — GDI ничего не знает о DirectDraw и поэтому всегда пытается вывести диалоговое окно с использованием системной палитры, несмотря на то что она могла быть переопределена DirectDraw.
Затем функция SelectInitialDisplayMode перебирает список доступных видеорежимов и сохраняет описания 8-битных режимов в массиве displaymodes. Позднее этот массив передается диалоговому окну для вывода списка доступных видеорежимов.
Наконец, функция ищет 8-битный режим с разрешением 640x480. Этот режим выбран лишь потому, что он поддерживается абсолютным большинством видеокарт (если не всеми). После вывода диалогового окна пользователь сможет выбрать любой другой 8-битный режим.
Давайте рассмотрим функцию для вывода диалогового окна. Функция ShowDialog приведена в листинге 8.2.
Листинг 8.2. Функция ShowDialog