亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? main.cpp

?? < VC++視頻音頻開發(fā)>> 這本書的源碼
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
/**************************************************************************************
 *                                                                                    *
 *                                                                                    *
 **************************************************************************************/

#include "Playa.h"
#include "Skin.h"
#include "Playlist.h"
#include "MediaPlayback.h"
#include "DirDialog.h"
#include "SkinList.h"
#include "Resizer.h"
#include "DebugFile.h"

/*
 * 資源文件
 *
 */

#ifdef WIN32
#include "../build/win32/ressources.h"
#include "../build/win32/resource.h"
#endif

#include <math.h>
#include <commctrl.h>
#include <windows.h>
#include <windowsx.h>
#include <shlobj.h>

/*
 * 記時器間隔
 */

#define TIMER_ID     1
#define TIMER_RATE  50

/*
 * 變量
 */

BOOL      openning_network;
DWORD     anonymous;
HWND      hwndDisplay;
BOOL      screenSaverActive;
int       action  = ACTION_NONE;
DWORD     count = 0;
DWORD     use_subtitles         = 1;
DWORD     no_resize             = 0;
char      skinPath[MAX_PATH];
COLORREF  backColor;
UINT      uTimerID;
RECT      clientRect, cwindowRect;
RECT      windowRect, fullwindowRect;
int       moveX = 0, moveY = 0;
Skin     *skin;
MediaPlayback *playback;
CDirDialog *dirChooser;
SkinList   *skinList;
Resizer   *resizer;
Playlist  *playlist;
char      Name[] = "The \"Playa\"";
char     *RecentFiles[5];
HWND      hwnd, about, urlW = NULL;
HMENU     popupMenu;
HACCEL    hAccel;
DWORD     id;
HINSTANCE hInstance;
int       showing_cursor;
int       compact_mode;
BOOL      openOK;
char     *url;
DWORD     firstStart;
options_t options, tmpOptions;
WCHAR     wallpaper[MAX_PATH];
WCHAR     pattern[MAX_PATH];

/*
 * 主消息循環(huán)方法
 *
 */

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
void             UpdateMainWindow();

/*
 * 打開當前播放鏈表的位置
 *
 */

void             OpenFileForPlaying(HWND hwnd);

/*
 * 重建播放鏈表浮動菜單
 *
 */

void             ReBuildPlaylistMenu();

/**************************************************************************************
 *                                                                                    *
 *                              保存和裝載選項                                        *
 *                                                                                    *
 **************************************************************************************/

