Кодирование видеоинформацииРефераты >> Программирование и компьютеры >> Кодирование видеоинформации
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>