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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? interface.cpp

?? tcpmp 中修改過的界面文件
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
/*****************************************************************************
 *
 * This program is free software ; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 *
 * $Id: interface.c 624 2006-02-01 17:48:42Z picard $
 *
 * The Core Pocket Media Player
 * Copyright (c) 2004-2005 Gabor Kovacs
 *
 ****************************************************************************/

/*
注: 要注意LIB的鏈接順序, 先鏈MFC的庫,再鏈CRT的庫
在項目設置中,先省略庫coredll.lib uafxwced.lib
然后在Object/Lib中按順序加入:uafxwced.lib coredll.lib
否則會出現new/delete的鏈接錯誤.
*/

//#include <afx.h>
#ifdef __cplusplus
extern "C"
{
#endif

#include "../../common/common.h"
#include "../win.h"
#include "interface.h"
#include "resource.h"
#include "openfile_win32.h"
#include "../about.h"
#include "../benchresult.h"
#include "../mediainfo.h"
#include "../settings.h"
#include "playlst.h"
#include "../skin.h"
#include "../../config.h"

/////////////////////////////////
#ifdef __cplusplus
}
#endif


//add by zy
#include "../inicode.h"
#include "cimage.h"
#include "../QSkinButton.h"
#include "../QSkinSlider.h"
#include "../QSkinListBox.h"
#include "../Globals.h"
//#include "OpenVideoDlg.h"

#define CORETHEQUE_UI_ID			FOURCC('C','T','Q','U')

#if defined(TARGET_WINCE) || defined(TARGET_WIN32)

#ifndef STRICT
#define STRICT
#endif
#include <windows.h>
#if _MSC_VER > 1000
#pragma warning(disable : 4201)
#endif
#include <commctrl.h>

#define REG_INITING		0x2400

#define TIMER_CLIPPING	500
#define TIMER_INITING	501
#define TIMER_SLEEP		502
#define TIMER_KEYINSEEK	503
#define TIMER_SLIDERINSEEK 504
#define TIMER_SLIDERINVOL 505
#define TIMER_CLIPPING2	506
#define TIMER_TITLESCROLL 507

#define SLIDERINSEEK_CYCLE 250
#define SLIDERINVOL_CYCLE 100
#define KEYINSEEK_START 1000
#define KEYINSEEK_REPEAT 500
#define CLIPPING_CYCLE	200
#define INITING_CYCLE	3000
#define SLEEP_CYCLE		5000
#define CLIPPING2_CYCLE	200
#define TITLESCROLL_CYCLE 150
#define TITLESCROLL_WAIT (4000/TITLESCROLL_CYCLE)

#define TRACKMAX		30000
#define TRACKHEIGHT		16
#define TRACKTHUMB		12

#define TITLEHEIGHT		16
#define TITLEFONT		11

#define VOLMINWIDTH		35
#define VOLTHUMB		12

#define IF_AUDIO		50000
#define IF_VIDEO		51000
#define IF_VIDEOACCEL	52000
#define IF_CHAPTER		53000
#define IF_STREAM_AUDIO	54000
#define IF_STREAM_VIDEO	55000
#define IF_STREAM_SUBTITLE 56000

static int HotKey[] = 
{
	IF_FILE_OPENFILE,
	IF_FILE_PLAYLIST,
	IF_PLAY,
	IF_PLAYPAUSE,
	IF_PLAY_FULLSCREEN,
	IF_STOP,
	IF_MOVE_FFWD,
	IF_MOVE_BACK,
	IF_NEXT,			
	IF_PREV,
	IF_PREV_SMART,
	IF_NEXT2,			
	IF_PREV_SMART2,
	IF_FASTFORWARD,
	IF_OPTIONS_VOLUME_UP,
	IF_OPTIONS_VOLUME_DOWN,
	IF_OPTIONS_VOLUME_UP_FINE,
	IF_OPTIONS_VOLUME_DOWN_FINE,
	IF_OPTIONS_MUTE,
	IF_OPTIONS_EQUALIZER,
	IF_OPTIONS_FULLSCREEN,
	IF_OPTIONS_ZOOM_FIT,
	IF_OPTIONS_ZOOM_IN,
	IF_OPTIONS_ZOOM_OUT,
	IF_OPTIONS_ROTATE,
	IF_OPTIONS_BRIGHTNESS_UP,
	IF_OPTIONS_BRIGHTNESS_DOWN,
	IF_OPTIONS_CONTRAST_UP,
	IF_OPTIONS_CONTRAST_DOWN,
	IF_OPTIONS_SATURATION_UP,
	IF_OPTIONS_SATURATION_DOWN,
	IF_OPTIONS_TOGGLE_VIDEO,
	IF_OPTIONS_TOGGLE_AUDIO,
	//!SUBTITLE IF_OPTIONS_TOGGLE_SUBTITLE,
	IF_OPTIONS_AUDIO_STEREO_TOGGLE,
	IF_OPTIONS_SCREEN,
	IF_FILE_EXIT,
	IF_HIDE
};