void LoadOptions() {

	HKEY     key;
	DWORD created, size;
	LONG     result;
	DWORD  type, i;
	char      file[256], name[5];
	
	/*
	 * 放置缺省選項
	 *
	 */

	compact_mode = 0;
    strcpy(skinPath, "Default");

	options.change_fullscreen_res = 0;
	options.loop                  = 1;
	options.on_top                = 1;
	options.use_bilinear          = 0;
	options.aspect_ratio          = ASPECT_RATIO_FREE;
	options.disable_screen_saver  = 1;
	options.save_pos              = 1;
	options.posX                  = 100;
	options.posY                  = 30;
	options.postprocessing        = 60;
	options.startFullscreen       = 0;

	/*
	 * 初始化最近的文件鏈表
	 */

	for(i=0; i < 5; i++) {

		RecentFiles[i] = NULL;
	}

	/*
	 * 打開注冊鍵
	 */

	result = RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\DivXNetworks\\ThePlaya",
 			                0, "CONFIG", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 
							NULL, &key, &created);

	if(result != ERROR_SUCCESS) {

		MP_ERROR("Couldn't load options");
		return;
	}

	switch(created) {

	case REG_CREATED_NEW_KEY:

		/*
		 * 第一次啟動 (缺省)
		 * 
		 */

		break;

	case REG_OPENED_EXISTING_KEY:

		/*
		 * 讀值
 		 */

		size = 4;
		result = RegQueryValueEx(key, "UseBilinear", 0, &type, (BYTE *)&options.use_bilinear, &size);
		size = 4;
		result = RegQueryValueEx(key, "MaintainAspectRatio", 0, &type, (BYTE *)&options.aspect_ratio, &size);
		size = 4;
		result = RegQueryValueEx(key, "ChangeFullscreenRes", 0, &type, (BYTE *)&options.change_fullscreen_res, &size);
		size = 4;
		result = RegQueryValueEx(key, "UseSubtitles", 0, &type, (BYTE *)&use_subtitles, &size);
		
		size = 4;
		result = RegQueryValueEx(key, "Loop", 0, &type, (BYTE *)&options.loop, &size);
		size = 4;
		result = RegQueryValueEx(key, "OnTop", 0, &type, (BYTE *)&options.on_top, &size);
		size = 4;
		result = RegQueryValueEx(key, "PreventScreenSaver", 0, &type, (BYTE *)&options.disable_screen_saver, &size);

		size = 4;
		result = RegQueryValueEx(key, "SavePlayerPos", 0, &type, (BYTE *)&options.save_pos, &size);

		size = 4;
		result = RegQueryValueEx(key, "PostProcessing", 0, &type, (BYTE *)&options.postprocessing, &size);

		size = 4;
		result = RegQueryValueEx(key, "CustomAspectX", 0, &type, (BYTE *)&aspectRatios[ASPECT_RATIO_CUSTOM].xFactor, &size);

		size = 4;
		result = RegQueryValueEx(key, "CustomAspectY", 0, &type, (BYTE *)&aspectRatios[ASPECT_RATIO_CUSTOM].yFactor, &size);

		if(options.save_pos) {
			
			size = 4;
			result = RegQueryValueEx(key, "PlayerPosX", 0, &type, (BYTE *)&options.posX, &size);
			
			size = 4;
			result = RegQueryValueEx(key, "PlayerPosY", 0, &type, (BYTE *)&options.posY, &size);
		}

		size = MAX_PATH;
		result = RegQueryValueEx(key, "SkinPath", 0, &type, (BYTE *)skinPath, &size);

		/*
		 * 最近的文件
		 */

		for(i=0; i < 5; i++) {

			sprintf(name, "File%d", i+1);

			size = 256;
			result = RegQueryValueEx(key, name, 0, &type, (BYTE *)&file, &size);

			if(result == ERROR_SUCCESS) {
			
				RecentFiles[i] = (char *) new char[size];
				strncpy(RecentFiles[i], file, size);
			}
		}

		break;

	default:
		break;
	}

	RegCloseKey(key);

}

void SaveOptions() {

	HKEY     key;
	LONG     result;
	DWORD created, i;
	char      name[5];

	options.postprocessing = playback->videoDecoder->decoreDecoder->GetQuality();

	/*
	 * 嘗試打開注冊鍵
	 */

	result = RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\DivXNetworks\\ThePlaya",
							              0, "CONFIG", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 
							              NULL, &key, &created);

	if(result != ERROR_SUCCESS) {

		MP_ERROR("Couldn't save options");
		
		RegCloseKey(key);
		return;
	}

	RegSetValueEx(key, "UseBilinear", 0, REG_DWORD, (BYTE *) &options.use_bilinear, 4);
	RegSetValueEx(key, "MaintainAspectRatio", 0, REG_DWORD, (BYTE *) &options.aspect_ratio, 4);
	RegSetValueEx(key, "ChangeFullscreenRes", 0, REG_DWORD, (BYTE *) &options.change_fullscreen_res, 4);
	RegSetValueEx(key, "UseSubtitles", 0, REG_DWORD, (BYTE *) &use_subtitles, 4);
	RegSetValueEx(key, "Loop", 0, REG_DWORD, (BYTE *) &options.loop, 4);
	RegSetValueEx(key, "OnTop", 0, REG_DWORD, (BYTE *) &options.on_top, 4);
	RegSetValueEx(key, "PreventScreenSaver", 0, REG_DWORD, (BYTE *) &options.disable_screen_saver, 4);

	RegSetValueEx(key, "SavePlayerPos", 0, REG_DWORD, (BYTE *) &options.save_pos, 4);
	RegSetValueEx(key, "PostProcessing", 0, REG_DWORD, (BYTE *) &options.postprocessing, 4);

	RegSetValueEx(key, "CustomAspectX", 0, REG_DWORD, (BYTE *) &aspectRatios[ASPECT_RATIO_CUSTOM].xFactor, 4);
	RegSetValueEx(key, "CustomAspectY", 0, REG_DWORD, (BYTE *) &aspectRatios[ASPECT_RATIO_CUSTOM].yFactor, 4);

	if(options.save_pos) {

		options.posX = windowRect.left;
		options.posY = windowRect.top;

		RegSetValueEx(key, "PlayerPosX", 0, REG_DWORD, (BYTE *) &options.posX, 4);
		RegSetValueEx(key, "PlayerPosY", 0, REG_DWORD, (BYTE *) &options.posY, 4);
	}

	if(strcmp(skinPath, "Default") != 0)
		RegSetValueEx(key, "SkinPath", 0, REG_SZ, (BYTE *) skinPath, strlen(skinPath));
	else 
		RegSetValueEx(key, "SkinPath", 0, REG_SZ, (BYTE *) "Default", strlen("Default"));
	
	/*
	 * 最近文件鏈表
	 */

	for(i=0; i < 5; i++) {
		
		sprintf(name, "File%d\0", i+1);

		if(RecentFiles[i] != NULL) {
		
			RegSetValueEx(key, name, 0, REG_SZ, 
							      (BYTE *) RecentFiles[i], strlen(RecentFiles[i]));
		}
		else {
		
			RegDeleteValue(key, name);
 		}
	}

	RegCloseKey(key);
}

