align="justify"> # define DEFAULT_MEDIA_PATH TEXT ( [fde_1440622699_4499262061_174] )
//Константи відповідають за геом. Розміри вікна в пікселях
# define DEFAULT_AUDIO_WIDTH 240//Ширина по//замовчуванням в режимі «тільки звук»
# define DEFAULT_AUDIO_HEIGHT 120//Висота по//замовчуванням в режимі «тільки звук»
# define DEFAULT_VIDEO_WIDTH 320//Ширина по//замовчуванням
# define DEFAULT_VIDEO_HEIGHT 240//Висота по//замовчуванням
# define MINIMUM_VIDEO_WIDTH 200//хв ширина
# define MINIMUM_VIDEO_HEIGHT 120//макс ширина
//перелічуваний тип стану плеераPLAYSTATE {Stopped, Paused, Running, Init};
//
//Макро визначення
//
# define SAFE_RELEASE (x) {if (x) x- gt; Release (); x=NULL; }
# define JIF (x) if (FAILED (hr=(x)))
{Msg (TEXT ( FAILED (hr=0x% x) in ) TEXT (#x) TEXT ( n 0 ), hr); return hr;}
# define LIF (x) if (FAILED (hr=(x)))
{Msg (TEXT ( FAILED (hr=0x% x) in ) TEXT (#x) TEXT ( n 0 ), hr);}
//Зовнішні переменниеPLAYSTATE g_psCurrent; HWND ghApp; HINSTANCE ghInst;
extern BOOL g_bFullscreen;
Розроблений клас має всі основні можливості для комфортного відтворення і управління відтворенням файлу.
. 2.2 Розробка модуля користувача інтерфейсу
Модуль користувальницького інтерфейсу програми є важливою частиною програми, так як від результатів розробки цього модуля залежить «зовнішній вигляд» ІМС, її доступність і функціональність. При розробці інтерфейсу були використані наступні можливості бібліотеки GDI +: Створення вікон довільної форми. Для створення вікон довільної форми використовувалися регіони. Створення кнопок довільної форми. Для їх створення аналогічним чином використовувалися регіони. Алгоритм використання регіону для створення вікна довільної форми:
) Створення бінарного файлу типу RGN містить інформацію про регіон за допомогою спеціалізованого ПЗ (пр.Photoshop CS2);
Створення регіону за допомогою функції ExtCreateRegion із двійкового файлу типу RGN;
Призначення отриманого регіону головному вікну програми за допомогою функції SetWindowRgn (RGN rng);
Тепер необхідно передбачити промальовування заднього фону вікна при настанні події Paint. Для цього зроблені наступні кроки:
а) у процедурі ініціалізації вікна необхідно отримати контекст графічного пристрою за допомогою процедури GetDC ();
б) створити сумісний з ним контекст в пам'яті (для зберігання фонового малюнка) за допомогою функції CreateCompatibleDC;
в) помістити в цей контекст фоновий малюнок за допомогою функції SelectObject;
г) у процедурі Paint відображаємо фоновий малюнок з використанням контексту, отриманого в п. 2), з використанням функції BitBlt ();
Для промальовування кнопок округлої форми використаний дещо інший підхід. Алгоритм створення:
У процедурі ініціалізації головного вікна необхідно для кожної кнопки створити контекст графічного пристрою, сумісний з контекстом головного вікна, і призначити кожному малюнок, який буде виступати в якості фонового малюнка соот?? етствующей кнопки;
У дизайнері форм середовища VisualStudio.NET встановити властивість «OwnerDraw» кнопок в true (це зроблено для того, щоб ми самі відповідали за відображення поверхні кнопки при настанні системного події WM_DRAWITEM);
Подія WM_DRAWITEM обробляється за допомогою функції-члена OnDrawItem класу головного вікна, при цьому програміст має доступ до структури типу LPDRAWITEMSTRUCT, що містить інформацію про стан кнопки, її позиції у вікні, контекст пристрою, пов'язаний з кнопкою, її розміри та інші параметри;
У перевизначення функції OnDrawItem використовується змінна skin типу CBitmap для зберігання виду кнопки, в цю змінну ми завантажуємо картинку з ресурсів програми за допомогою функції LoadBitmap;
Тепер відображаємо фоновий малюнок за допомогою соответсвующего контексту, отриманого на першому кроці, за допомогою функції BitBlt;
Тепер для поточного контексту кнопки, отриманого з структури LPDRAWITEMSTRUCT, призначаємо кисть для малювання із змінної skin за допомогою функції CreatePatternBrush;
Далі для створення круглої форми (регіону) кнопки використовується функція CreateEllipticRgn...