#define HOTKEYCOUNT (sizeof(HotKey)/sizeof(int))

#define MAX_SRC_IMAGES 6	//位圖總數,包括掩碼位圖,other圖
CImage m_imgState[MAX_SRC_IMAGES];	//Normal,Hilight,Down和Disabled狀態
CImage m_imgDispAreaBg;

CIniCode g_ini;
CIniCode g_aSkin;

#define MAX_BUTTONS 17 //18
CQSkinButton ga_SkinBtns[MAX_BUTTONS];
#define IDC_BUTTON_BASE 0x600 //按鈕的起始ID
#define IDC_LIST_PLAYLIST 0x700	//播放列表的ID

CQSkinSlider g_TrackSlider;
CQSkinSlider g_VolSlider;
CQSkinListBox g_PlayListbox;

BTN_INFO ga_ButtonInfos[] = {
	{_T("IDW_MAIN_PLAYPAUSE"), IF_PLAYPAUSE, 1}, //{_T("IDW_MAIN_PLAYPAUSE"), IF_PLAY, 1}, 
	//{_T("IDW_MAIN_PAUSE"), IF_PLAYPAUSE, 1}, 
	{_T("IDW_MAIN_FULLSCREEN"), IF_OPTIONS_FULLSCREEN, 1}, 
	{_T("IDW_MAIN_SELFILES"), IF_FILE_OPENFILE, 0},  
	{_T("IDW_MAIN_PREV"), IF_PREV, 0}, 
	{_T("IDW_MAIN_NEXT"), IF_NEXT, 0}, 
	{_T("IDW_MAIN_CLOSE"), IF_FILE_EXIT, 0}, 
	{_T("IDW_MAIN_PLAYLIST"), IF_FILE_PLAYLIST, 0}, 
	{_T("IDW_MAIN_MUTE"), IF_OPTIONS_MUTE, 1}, 
	{_T("IDW_MAIN_STOP"), IF_STOP, 0}, 
	{_T("IDW_MAIN_SHUFFLE"), IF_OPTIONS_SHUFFLE, 1}, //{_T("IDW_MAIN_SHUFFLE"), IF_SHUFFLE, 1}, 
	{_T("IDW_MAIN_REPEAT"), IF_OPTIONS_REPEAT, 1},//{_T("IDW_MAIN_REPEAT"), IF_REPEAT, 1},
	{_T("IDW_MAIN_FASTFORWARD"), IF_MOVE_FFWD, 0},//{_T("IDW_MAIN_FASTFORWARD"), IF_FASTFORWARD, 1},
	{_T("IDW_MAIN_MOVEBACK"), IF_MOVE_BACK, 0},
	{_T("IDW_MAIN_HIDE"), IF_HIDE, 0},
	//
	{_T("IDW_PLAYLIST_UP"), IF_PLAYLIST_UP, 0},
	{_T("IDW_PLAYLIST_DOWN"), IF_PLAYLIST_DOWN, 0},
	{_T("IDW_PLAYLIST_REMOVE"), IF_PLAYLIST_REMOVE, 0},
};

//取索引號
static int GetButtonInfoIndex( UINT uCmdID ) {
	for( int n=0; n<MAX_BUTTONS; n++ ) {
		if( ga_ButtonInfos[n].uCmdID==uCmdID ) 
			break;		
	}

	if( n>=MAX_BUTTONS ) {
		return -1;
	}

	return n;
}

typedef struct intface
{
	win Win;
	DWORD ThreadId;
	player* Player;		//播放內核
	node* Color;
	node* Equalizer;
	WNDPROC DefTrackProc;
	WNDPROC DefVolProc;
	HWND WndTrack;		//進度條
	HWND WndTitle;		//標題條
	HWND WndVol;		//音量條
	HWND WndVolBack;	//音量條的底. 為什么要一個底?

	WNDPROC DefPlayListProc;
	HWND WndPlayList;   //播放列表子窗口
	HFONT PLFont;
	int PLFontSize;
	HBRUSH PLBrush;
	rgbval_t PLFace;
	rgbval_t PLText;
	RECT rtPlayList;		//播放列表位置
	BOOL PLInUpdate;        //正在更新播放列表
	
	int TrackThumb;
	RECT ClientRect;
	rect SkinViewport;
	rect SkinArea;
	rect Viewport;		//播放圖像的區域?
	int InSkin;
	bool_t InVol;
	bool_t InSeek;
	bool_t Capture;
	bool_t ForceFullScreen;
	bool_t TrackBar;		//是否顯示播放進度條
	bool_t TitleBar;		//是否顯示標題
	bool_t TaskBar;			//是否顯示任務條
	bool_t Buttons;			//是否顯示工具條按鈕
	bool_t Focus;
	bool_t Clipping;
	bool_t Overlap;
	bool_t VolResizeNeeded;
	bool_t VolResizeNeeded2;
	bool_t Exited;
	POINT Offset;
	bool_t Bench;
	bool_t Wait;
	bool_t CmdLineMode;
	int Vol;
	int HotKey[HOTKEYCOUNT];

	// refresh states
	int TrackSetPos;
	int TrackPos;
	bool_t Play;
	bool_t FFwd;
	bool_t FullScreen;
	bool_t Mute;

	HFONT TitleFont;
	int TitleFontSize;
	tick_t TitleTime;		//已播放時間
	int TitleTimeWidth;
	int TitleNameWidth;
	int TitleNameSize;
	int TitleNameOffset;
	int ScrollMode;
	bool_t UpdateScroll;
	int TitleDurWidth;
	int TitleBorder;
	int TitleTop;
	int TitleWidth;
	int TitleHeight;
	HBRUSH TitleBrush;
	rgbval_t TitleFace;
	rgbval_t TitleText;

	tchar_t TitleName[256];		//標題文字
	tchar_t TitleDur[32];		//媒體總時間
	int MenuPreAmp;

	int MenuStreams;
	int MenuAStream;
	int MenuVStream;
	int MenuSubStream;

	array VOutput;
	array AOutput;

	bool_t AllKeys;
	bool_t AllKeysWarning;
	int SkinNo;
	skin Skin[MAX_SKIN];
	tchar_t SkinPath[MAXPATH];

	//add by zy
	CImage *m_pimgState[MAX_SRC_IMAGES];	//Normal,Hilight,Down和Disabled狀態,掩碼圖
	CImage *m_pimgDispAreaBg;	//播放區背景圖

	CIniCode *pIni;			//此結構中不能直接放對象實體
	CIniCode *paSkin;

	RECT DispAreaRect;    //圖片在此區域顯示

	WNDPROC DefQSkinSliderProc;

	CQSkinButton *ga_pSkinBtns[MAX_BUTTONS];	//按鈕指針
	RECT rtTrack;		//進度條位置
	RECT rtTitle;		//標題條位置
	RECT rtVol;		//音量條位置
	
	CQSkinSlider *pTrackSlider;
	CQSkinSlider *pVolSlider;	
	CQSkinListBox *pPlayListbox;
} intface;

//extern void GetModulePath(tchar_t* Path,const tchar_t* Module);
void GetModulePath(tchar_t* Path,const tchar_t* Module)
{
	tchar_t* s;
	HANDLE Handle = NULL;
	if (Module)
		Handle = GetModuleHandle(Module);
	GetModuleFileName( (HINSTANCE)Handle,Path,MAXPATH);
	s = tcsrchr(Path,'\\');
	if (s) s[1]=0;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//播放列表
#define MSG_PLAYER2						WM_APP + 0x300


//更新列表的顯示
static void UpdatePlayList(intface* p)
{
	tchar_t s[256];
//	tchar_t s2[256];
	int i;
	int Count=0;
	int Current = -1;
	
	p->Player->Get(p->Player,PLAYER_LIST_COUNT,&Count,sizeof(int));
	p->Player->Get(p->Player,PLAYER_LIST_CURRENT,&Current,sizeof(int));
	
	i = ListBox_GetCount(p->WndPlayList);
	while (i > Count)
		ListBox_DeleteString(p->WndPlayList,--i);
	
//	Item.mask=LVIF_TEXT;
//	Item.pszText=T("");
//	Item.cchTextMax=1;
//	Item.iSubItem=0;
	
	ListBox_ResetContent(p->WndPlayList);
					 
	for (i=0;i<Count;++i) {
		s[0] = 0;
		p->Player->Get(p->Player,PLAYER_LIST_AUTOTITLE+i,s,sizeof(s));
		ListBox_AddString(p->WndPlayList,s);		
	}

	if( Current>=0 ) {
		//ListBox_SetSel( p->WndPlayList, TRUE, Current );
		ListBox_SetCurSel( p->WndPlayList, Current );
	}
}

//窗口函數
LRESULT CALLBACK PlayListWndProc(HWND WndPlayList, UINT Msg, WPARAM wParam, LPARAM lParam)
{
	intface* p = (intface*) WinGetObject(WndPlayList);	//因為p->Win是p的第一項?
	
	switch (Msg) {
	case WM_SETFOCUS:
		SendMessage( (HWND)p->Win.Wnd, Msg, wParam, lParam );
		break;
	case MSG_PLAYER2:
		if (p->WndPlayList)
		{
			p->PLInUpdate = 1;
			UpdatePlayList(p);
			p->PLInUpdate = 0;
		}
		return 1;		
	default:
		break;
		//return 0;
	}
	
	return CallWindowProc(p->DefPlayListProc,WndPlayList,Msg,wParam,lParam);
}

static int PLListNotify(intface* p,int Param,int Param2)
{
	if (p->Win.Wnd)
		PostMessage((HWND)p->Win.Wnd,MSG_PLAYER2,0,0);
	return ERR_NONE;
}

//通知播放器更新列表?
static void PLBeginUpdate(intface* p)
{
	notify Notify;
	Notify.Func = NULL;
	Notify.This = 0;
	
	p->Player->Set(p->Player,PLAYER_LIST_NOTIFY,&Notify,sizeof(Notify));
	
	//p->Pos = GetPos(p);
	p->PLInUpdate = 1;
}

static void PLEndUpdate(intface* p)
{
//	int n;
	notify Notify;
	Notify.Func = (notifyfunc)PLListNotify;
	Notify.This = p;
	p->Player->Set(p->Player,PLAYER_LIST_NOTIFY,&Notify,sizeof(Notify));
	
	UpdatePlayList(p);
	
	//設當前項
	//	for (n=0;n<ListView_GetItemCount(p->WndList);++n)
	//		ListView_SetItemState(p->WndList,n,n==p->Pos?LVIS_FOCUSED|LVIS_SELECTED:0,LVIS_FOCUSED|LVIS_SELECTED);
	
	//	if (p->Pos>=n || p->Pos<0) {
	//		ListView_SetItemState(p->WndList,0,LVIS_FOCUSED,LVIS_FOCUSED);
	//		p->Pos = 0;
	//	}
	
	//	ListView_EnsureVisible(p->WndList,p->Pos,TRUE);
	p->PLInUpdate = 0;
}

static void PLPlay(intface* p, int i)
{
	bool_t b;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产三级国产普通话三级| 国产精品成人网| 日本网站在线观看一区二区三区| 精品视频一区二区不卡| 亚洲已满18点击进入久久| 色婷婷一区二区| 亚洲美女视频在线| 色久优优欧美色久优优| 亚洲综合男人的天堂| 欧美撒尿777hd撒尿| 午夜精品免费在线观看| 在线成人av影院| 免费av网站大全久久| 日韩精品中文字幕一区| 韩国av一区二区三区| 久久蜜桃av一区二区天堂| 国产.欧美.日韩| 日韩美女精品在线| 色婷婷亚洲婷婷| 亚洲大片精品永久免费| 欧美一卡2卡3卡4卡| 久久 天天综合| 国产女同性恋一区二区| 99久久99久久精品国产片果冻| 亚洲人成小说网站色在线| 欧美最猛黑人xxxxx猛交| 视频在线观看国产精品| 精品乱码亚洲一区二区不卡| 国产一区二区不卡在线| 国产精品国产三级国产三级人妇 | 麻豆国产精品一区二区三区| 日韩丝袜美女视频| 国产三级精品三级| 99视频有精品| 性感美女极品91精品| 精品少妇一区二区三区免费观看 | 久久久高清一区二区三区| 成人午夜电影网站| 亚洲欧美日本在线| 午夜精品久久久久久久久| 日韩一级欧美一级| 国产mv日韩mv欧美| 亚洲精品免费电影| 日韩欧美中文字幕制服| 成人免费视频视频在线观看免费| 亚洲精品免费在线观看| 日韩女优电影在线观看| 成人91在线观看| 视频一区视频二区在线观看| 久久久精品tv| 日本高清不卡视频| 卡一卡二国产精品| 亚洲女人****多毛耸耸8| 欧美一级淫片007| 成人福利视频网站| 天天影视网天天综合色在线播放| 国产夜色精品一区二区av| 欧美综合亚洲图片综合区| 狠狠色伊人亚洲综合成人| 亚洲精品福利视频网站| 精品国产乱子伦一区| 91成人在线精品| 国产呦萝稀缺另类资源| 一区二区三区四区中文字幕| 日韩免费视频线观看| 91在线观看视频| 韩日欧美一区二区三区| 亚洲黄色尤物视频| 精品剧情v国产在线观看在线| 91日韩在线专区| 国产在线精品国自产拍免费| 一区二区三区国产精华| 久久综合色8888| 欧美揉bbbbb揉bbbbb| 成人午夜视频在线| 日本三级亚洲精品| 日韩理论片网站| 精品成人一区二区三区四区| 欧美日免费三级在线| 国产**成人网毛片九色| 日韩av电影免费观看高清完整版在线观看| 国产精品成人在线观看| 精品国产区一区| 欧美日韩国产区一| 色综合天天综合给合国产| 国产在线精品一区二区不卡了| 亚洲国产wwwccc36天堂| 国产精品久久久久久久浪潮网站 | 欧美丝袜丝交足nylons| 成人网页在线观看| 久久精品国产成人一区二区三区 | 在线亚洲高清视频| 国产福利91精品一区二区三区| 日韩成人免费看| 亚洲欧美一区二区视频| 久久精品人人做| 欧美成人激情免费网| 在线不卡免费欧美| 色8久久精品久久久久久蜜| 成人激情动漫在线观看| 国产精品一二三| 久久99精品国产麻豆婷婷洗澡| 亚洲国产一区二区三区| 最新热久久免费视频| 欧美国产日韩一二三区| 久久久亚洲高清| 精品国偷自产国产一区| 欧美一区二区三级| 欧美精品乱码久久久久久 | www.欧美.com| 国产成人免费网站| 国模娜娜一区二区三区| 久久99热这里只有精品| 日本亚洲免费观看| 青青草一区二区三区| 五月激情丁香一区二区三区| 亚洲国产三级在线| 亚洲国产欧美另类丝袜| 亚洲国产婷婷综合在线精品| 亚洲一区二区三区在线看| 一区二区免费在线播放| 亚洲精品日韩一| 亚洲综合成人在线视频| 一区二区三区在线观看欧美| 一区二区三区小说| 亚洲无线码一区二区三区| 亚洲第一二三四区| 日欧美一区二区| 秋霞午夜鲁丝一区二区老狼| 免费的成人av| 国产呦萝稀缺另类资源| 国产馆精品极品| 成人黄色综合网站| 97久久精品人人做人人爽| 91丝袜美女网| 欧美熟乱第一页| 91精品免费在线观看| 欧美一卡二卡三卡| 久久综合成人精品亚洲另类欧美| 久久免费看少妇高潮| 国产日产欧产精品推荐色| 国产精品久久久久一区二区三区 | 欧美精品久久天天躁| 91精品国产综合久久福利软件 | 久久超碰97人人做人人爱| 美日韩一区二区三区| 国产一区二区在线电影| 成人永久免费视频| 色拍拍在线精品视频8848| 欧美日本视频在线| 精品国产麻豆免费人成网站| 国产欧美综合在线| 亚洲欧美另类综合偷拍| 午夜av一区二区| 精品在线免费观看| 波多野结衣视频一区| 在线中文字幕不卡| 欧美一区二区三区成人| 国产午夜一区二区三区| 亚洲丝袜另类动漫二区| 爽好久久久欧美精品| 国产在线播放一区| 91麻豆精品在线观看| 欧美精品一二三| 久久久三级国产网站| 国产精品水嫩水嫩| 午夜欧美2019年伦理| 国模一区二区三区白浆| 91啪九色porn原创视频在线观看| 欧美日韩免费视频| 久久影音资源网| 亚洲欧美二区三区| 日本不卡一区二区三区| 国产91精品免费| 欧美性生活久久| 久久欧美一区二区| 亚洲一区二区三区视频在线播放| 久久超碰97中文字幕| 91最新地址在线播放| 欧美一区二区黄色| 中文一区二区在线观看| 亚洲国产精品影院| 国产激情精品久久久第一区二区| 日本精品一区二区三区高清 | 国产成人在线看| 精品视频在线视频| 国产人久久人人人人爽| 香蕉加勒比综合久久| 丁香天五香天堂综合| 91麻豆精品国产自产在线| 国产精品乱码妇女bbbb| 免费精品99久久国产综合精品| 成人三级伦理片| 日韩免费视频一区| 亚洲精品久久久蜜桃| 国产精品小仙女| 制服丝袜激情欧洲亚洲| 综合电影一区二区三区 | 精品99999| 亚洲高清一区二区三区|