/**************************************************************************************
 *                                                                                    *
 *                             DlgProc用于定制屏幕高寬比                              *
 *                        -----------------------------------                         *
 **************************************************************************************/

static BOOL APIENTRY CustomAspectDlgProc( HWND hDlg, UINT message, UINT wParam, LONG lParam) {

	switch(message) {

		case WM_INITDIALOG:

			char buffer[256];

			sprintf(buffer, "%d", aspectRatios[ASPECT_RATIO_CUSTOM].xFactor);
			SendMessage(GetDlgItem(hDlg, IDC_CUSTOM_ASPECT_X), WM_SETTEXT, 0, (LPARAM) buffer);

			sprintf(buffer, "%d", aspectRatios[ASPECT_RATIO_CUSTOM].yFactor);
			SendMessage(GetDlgItem(hDlg, IDC_CUSTOM_ASPECT_Y), WM_SETTEXT, 0, (LPARAM) buffer);

			return TRUE;

	  case WM_COMMAND:

        switch (LOWORD(wParam))
		{
		case IDC_CUSTOM_ASPECT_CANCEL:
			EndDialog(hDlg, TRUE);
			break;

		case IDC_CUSTOM_ASPECT_OK:
			EndDialog(hDlg, TRUE);

			DWORD xFactor, yFactor;
			char *data;
			SHORT lineLength;
		
			lineLength = (short) SendMessage(GetDlgItem(hDlg, IDC_CUSTOM_ASPECT_X), EM_LINELENGTH, 0, 0);

			/*
			 * 將url緩沖寫入頭兩個字節(jié)
			 * 
			 *
			 */

			data = (char *) new char[lineLength + 1];
			memcpy(data, &lineLength, 2);
	
			SendMessage(GetDlgItem(hDlg, IDC_CUSTOM_ASPECT_X), EM_GETLINE, 0, (LONG)(LPVOID)data);
			data[lineLength] = '\0';

			sscanf(data, "%d", &xFactor);

			lineLength = (short) SendMessage(GetDlgItem(hDlg, IDC_CUSTOM_ASPECT_Y), EM_LINELENGTH, 0, 0);

			/*
			 * 將url緩沖寫入頭兩個字節(jié)
			 * 
			 *
			 */

			data = (char *) new char[lineLength + 1];
			memcpy(data, &lineLength, 2);
	
			SendMessage(GetDlgItem(hDlg, IDC_CUSTOM_ASPECT_Y), EM_GETLINE, 0, (LONG)(LPVOID)data);
			data[lineLength] = '\0';

			sscanf(data, "%d", &yFactor);

			aspectRatios[ASPECT_RATIO_CUSTOM].xFactor = xFactor;
			aspectRatios[ASPECT_RATIO_CUSTOM].yFactor = yFactor;

			/*
			 * 進行真正的填充
			 */
			switch(options.aspect_ratio) {

				case ASPECT_RATIO_ORIGINAL:

					CheckMenuItem(popupMenu, (UINT)ID_ASPECT_ORIGINAL, MF_UNCHECKED);
					break;

				case ASPECT_RATIO_TV:

					CheckMenuItem(popupMenu, (UINT)ID_ASPECT_43, MF_UNCHECKED);
					break;

				case ASPECT_RATIO_FREE:

					CheckMenuItem(popupMenu, (UINT)ID_ASPECT_FREE, MF_UNCHECKED);
					break;

				case ASPECT_RATIO_WIDE:

					CheckMenuItem(popupMenu, (UINT)ID_ASPECT_169, MF_UNCHECKED);
					break;
			}

			options.aspect_ratio = ASPECT_RATIO_CUSTOM;
			CheckMenuItem(popupMenu, (UINT)ID_ASPECT_CUSTOM, MF_CHECKED);
				
			RECT  src;

			GetClientRect(hwnd, &src);
			GetWindowRect(hwnd, &windowRect);

			if(compact_mode) {

				src.bottom = (src.right - src.left)*yFactor/xFactor;
			}
			else {

				src.bottom = (src.right - src.left - 15)*yFactor/xFactor + 115 + 22;
			}

			AdjustWindowRect(&src, WS_POPUP|WS_SIZEBOX, 0);

			MoveWindow( hwnd, windowRect.left, 
						windowRect.top, 
						src.right - src.left, 
						src.bottom - src.top, TRUE);
				
			playback->SetVideoRect(skin->GetVideoRect());

			break;
		}

		case WM_DESTROY:
			return TRUE;
	}

	return FALSE;
}

/**************************************************************************************
 *                                                                                    *
 *                              DlgProc用于一般的參數(shù)選擇                             *
 *                        -----------------------------------                         *
 **************************************************************************************/


static BOOL APIENTRY PreferencesGeneralDlgProc( HWND hDlg, UINT message, UINT wParam, LONG lParam) {

	switch(message) {
		case WM_INITDIALOG:

			SetWindowPos(hDlg, HWND_TOP, 15, 35, 0, 0, SWP_NOSIZE);

		    CheckDlgButton(hDlg, IDC_CHECK_LOOP,   tmpOptions.loop);
		    CheckDlgButton(hDlg, IDC_CHECK_ON_TOP, tmpOptions.on_top);
		    CheckDlgButton(hDlg, IDC_CHECK_DISABLE_SS, tmpOptions.disable_screen_saver);
		    CheckDlgButton(hDlg, IDC_CHECK_SAVE_POS, tmpOptions.save_pos);

			return TRUE;

	  case WM_COMMAND:

        switch (wParam)
		{
			case IDC_CHECK_LOOP:

				tmpOptions.loop = tmpOptions.loop ? 0 : 1;
				break;

			case IDC_CHECK_ON_TOP:

				tmpOptions.on_top = tmpOptions.on_top ? 0 : 1;
				break;

			case IDC_CHECK_DISABLE_SS:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜久久久久久久久久一区二区| 精品一区二区三区影院在线午夜| 麻豆成人av在线| 成人高清在线视频| 欧美一级日韩不卡播放免费| 亚洲色图一区二区| 国产一区二区三区四区五区入口| 日本福利一区二区| 中文字幕免费不卡在线| 免费精品视频在线| 欧美日韩中文国产| 亚洲欧美在线视频观看| 国产成人福利片| 2020国产精品自拍| 美女在线视频一区| 欧美肥胖老妇做爰| 亚洲永久免费视频| 一本高清dvd不卡在线观看| 欧美激情艳妇裸体舞| 成人高清在线视频| 91精品久久久久久久91蜜桃| 亚洲精品久久7777| k8久久久一区二区三区| 国产欧美日韩另类一区| 久久99精品国产91久久来源| 欧美老肥妇做.爰bbww视频| 亚洲精品国产视频| 一本大道久久a久久精二百| 国产精品国产三级国产aⅴ入口 | 奇米精品一区二区三区四区 | 亚洲一二三级电影| 91美女在线视频| 亚洲人成网站色在线观看| 91老师片黄在线观看| 国产精品不卡在线| 色综合天天综合网天天看片| 亚洲三级免费电影| 欧美午夜影院一区| 日韩电影一区二区三区四区| 337p亚洲精品色噜噜噜| 久久精品国产99国产| 精品国产三级a在线观看| 久久成人免费网站| 国产欧美一区二区三区沐欲| 成人一区二区视频| 亚洲视频免费观看| 欧美片网站yy| 国产在线观看一区二区| 国产蜜臀av在线一区二区三区| 国产麻豆午夜三级精品| 国产精品传媒入口麻豆| 欧美伊人久久久久久久久影院| 日韩电影在线免费看| 日韩视频一区在线观看| 大桥未久av一区二区三区中文| 国产精品国产三级国产aⅴ原创 | 香蕉久久夜色精品国产使用方法| 538在线一区二区精品国产| 国产在线观看一区二区| 最新国产成人在线观看| 欧美美女视频在线观看| 国产美女久久久久| 亚洲国产婷婷综合在线精品| 欧美精品一区二区三区视频| 99久久久久免费精品国产 | 日韩无一区二区| 成人免费va视频| 三级一区在线视频先锋| 国产性做久久久久久| 欧美日韩一区二区电影| 国产九九视频一区二区三区| 亚洲人成电影网站色mp4| 日韩一区二区三区电影在线观看| 成人毛片在线观看| 日韩影视精彩在线| 亚洲欧洲制服丝袜| 国产日韩精品一区二区三区在线| 在线视频国产一区| 国产精品影音先锋| 午夜久久久久久电影| 国产精品久久久久9999吃药| 日韩视频在线观看一区二区| 在线日韩一区二区| 成人午夜av电影| 国内一区二区在线| 日韩精品电影一区亚洲| 亚洲精品视频免费观看| 亚洲国产成人午夜在线一区| 欧美tk丨vk视频| 欧美肥妇free| 欧洲av一区二区嗯嗯嗯啊| 国产成人8x视频一区二区| 六月丁香婷婷久久| 婷婷中文字幕综合| 夜夜夜精品看看| 亚洲欧美经典视频| 国产精品乱人伦| 久久精品在线观看| 久久这里只有精品6| 欧美成人女星排名| 7777精品伊人久久久大香线蕉的| 91国偷自产一区二区使用方法| 国产成人啪午夜精品网站男同| 极品瑜伽女神91| 日韩精品亚洲专区| 免费人成网站在线观看欧美高清| 亚洲一线二线三线视频| 亚洲人123区| 一区二区三区日本| 亚洲主播在线观看| 亚洲大片一区二区三区| 亚洲小少妇裸体bbw| 亚洲成人av电影在线| 丝袜美腿亚洲一区二区图片| 亚洲成人av福利| 日本免费在线视频不卡一不卡二| 天天操天天色综合| 免费成人av资源网| 国模一区二区三区白浆 | 日本不卡视频一二三区| 午夜欧美大尺度福利影院在线看| 亚洲午夜久久久久久久久电影网| 亚洲一区二区高清| 日韩—二三区免费观看av| 免费亚洲电影在线| 国产精品一区免费视频| 成人小视频在线观看| 99国产麻豆精品| 欧洲中文字幕精品| 日韩天堂在线观看| 国产日韩精品一区| 亚洲免费视频中文字幕| 午夜视频在线观看一区二区三区| 丝瓜av网站精品一区二区| 精品一区二区三区免费播放| 成人亚洲一区二区一| 色一情一乱一乱一91av| 欧美一区二区视频网站| 国产清纯白嫩初高生在线观看91 | 国内久久精品视频| 成熟亚洲日本毛茸茸凸凹| 在线精品视频免费观看| 51精品秘密在线观看| 亚洲国产精品精华液2区45| 亚洲美女屁股眼交| 免费在线视频一区| 99精品国产99久久久久久白柏| 欧美日韩国产小视频| 久久新电视剧免费观看| 一区二区三区中文字幕精品精品| 美国av一区二区| 99精品黄色片免费大全| 日韩一级欧美一级| **欧美大码日韩| 极品少妇xxxx精品少妇| 在线观看不卡视频| 国产亚洲一区二区三区四区| 午夜日韩在线观看| 国产91精品精华液一区二区三区| 欧美亚洲国产bt| 久久精品视频在线看| 亚洲一区二区在线观看视频| 国产成人a级片| 日韩午夜中文字幕| 亚洲国产精品久久人人爱蜜臀| 国产精品中文字幕日韩精品| 欧美视频中文一区二区三区在线观看 | 2023国产精华国产精品| 亚洲国产精品综合小说图片区| 国产馆精品极品| 91精品国产综合久久精品性色| 亚洲欧洲美洲综合色网| 国内成人免费视频| 欧美一区二区三区日韩视频| 亚洲激情中文1区| 99国内精品久久| 中文字幕高清不卡| 国产一区二区三区免费播放| 欧美电影影音先锋| 亚洲成人福利片| 91成人免费电影| 一区二区三区精品| 不卡一区二区中文字幕| 国产亚洲一区二区三区四区| 激情综合一区二区三区| 日韩一级二级三级| 日本sm残虐另类| 91精品国产综合久久久蜜臀粉嫩| 亚洲在线成人精品| 在线免费观看日本欧美| 亚洲精品视频一区二区| 91丨porny丨中文| 亚洲欧美一区二区三区国产精品 | 欧美大片国产精品| 奇米精品一区二区三区在线观看 | 国产精品亚洲视频| 精品av久久707| 国产一区二区在线视频| 久久精品视频一区二区三区| 国产精品亚洲第一|