亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
色婷婷av久久久久久久| 91精品国产欧美日韩| 日本韩国一区二区| 色94色欧美sute亚洲线路一久| 在线观看欧美黄色| 精品捆绑美女sm三区| 国产精品国产自产拍高清av王其| 亚洲已满18点击进入久久| 91色乱码一区二区三区| 国产成人亚洲综合a∨婷婷| 欧美日韩dvd在线观看| 精品盗摄一区二区三区| 亚洲精品ww久久久久久p站| 国产伦精一区二区三区| 91麻豆产精品久久久久久| 日韩欧美的一区| 亚洲国产精品欧美一二99| 国产精品91一区二区| 777亚洲妇女| 亚洲免费资源在线播放| av亚洲精华国产精华精| 91精品国产入口| 一区二区三区在线影院| 成人综合婷婷国产精品久久 | 91麻豆国产精品久久| 日韩欧美一区中文| 一区二区日韩av| 99精品久久只有精品| 久久人人97超碰com| 秋霞午夜鲁丝一区二区老狼| 色综合中文字幕| 中文字幕av一区二区三区高 | 国产精品99久久久久久有的能看| 欧美日韩亚洲综合在线| 亚洲国产色一区| 91美女视频网站| 国产精品久久久99| 日本大胆欧美人术艺术动态| 色综合天天综合网天天看片| 伊人色综合久久天天人手人婷| 国产不卡在线播放| 2021中文字幕一区亚洲| 国产高清一区日本| 久久久亚洲欧洲日产国码αv| 蜜臀va亚洲va欧美va天堂 | 中文字幕中文字幕在线一区 | 色呦呦一区二区三区| 国产亚洲一二三区| 国产精品一区二区在线看| 国产偷国产偷精品高清尤物| 国产精品一级黄| 欧美日韩视频在线一区二区| 亚洲国产综合91精品麻豆| 欧美精品久久99| 一区二区三区丝袜| 欧洲精品一区二区| 亚洲不卡在线观看| 欧美一区二区高清| 紧缚奴在线一区二区三区| 欧美肥妇bbw| 国产成人啪免费观看软件| 国产喷白浆一区二区三区| 国产河南妇女毛片精品久久久| 亚洲欧洲日韩在线| 欧美羞羞免费网站| 日韩av电影一区| 国产亚洲一区二区在线观看| 成人午夜av在线| 亚洲精品成人悠悠色影视| 欧美丝袜自拍制服另类| 日韩和欧美的一区| 色婷婷亚洲综合| 国产一区二区三区免费播放 | 日韩精品一区二区三区在线播放 | 中文字幕在线观看一区| 色噜噜狠狠成人网p站| 亚洲一区二区视频在线观看| 这里只有精品免费| 99精品欧美一区二区三区综合在线| 国内精品伊人久久久久av一坑 | 亚洲色图欧洲色图| 欧美一区二区三区在线观看视频 | 欧美一区二区精品| 99精品国产一区二区三区不卡| 亚洲福中文字幕伊人影院| 日韩欧美激情四射| 一本色道久久综合精品竹菊| 天天做天天摸天天爽国产一区| 精品国产一二三区| 欧美日韩国产一级片| 国产成人亚洲综合a∨猫咪| 亚洲天天做日日做天天谢日日欢| 欧美精品aⅴ在线视频| 国产麻豆一精品一av一免费 | 久久99精品久久久| 亚洲老妇xxxxxx| 久久影院视频免费| 日本高清视频一区二区| 久久国产精品72免费观看| 国产精品女同一区二区三区| 欧美区视频在线观看| 色一情一伦一子一伦一区| 久久狠狠亚洲综合| 亚洲福利一二三区| 一区二区三区色| 欧美国产激情一区二区三区蜜月| 欧美猛男超大videosgay| 色婷婷国产精品久久包臀| 国产精品一区二区在线观看网站| 午夜精品久久久久久久久久久| 欧美激情一区二区三区全黄| 精品久久一区二区| 欧美日本乱大交xxxxx| 久久国产视频网| 久久成人免费电影| 视频一区中文字幕国产| 亚洲黄网站在线观看| 亚洲精品一二三四区| 欧美国产97人人爽人人喊| 精品国产乱码久久久久久蜜臀| 91精品国产欧美一区二区成人 | 亚洲天堂av一区| 久久久久久久久免费| 欧美在线视频日韩| 91麻豆精品在线观看| 99re8在线精品视频免费播放| 久久超碰97中文字幕| 亚洲黄色小说网站| 亚洲超丰满肉感bbw| 亚洲福利视频一区二区| 国产精品麻豆一区二区 | 欧美日韩不卡一区二区| 在线观看一区不卡| 91精品国产综合久久福利| 欧美日韩精品一二三区| 精品视频在线视频| 色狠狠综合天天综合综合| 成年人午夜久久久| gogogo免费视频观看亚洲一| 国内精品免费**视频| 99精品欧美一区二区三区小说| youjizz久久| 91毛片在线观看| 日韩欧美一二三| 2023国产精品视频| 欧美韩日一区二区三区四区| 亚洲欧美日韩小说| 亚洲曰韩产成在线| 日日欢夜夜爽一区| 成人av在线资源网站| 色综合色综合色综合色综合色综合| 91久久线看在观草草青青| 欧美一区二区在线免费观看| 久久综合色综合88| 国产日韩av一区二区| 亚洲激情成人在线| 久久国产精品99精品国产| 99精品视频中文字幕| 欧美va亚洲va| 亚洲一区欧美一区| 另类小说一区二区三区| 日本韩国欧美在线| 久久精品日韩一区二区三区| 亚洲综合成人在线| jlzzjlzz亚洲女人18| 日韩网站在线看片你懂的| 亚洲老司机在线| 国产精品69久久久久水密桃| 欧美人动与zoxxxx乱| 亚洲男人的天堂网| 成人精品亚洲人成在线| 精品欧美一区二区在线观看| 亚洲成年人影院| 99久久综合国产精品| 久久久久9999亚洲精品| 日本不卡一区二区| 欧美中文字幕一区二区三区| 国产精品夫妻自拍| 国产成人自拍高清视频在线免费播放| 精品婷婷伊人一区三区三| 亚洲毛片av在线| kk眼镜猥琐国模调教系列一区二区| 欧美精品一区视频| 秋霞成人午夜伦在线观看| 欧美亚洲国产一区二区三区va| 亚洲欧美一区二区在线观看| 国产精品亚洲第一区在线暖暖韩国 | 欧美这里有精品| 18涩涩午夜精品.www| 成人黄色一级视频| 久久久久久久久久久久电影| 蜜桃久久精品一区二区| 777a∨成人精品桃花网| 首页综合国产亚洲丝袜| 欧美精品丝袜中出| 午夜视频在线观看一区| 欧美精品精品一区| 日本特黄久久久高潮| 日韩女优av电影| 青娱乐精品视频|