Кодирование видеоинформации
Рефераты >> Программирование и компьютеры >> Кодирование видеоинформации

int audio,cd,time,video;

ATOM MyRegisterClass(HINSTANCE hInstance);

LRESULT CALLBACK BIT(HWND, UINT, WPARAM, LPARAM);

LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);

// Стандартная функция Windows

int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

MSG msg;

// Обрабатываем функцию определяющую класс окна

MyRegisterClass(hInstance);

// Отрисовываем диалоговое окно

DialogBox(hInst,(LPCTSTR)IDD_BIT, hWnd,(DLGPROC)BIT);

// Запускаем цикл обработки сообщений

while (GetMessage(&msg, NULL, 0, 0))

{

// Разрешаем использование клавиатуры

TranslateMessage(&msg);

// Возвращаем управление Windows

DispatchMessage(&msg);

}

return msg.wParam;

}

// Функция определяющая класс окна

ATOM MyRegisterClass(HINSTANCE hInstance)

{

WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style = CS_HREDRAW | CS_VREDRAW;

wcex.cbClsExtra = 0;

wcex.cbWndExtra = 0;

wcex.hInstance = hInstance;

wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_BIT);

wcex.hCursor = LoadCursor(NULL, IDC_ARROW);

wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

wcex.lpszClassName = szWindowClass;

return RegisterClassEx(&wcex);

}

// Функция обработки событий диалогового окна

LRESULT CALLBACK BIT(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)

{

switch (message)

{

// Заполняем LISTBOX1 и LISTBOX2

case WM_INITDIALOG:

SendDlgItemMessage(hDlg,IDC_LIST1,

LB_ADDSTRING,0,(LPARAM)" ");

SendDlgItemMessage(hDlg,IDC_LIST1,

LB_ADDSTRING,0,(LPARAM)"1CD 650 Mb");

SendDlgItemMessage(hDlg,IDC_LIST1,

LB_ADDSTRING,0,(LPARAM)"1CD 700 Mb");

SendDlgItemMessage(hDlg,IDC_LIST1,

LB_ADDSTRING,0,(LPARAM)"1CD 800 Mb");

SendDlgItemMessage(hDlg,IDC_LIST1,

LB_ADDSTRING,0,(LPARAM)"2CD 1300 Mb");

SendDlgItemMessage(hDlg,IDC_LIST1,

LB_ADDSTRING,0,(LPARAM)"2CD 1400 Mb");

SendDlgItemMessage(hDlg,IDC_LIST1,

LB_ADDSTRING,0,(LPARAM)"2CD 1600 Mb");

SendDlgItemMessage(hDlg,IDC_LIST2,

LB_ADDSTRING,0,(LPARAM)" ");

SendDlgItemMessage(hDlg,IDC_LIST2,

LB_ADDSTRING,0,(LPARAM)"mp3 64kbps");

SendDlgItemMessage(hDlg,IDC_LIST2,

LB_ADDSTRING,0,(LPARAM)"mp3 96kbps");

SendDlgItemMessage(hDlg,IDC_LIST2,

LB_ADDSTRING,0,(LPARAM)"mp3 112kbps");

SendDlgItemMessage(hDlg,IDC_LIST2,

LB_ADDSTRING,0,(LPARAM)"mp3 128kbps");

SendDlgItemMessage(hDlg,IDC_LIST2,

LB_ADDSTRING,0,(LPARAM)"mp3 160kbps");

SendDlgItemMessage(hDlg,IDC_LIST2,

LB_ADDSTRING,0,(LPARAM)"mp3 192kbps");

SendDlgItemMessage(hDlg,IDC_LIST2,

LB_ADDSTRING,0,(LPARAM)"mp3 224kbps");

SendDlgItemMessage(hDlg,IDC_LIST2,

LB_ADDSTRING,0,(LPARAM)"mp3 256kbps");

SendDlgItemMessage(hDlg,IDC_LIST2,

LB_ADDSTRING,0,(LPARAM)"mp3 320kbps");

return TRUE;

break;

case WM_COMMAND:

// Если была нажата кнопка Ok

if (LOWORD(wParam) == IDOK)

{

// Считываем содержимое EDITBOX1

time = GetDlgItemInt(hDlg,IDC_EDIT1,NULL,1);

if(time == 0)

MessageBox(hWnd,"Enter video time","Error",MB_OK);

// Выбираем содержимое списка LISTBOX1

cd = SendDlgItemMessage(hDlg,IDC_LIST1,LB_GETCURSEL,0,0L);

// и присваиваем необходимые значения

switch (cd)

{

case -1:

// Выводим окно Error

MessageBox(hWnd,"Choice CD type","Error",MB_OK);

break;

case 0:

// Выводим окно Error

MessageBox(hWnd,"Choice CD type","Error",MB_OK);

break;

case 1:

cd = 665600;

break;

case 2:

cd = 716800;

break;

case 3:

cd = 819200;

break;

case 4:

cd = 1331200;

break;

case 5:

cd = 1433600;

break;

case 6:

cd = 1638400;

break;

}

// Выбираем содержимое списка LISTBOX2

audio = SendDlgItemMessage(hDlg,IDC_LIST2,LB_GETCURSEL,0,0L);

// и присваиваем необходимые значения

switch (audio)

{

case -1:

// Выводим окно Error

MessageBox(hWnd,"Choice audio bitrate","Error",MB_OK);

break;

case 0:

// Выводим окно Error

MessageBox(hWnd,"Choice audio bitrate","Error",MB_OK);

break;

case 1:

audio = 14;

break;

case 2:

audio = 16;

break;

case 3:

audio = 20;

break;

case 4:

audio = 24;

break;

case 5:

audio = 28;

break;

case 6:

audio = 32;

break;

case 7:

audio = 40;

break;

case 8:

audio = 8;

break;

case 9:

audio = 12;

break;

}

// Если введены значения time, cd и audio

if(time>0)

if(cd>0)

if(audio>0)

// Считаем битрейт видео

video = (cd-time*(audio*60))/time/60*8;

// и выводим его в EDITBOX2

SetDlgItemInt(hDlg,IDC_EDIT2,video,1);

}

// Если была нажата кнопка Close или х

if (LOWORD(wParam) == IDCANCEL || LOWORD(wParam) == IDCLOSE)

{

// Закрываем приложение

PostQuitMessage(0);

return TRUE;

}

}

return FALSE;

}

Приложение 2. Файл resource.h

#define IDC_MYICON 2

#define IDD_BIT_DIALOG 102

#define IDD_BIT 103

#define IDI_BIT 107

#define IDR_MAINFRAME 128

#define IDC_EDIT1 1000

#define IDC_EDIT2 1001

#define IDC_LIST2 1005

#define IDC_LIST1 1006

#define IDC_STATIC -1

#ifdef APSTUDIO_INVOKED

#ifndef APSTUDIO_READONLY_SYMBOLS

#define _APS_NEXT_RESOURCE_VALUE 130

#define _APS_NEXT_COMMAND_VALUE 32771

#define _APS_NEXT_CONTROL_VALUE 1012

#define _APS_NEXT_SYMED_VALUE 110

#endif

#endif

Приложение 3. Файл StdAfx.h

// Исключаем редко используемые элементы Windows библиотек

#define WIN32_LEAN_AND_MEAN

// Подключаем главную библиотеку Windows

#include <windows.h>

// Подключаем библиотеку ввода/вывода

#include <stdlib.h>

// Подключаем библиотеку распределения памяти

#include <malloc.h>

// Подключаем библиотеку управления буфером памяти

#include <memory.h>

// Подключаем библиотеку текстовых функций

#include <tchar.h>


Страница: