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

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

?? gui.c

?? mplayer播放器的源碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* * MPlayer GUI for Win32 * Copyright (C) 2003 Sascha Sommer <saschasommer@freenet.de> * Copyright (C) 2006 Erik Augustson <erik_27can@yahoo.com> * Copyright (C) 2006 Gianluigi Tiesi <sherpya@netfarm.it> * * This file is part of MPlayer. * * MPlayer 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. * * MPlayer 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 MPlayer; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */#include <stdio.h>#include <stdlib.h>#include <ctype.h>#include <fcntl.h>#include <windows.h>#include <windowsx.h>#include <shlobj.h>#include "version.h"#include "mplayer.h"#include "mp_fifo.h"#include "mp_msg.h"#include "help_mp.h"#include "input/input.h"#include "input/mouse.h"#include "osdep/keycodes.h"#include "stream/stream.h"#include "libvo/video_out.h"#include "interface.h"#include "gui.h"#include "wincfg.h"#include "dialogs.h"// HACK around bug in old mingw#undef INVALID_FILE_ATTRIBUTES#define INVALID_FILE_ATTRIBUTES ((DWORD)-1)#ifndef WM_XBUTTONDOWN# define WM_XBUTTONDOWN    0x020B# define WM_XBUTTONUP      0x020C# define WM_XBUTTONDBLCLK  0x020D#endif/* Globals / Externs */extern void renderinfobox(skin_t *skin, window_priv_t *priv);extern void renderwidget(skin_t *skin, image *dest, widget *item, int state);extern void mplayer_put_key(int code);extern void print_version(void);extern int WinID;float sub_aspect;DWORD oldtime;NOTIFYICONDATA nid;int console_state = 0;play_tree_t *playtree = NULL;static HBRUSH    colorbrush = NULL;           //Handle to colorkey brushstatic COLORREF windowcolor = RGB(255,0,255); //Windowcolor == colorkeyvoid console_toggle(void){    if (console_state)    {        FreeConsole();        console = 0;        console_state = 0;    }    else    {        /* This code comes from: http://dslweb.nwnexus.com/~ast/dload/guicon.htm */        CONSOLE_SCREEN_BUFFER_INFO coninfo;        FILE *fp;        HWND hwnd = NULL;        console = 1;        AllocConsole();        SetConsoleTitle(MP_TITLE);        /* disable the close button for now */        while (!hwnd)        {            hwnd = FindWindow(NULL, MP_TITLE);            Sleep(100);        }        DeleteMenu(GetSystemMenu(hwnd, 0), SC_CLOSE, MF_BYCOMMAND);        GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo);        coninfo.dwSize.Y = 1000;        SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize);        fp = freopen("con", "w", stdout);        *stdout = *fp;        setvbuf(stdout, NULL, _IONBF, 0);        fp = freopen("con", "r", stdin);        *stdin = *fp;        setvbuf(stdin, NULL, _IONBF, 0);        fp = freopen("con", "w", stdout);        *stderr = *fp;        setvbuf(stderr, NULL, _IONBF, 0);        print_version();        console_state = 1;    }}void capitalize(char *filename){    unsigned int i;    BOOL cap = TRUE;    for (i=0; i < strlen(filename); i++)    {        if (cap)        {            cap = FALSE;            filename[i] = toupper(filename[i]);        }        else if (filename[i] == ' ')            cap = TRUE;        else            filename[i] = tolower(filename[i]);    }}static image *get_drawground(HWND hwnd){    gui_t * gui = (gui_t *) GetWindowLongPtr(hwnd, GWLP_USERDATA);    unsigned int i;    if(!gui) return NULL;    for(i=0; i<gui->window_priv_count; i++)        if(gui->window_priv[i]->hwnd==hwnd)            return &gui->window_priv[i]->img;    return NULL;}static HBITMAP get_bitmap(HWND hwnd){    gui_t *gui = (gui_t *) GetWindowLongPtr(hwnd, GWLP_USERDATA);    unsigned int i;    if(!gui) return NULL;    for(i=0; i<gui->window_priv_count; i++)        if(gui->window_priv[i]->hwnd == hwnd)            return gui->window_priv[i]->bitmap;    return NULL;}static int get_windowtype(HWND hwnd){    gui_t *gui = (gui_t *) GetWindowLongPtr(hwnd, GWLP_USERDATA);    unsigned int i;    if(!gui) return -1;    for(i=0; i<gui->window_priv_count; i++)        if(gui->window_priv[i]->hwnd == hwnd)            return gui->window_priv[i]->type;    return -1;}static void uninit(gui_t *gui){    if(gui->skin) destroy_window(gui);    if(gui->playlist) gui->playlist->free_playlist(gui->playlist);    gui->playlist = NULL;}/*    the gui message handler    tries to handle the incoming messages    and passes them to the player's message handler if it can't handle them*/static void handlemsg(HWND hWnd, int msg){    gui_t *gui = (gui_t *) GetWindowLongPtr(hWnd, GWLP_USERDATA);    if(msg == evNone) return;    switch(msg)    {        case evLoadPlay:        case evLoad:            if(display_openfilewindow(gui, 0) && (msg == evLoadPlay))                handlemsg(hWnd, evDropFile);            return;        case evLoadSubtitle:            display_opensubtitlewindow(gui);            break;        case evPreferences:            display_prefswindow(gui);            return;        case evPlayList:            display_playlistwindow(gui);            return;        case evSkinBrowser:            display_skinbrowser(gui);            break;        case evEqualizer:            display_eqwindow(gui);            break;        case evAbout:            MessageBox(hWnd, COPYRIGHT, "About", MB_OK);            break;        case evIconify:            ShowWindow(hWnd, SW_MINIMIZE);            break;        case evIncVolume:            mplayer_put_key(KEY_VOLUME_UP);            break;        case evDecVolume:            mplayer_put_key(KEY_VOLUME_DOWN);            break;        default:            mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] received msg %s (%i)\n", gui->skin->geteventname(msg), msg);            break;    }    gui->playercontrol(msg);}static widget *clickedinsidewidget(gui_t *gui, int window, int x, int y){    unsigned int i;    widget *item;    for(i=0; i<gui->skin->widgetcount; i++)    {        item = gui->skin->widgets[i];        if((item->window == window) && (item->x <= x) && (item->x + item->width >= x) &&           (item->y <= y) && (item->y + item->height >= y))            return item;    }    return NULL;}/* updates sliders and the display */static void updatedisplay(gui_t *gui, HWND hwnd){    unsigned int i;    window_priv_t *priv = NULL;    DWORD time = timeGetTime();    if(!hwnd) return;    /* load all potmeters hpotmeters */    for(i=0; i<gui->skin->widgetcount; i++)    {        if(gui->skin->widgets[i]->type == tyHpotmeter || gui->skin->widgets[i]->type == tyPotmeter)        {            if(gui->skin->widgets[i]->msg == evSetVolume)                gui->skin->widgets[i]->value = guiIntfStruct.Volume;            else if(gui->skin->widgets[i]->msg == evSetMoviePosition)                gui->skin->widgets[i]->value = guiIntfStruct.Position;            else if(gui->skin->widgets[i]->msg == evSetBalance)                gui->skin->widgets[i]->value = guiIntfStruct.Balance;            if(gui->skin->widgets[i]->window == get_windowtype(hwnd))                renderwidget(gui->skin, get_drawground(hwnd), gui->skin->widgets[i],                             gui->skin->widgets[i]->pressed ? 0 : 1);        }        /* update some buttons */        if(gui->skin->widgets[i]->type == tyButton && gui->skin->widgets[i]->window == get_windowtype(hwnd))        {            if(gui->skin->widgets[i]->msg == evPlaySwitchToPause)            {                gui->skin->widgets[i]->value = guiIntfStruct.Playing;                    renderwidget(gui->skin, get_drawground(hwnd), gui->skin->widgets[i],                                 guiIntfStruct.Playing == 1 ? 0 : 1);            }            if(gui->skin->widgets[i]->msg == evMute)            {                gui->skin->widgets[i]->value = guiIntfStruct.Volume;                    renderwidget(gui->skin, get_drawground(hwnd), gui->skin->widgets[i],                                 guiIntfStruct.Volume == 0.0f ? 0 : 1);            }        }    }    /* updating the display once a 100.second is enough imo */    if((time - oldtime) < 100) return;    oldtime=time;    /* suppress directx's fullscreen window when using the sub window */    if(sub_window && &video_driver_list[0] && strstr("directx", video_driver_list[0]))    {        HWND hWndFS = NULL; //handle to directx's fullscreen window        if(hWndFS == NULL)        {            hWndFS = FindWindow(NULL, "MPlayer Fullscreen");            if(hWndFS != NULL) DestroyWindow(hWndFS); //sub window handles fullscreen        }    }    for (i=0; i<gui->window_priv_count; i++)    {        if(gui->window_priv[i]->hwnd == hwnd)            priv=gui->window_priv[i];    }// Sherpya    /* display the status msgs */    renderinfobox(gui->skin, priv);    RedrawWindow(hwnd, NULL, NULL, RDW_INVALIDATE);}static LRESULT CALLBACK SubProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){    gui_t *gui = (gui_t *) GetWindowLongPtr(hWnd, GWLP_USERDATA);    if (gui && (gui->subwindow != hWnd)) return FALSE;    switch (message)    {        case WM_CLOSE:            handlemsg(hWnd, evExit);            return 0;        case WM_DESTROY:            PostQuitMessage(0);            return 0;        case WM_KEYDOWN:        {            switch(wParam)            {                case VK_LEFT:                    mplayer_put_key(KEY_LEFT);                    break;                case VK_UP:                    mplayer_put_key(KEY_UP);                    break;                case VK_RIGHT:                    mplayer_put_key(KEY_RIGHT);                    break;                case VK_DOWN:                    mplayer_put_key(KEY_DOWN);                    break;                case VK_TAB:                    mplayer_put_key(KEY_TAB);                    break;                case VK_BACK:                    mplayer_put_key(KEY_BS);                    break;                case VK_DELETE:                    mplayer_put_key(KEY_DELETE);                    break;                case VK_INSERT:                    mplayer_put_key(KEY_INSERT);                    break;                case VK_HOME:                    mplayer_put_key(KEY_HOME);                    break;                case VK_END:                    mplayer_put_key(KEY_END);                    break;                case VK_PRIOR:                    mplayer_put_key(KEY_PAGE_UP);                    break;                case VK_NEXT:                    mplayer_put_key(KEY_PAGE_DOWN);                    break;                case VK_ESCAPE:                    mplayer_put_key(KEY_ESC);                    break;            }            break;        }        case WM_COMMAND:        {            switch(LOWORD(wParam))            {                case IDEXIT:                    PostQuitMessage(0);                    handlemsg(hWnd, evExit);                    break;                case IDFILE_OPEN:                    handlemsg(hWnd, evLoadPlay);                    break;                case IDURL_OPEN:                    display_openurlwindow(gui, 0);                    break;                case IDDIR_OPEN:                {                    static char path[MAX_PATH];                    BROWSEINFO bi;                    LPITEMIDLIST pidl;                    memset(&bi, 0, sizeof(BROWSEINFO));                    bi.lpszTitle = "Choose a Directory...";                    pidl = SHBrowseForFolder(&bi);                    if (SHGetPathFromIDList(pidl, path))                    {                        gui->playlist->clear_playlist(gui->playlist);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜激情久久久| 欧美一级黄色大片| 色呦呦一区二区三区| 久久99最新地址| 丝袜美腿成人在线| 精品无码三级在线观看视频| 狠狠色狠狠色合久久伊人| 国产在线精品一区二区三区不卡| 久久99精品久久久久久久久久久久| 国产精品一区二区男女羞羞无遮挡 | 91麻豆免费看片| 欧美日韩一区三区| 日韩片之四级片| 国产亚洲欧美一区在线观看| 国产精品天干天干在线综合| 亚洲美女电影在线| 亚洲福利电影网| 天天色天天操综合| 国产精品一区二区你懂的| jlzzjlzz国产精品久久| 在线免费一区三区| 欧美一级久久久久久久大片| 久久九九久久九九| 亚洲欧美色综合| 精品一区二区三区在线观看国产| 东方aⅴ免费观看久久av| www.亚洲免费av| 欧美日韩日本视频| 国产亚洲成aⅴ人片在线观看| 亚洲天堂福利av| 日韩电影在线一区二区三区| 韩国精品免费视频| 91小视频在线免费看| 欧美肥妇free| 亚洲欧洲日韩av| 麻豆国产欧美一区二区三区| 99久久久国产精品| 91 com成人网| 亚洲色图欧洲色图婷婷| 蜜桃久久精品一区二区| 成人性生交大合| 欧美日韩精品一区二区三区四区 | 中文字幕乱码久久午夜不卡| 亚洲成人动漫av| 粗大黑人巨茎大战欧美成人| 91麻豆精品国产自产在线| 国产精品网站在线| 三级亚洲高清视频| 91美女视频网站| 久久久久久久网| 日韩高清中文字幕一区| 成人国产精品免费网站| 欧亚洲嫩模精品一区三区| 久久久久久久久久久电影| 一区二区三区日韩欧美精品| 国产精品一区二区三区网站| 欧美精品123区| 亚洲色图丝袜美腿| 国产精品亚洲专一区二区三区| 欧美日韩精品综合在线| 欧美激情一区二区三区四区| 蜜桃视频在线观看一区| 日本韩国视频一区二区| 国产精品色一区二区三区| 肉色丝袜一区二区| 色综合激情久久| 国产精品青草综合久久久久99| 久久av老司机精品网站导航| 欧美卡1卡2卡| 亚洲啪啪综合av一区二区三区| 国产精品中文字幕日韩精品| 在线不卡的av| 亚洲成人综合网站| 色综合久久久久久久久久久| 国产精品久久久久久久久搜平片 | 国产成人在线视频网址| 日韩一区二区三区电影在线观看| 一卡二卡欧美日韩| 色美美综合视频| 国产精品久久久久久亚洲伦| 蜜臀久久99精品久久久久宅男| 欧美日韩国产乱码电影| 一区二区三区四区中文字幕| 91亚洲男人天堂| 综合色中文字幕| 99久久精品一区二区| 中文av字幕一区| 国产伦理精品不卡| 26uuu亚洲综合色| 韩国欧美国产1区| 欧美α欧美αv大片| 麻豆91在线观看| 欧美成人女星排行榜| 九色综合国产一区二区三区| 在线观看www91| 性做久久久久久免费观看欧美| 成人午夜在线播放| 国产精品国产自产拍高清av| 国产主播一区二区三区| 久久精品一区二区三区av| 国产一区在线观看麻豆| 欧美成人精品高清在线播放| 狠狠色狠狠色综合系列| 国产午夜精品久久久久久免费视| 高清av一区二区| 久久综合999| 国产成人av电影在线| 中文字幕第一区| 色欧美乱欧美15图片| 亚洲一区二区三区小说| 欧美日韩一卡二卡三卡 | 国产成人综合在线观看| 亚洲精品一区二区三区精华液| 国产精选一区二区三区 | 亚洲欧洲精品一区二区精品久久久 | 亚洲一区免费观看| 欧美日韩高清在线| 日本91福利区| 久久久国际精品| 色综合一个色综合| 五月天亚洲精品| 久久久蜜桃精品| 91一区二区三区在线播放| 天天综合网天天综合色| 日韩一级成人av| 日本不卡的三区四区五区| 精品国内二区三区| 99久久综合99久久综合网站| 亚洲与欧洲av电影| 日韩精品影音先锋| 不卡av在线免费观看| 一区二区三区高清| 色综合天天做天天爱| 日韩黄色免费电影| 国产精品无圣光一区二区| 欧美日韩在线播放| 国产馆精品极品| 亚洲午夜免费福利视频| 久久久亚洲精品石原莉奈| 不卡的av电影在线观看| 亚洲6080在线| 国产亚洲精品7777| 91久久人澡人人添人人爽欧美| 精品在线观看免费| 亚洲午夜免费电影| 国产精品不卡在线观看| 精品国产青草久久久久福利| 欧美三级韩国三级日本一级| caoporen国产精品视频| 国产麻豆精品theporn| 男女视频一区二区| 亚洲一区欧美一区| 亚洲免费观看高清| 中文字幕中文乱码欧美一区二区 | 狠狠色伊人亚洲综合成人| 午夜精品视频一区| 亚洲精品ww久久久久久p站| 国产欧美日韩三区| 久久久久久9999| 欧美成人伊人久久综合网| 欧美疯狂性受xxxxx喷水图片| 色老综合老女人久久久| av影院午夜一区| 国产a区久久久| 国产精品一二二区| 国产一区二区精品在线观看| 久久99久久99精品免视看婷婷| 日韩不卡手机在线v区| 五月天亚洲婷婷| 午夜精品爽啪视频| 婷婷亚洲久悠悠色悠在线播放| 悠悠色在线精品| 一区二区三区在线播| 一区二区三区中文免费| 亚洲免费在线视频一区 二区| 综合欧美一区二区三区| 国产精品福利一区二区| 中文字幕制服丝袜一区二区三区| 中文无字幕一区二区三区 | av网站一区二区三区| 成人手机在线视频| 成人开心网精品视频| 成人午夜视频在线| 96av麻豆蜜桃一区二区| 91麻豆.com| 欧美日韩免费在线视频| 欧美日韩久久一区| 日韩一级大片在线| 精品成人一区二区三区四区| 欧美r级电影在线观看| 久久美女艺术照精彩视频福利播放| 欧美精品一区视频| 欧美国产欧美综合| 亚洲欧洲精品天堂一级| 中文字幕一区免费在线观看| 玉足女爽爽91| 日本在线不卡视频| 国产在线一区观看| 99视频国产精品| 欧美人牲a欧美精品|