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

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

?? gui.c

?? uclinux下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一区二区三区免费野_久草精品视频
亚洲天堂成人网| 国产永久精品大片wwwapp| 欧美另类高清zo欧美| 成人激情免费网站| 成人高清免费观看| 成人美女在线观看| 欧美日韩日日骚| 激情久久五月天| 一区二区高清视频在线观看| 91农村精品一区二区在线| 蓝色福利精品导航| 久久激情五月激情| 久久国产免费看| 狠狠色丁香久久婷婷综合_中| 国产一区二区不卡| 福利一区福利二区| 久久国产精品99久久人人澡| 精品一区二区三区在线观看 | 日韩欧美一二三四区| 精品99一区二区| 国产欧美一区二区精品性| 在线电影一区二区三区| 91老师片黄在线观看| 波多野洁衣一区| 国产视频一区不卡| 国产精品大尺度| 亚洲色图一区二区三区| 视频在线观看一区二区三区| 亚洲高清视频中文字幕| 秋霞电影网一区二区| 国模少妇一区二区三区| 麻豆成人免费电影| 久久99九九99精品| 国产在线不卡一卡二卡三卡四卡| 成人深夜福利app| 91亚洲精品乱码久久久久久蜜桃 | 欧美日韩国产a| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 久久人人97超碰com| 久久女同性恋中文字幕| 日韩毛片在线免费观看| 午夜影院在线观看欧美| 福利一区福利二区| 欧美一区二区三级| 国产精品电影院| 另类小说色综合网站| 在线观看亚洲一区| 欧美国产日产图区| 免费成人在线网站| 欧美在线观看视频在线| 国产亚洲va综合人人澡精品| 亚洲国产综合视频在线观看| 国产成人精品aa毛片| 欧美一区二区久久| 亚洲成a人v欧美综合天堂下载| 成人性生交大合| 丁香亚洲综合激情啪啪综合| 亚洲日穴在线视频| 日韩电影免费在线看| 91麻豆精品在线观看| 欧美成人video| 亚洲午夜三级在线| 成人动漫一区二区| 久久精品免视看| 蜜桃视频一区二区三区| 99久久精品一区二区| 国产嫩草影院久久久久| 韩国欧美国产一区| 日韩精品中文字幕在线一区| 亚洲国产精品久久人人爱| 色综合中文字幕国产 | 色婷婷av一区二区三区gif | 国产一区二区在线免费观看| 欧美在线高清视频| 亚洲视频资源在线| 99re成人在线| 亚洲欧美日韩国产综合| 91亚洲国产成人精品一区二三| 国产精品丝袜黑色高跟| 成人av高清在线| 综合分类小说区另类春色亚洲小说欧美| 成人永久aaa| 中文字幕精品一区二区三区精品| 国产v综合v亚洲欧| 国产精品久久久久影院老司| 成人亚洲一区二区一| 亚洲免费观看高清完整版在线观看 | 国产欧美日韩综合| 粉嫩在线一区二区三区视频| 中文字幕日本乱码精品影院| 成人av在线看| 亚洲综合偷拍欧美一区色| 欧美日韩电影一区| 国产乱码精品1区2区3区| 日本一区二区电影| 一本到高清视频免费精品| 国产精品网站一区| 欧美日韩在线精品一区二区三区激情| 调教+趴+乳夹+国产+精品| 91麻豆精品国产91久久久更新时间| 污片在线观看一区二区| 欧美一区二区视频在线观看| 蜜桃在线一区二区三区| 久久综合精品国产一区二区三区| 久久99久久久欧美国产| 在线成人免费视频| 国产一区二区久久| 亚洲激情六月丁香| 5858s免费视频成人| 国产成人亚洲综合a∨婷婷| 一区二区三区成人| 欧美精品一区二区三区四区| 色偷偷久久一区二区三区| 蜜桃av一区二区三区| 日韩毛片一二三区| 91精品国产高清一区二区三区 | 91久久香蕉国产日韩欧美9色| 亚洲成人综合视频| 精品国产乱码久久久久久久久 | 国产精品久久久久aaaa| 91精品国产综合久久婷婷香蕉| 成人高清av在线| 狠狠色伊人亚洲综合成人| 一卡二卡欧美日韩| 国产精品色哟哟| 欧美videofree性高清杂交| 在线亚洲一区观看| eeuss影院一区二区三区| 欧美a一区二区| 午夜视频一区二区| 亚洲美腿欧美偷拍| 中文字幕在线不卡视频| 26uuu久久综合| 日韩欧美在线一区二区三区| 色哟哟国产精品免费观看| 成人三级伦理片| 国产高清在线观看免费不卡| 另类小说一区二区三区| 日产国产欧美视频一区精品 | 激情综合五月婷婷| 日韩黄色免费电影| 香蕉久久一区二区不卡无毒影院| 一区在线中文字幕| 国产精品久久久久精k8| 国产精品美女久久久久高潮| 久久久久亚洲综合| 久久嫩草精品久久久精品| 日韩欧美国产精品一区| 欧美mv日韩mv国产网站| 精品福利一区二区三区免费视频| 欧美福利电影网| 欧美一区二区三区男人的天堂| 91精品婷婷国产综合久久性色| 欧美精品国产精品| 欧美一二三四区在线| 日韩亚洲欧美中文三级| 精品日本一线二线三线不卡| 精品免费视频一区二区| 久久综合国产精品| 久久午夜电影网| 国产精品美女久久久久aⅴ | 精品国产精品一区二区夜夜嗨| 日韩亚洲国产中文字幕欧美| 欧美精品一区二区不卡| 欧美国产精品久久| 亚洲蜜桃精久久久久久久| 亚洲一卡二卡三卡四卡无卡久久| 亚洲成av人片| 激情深爱一区二区| 成人精品小蝌蚪| 欧美色国产精品| 日韩三级在线免费观看| 国产视频不卡一区| 亚洲精品视频一区二区| 日韩高清不卡一区| 国产一区二区在线视频| 91亚洲国产成人精品一区二区三| 精品污污网站免费看| 精品久久久久久久久久久久久久久久久 | 久久久久99精品国产片| 亚洲人成在线播放网站岛国| 日韩精品一卡二卡三卡四卡无卡| 国模套图日韩精品一区二区| 白白色亚洲国产精品| 欧美日本不卡视频| 中文字幕乱码日本亚洲一区二区| 亚洲一线二线三线视频| 国模冰冰炮一区二区| 色综合咪咪久久| 久久综合色一综合色88| 亚洲人被黑人高潮完整版| 麻豆精品在线播放| 一本色道综合亚洲| 久久精品人人爽人人爽| 亚洲18女电影在线观看| 99久久久精品| 久久久蜜桃精品| 免费黄网站欧美| 91蝌蚪porny| 中文字幕成人av|