Стэн Трухильо - Графика для Windows средствами DirectDraw

Здесь есть возможность читать онлайн «Стэн Трухильо - Графика для Windows средствами DirectDraw» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Графика для Windows средствами DirectDraw: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Графика для Windows средствами DirectDraw»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Графика для Windows средствами DirectDraw — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Графика для Windows средствами DirectDraw», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

AviPlayWin();

protected:

//{{AFX_MSG(AviPlayWin)

afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);

afx_msg void OnRButtonDown(UINT nFlags, CPoint point);

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

afx_msg void OnDestroy();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

private:

int SelectInitialDisplayMode();

BOOL CreateCustomSurfaces() {

return TRUE;

}

void DrawScene();

void RestoreSurfaces();

void GetSystemPalette();

void ShowDialog();

BOOL LoadAvi();

BOOL CreateAviSurface();

BOOL UpdateAviSurface();

BOOL InstallPalette();

private:

AviDialog* avidialog;

CString fullfilename;

CString filename;

CString pathname;

CRect displayrect;

LPDIRECTDRAWSURFACE avisurf;

CRect avirect;

int x,y;

DisplayModeArray displaymode;

LPDIRECTDRAWPALETTE syspal;

LPDIRECTDRAWPALETTE avipal;

PAVISTREAM avistream;

AVISTREAMINFO streaminfo;

HIC decomp;

long fmtlen, buflen;

long startframe, endframe;

long curframe;

LPBITMAPINFOHEADER srcfmt;

LPBITMAPINFOHEADER dstfmt;

BYTE* rawdata;

BYTE* finaldata;

};

Сначала мы объявляем конструктор класса AviPlayWin, предназначенный только для инициализации переменных класса.

В классе определены четыре обработчика сообщений: OnKeyDown(), OnRButtonDown(), OnCreate()и OnDestroy(). Функция OnKeyDown()следит за нажатием клавиш Escapeи пробела во время воспроизведения, прерывает ролик и отображает диалоговое окно для выбора AVI-файла (мы могли воспользоваться DirectInput, но программа AviPlay не стоит подобных хлопот). Функция OnRButtonDown()тоже вызывает диалоговое окно для выбора AVI-файла, но по щелчку правой кнопки мыши. Функция OnCreate()инициализирует DirectDraw и AVI, а функция OnDestroy()завершает их работу.

Затем мы объявляем 10 закрытых ( private) функций. Первой идет функция SelectInitialDisplayMode(), которая выполняет три задачи: выбор исходного видеорежима (то, для чего предназначена сама функция), построение списка 8-битных режимов для диалогового окна и захват системной палитры. Вскоре мы рассмотрим эту функцию. Функция GetSystemPalette()вызывается функцией SelectInitialDisplayMode(); мы увидим, как она работает, при знакомстве с последней.

Функция CreateCustomSurfaces()объявлена встроенной (inline). Она всего лишь возвращает TRUE, потому что при запуске приложения поверхности не создаются.

Следующая функция, ShowDialog(), отображает диалоговое окно и в случае выбора допустимого AVI-файла загружает его функцией LoadAvi(). Основная часть функциональных возможностей программы обеспечивается этими двумя функциями, поэтому мы рассмотрим их подробно.

За функций LoadAvi()объявляется функция DrawScene(). Мы воспользуется ею для вывода кадров видеоролика. Помимо извлечения и восстановления кадров видеопотока DrawScene()осуществляет блиттинг и переключение страниц, необходимые для отображения кадра.

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

Функции CreateAviSurface()и UpdateAviSurface()отвечают за создание и обновление поверхности AVI. Размеры поверхности AVI определяются размерами кадров AVI-файла, выбранного пользователем, поэтому при каждом открытии нового AVI-файла создается новая поверхность AVI. Функция UpdateAviSurface()готовит поверхность AVI к отображению, копируя выходные данные функции ICDecompress()в память поверхности.

Последней объявлена функция InstallPalette(), которая устанавливает палитру AVI перед началом воспроизведения ролика. Однако перед этим она должна извлечь данные палитры из потока AVI.

Оставшаяся часть класса содержит лишь переменные. Мы познакомимся с ними во время рассмотрения программы.

Функция OnCreate()

Мы будем рассматривать функции примерно в порядке их выполнения. Начнем с функции OnCreate(), которая выглядит так:

int AviPlayWin::OnCreate(LPCREATESTRUCT lpCreateStruct) {

if (DirectDrawWin::OnCreate(lpCreateStruct) == -1) return -1;

AVIFileInit();

ShowDialog();

return 0;

}

Сначала мы вызываем версию OnCreate()базового класса (а она инициализирует DirectDraw). Если вызов этой функции закончится неудачей, продолжать бессмысленно, и мы возвращаем код неудачного завершения –1.

Затем мы вызываем функцию AVIFileInit(), которая инициализирует Video For Windows. После этого можно спокойно пользоваться функциями VFW.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Графика для Windows средствами DirectDraw»

Представляем Вашему вниманию похожие книги на «Графика для Windows средствами DirectDraw» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Графика для Windows средствами DirectDraw»

Обсуждение, отзывы о книге «Графика для Windows средствами DirectDraw» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x