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

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

?? gui.c

?? uclinux下mplayer的源碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
static void create_traymenu(gui_t *gui){    gui->traymenu = CreatePopupMenu();    gui->trayplaybackmenu = CreatePopupMenu();    AppendMenu(gui->traymenu, MF_STRING | MF_POPUP, (UINT) gui->trayplaymenu, "Open...");    AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0);    AppendMenu(gui->traymenu, MF_STRING | MF_POPUP, (UINT) gui->trayplaybackmenu, "Playback");    AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_SEEKB, "Seek Backwards");    AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_PTRACK, "Previous Track");    AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_PLAY, "Play/Pause");    AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_STOP, "Stop");    AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_NTRACK, "Next Track");    AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_SEEKF, "Seek Forwards");    AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0);    AppendMenu(gui->traymenu, MF_STRING, ID_MUTE, "Toggle Mute");    AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0);    AppendMenu(gui->traymenu, MF_STRING, IDSUBTITLE_OPEN, "Open Subtitle");    AppendMenu(gui->traymenu, MF_STRING, ID_PLAYLIST, "Playlist");    AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0);    AppendMenu(gui->traymenu, MF_STRING, ID_SHOWHIDE, "Show/Hide");    AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0);    AppendMenu(gui->traymenu, MF_STRING, ID_PREFS, "Preferences");    AppendMenu(gui->traymenu, MF_STRING, ID_CONSOLE, "Debug Console");    AppendMenu(gui->traymenu, MF_STRING, ID_ONLINEHELP, "Online Help");    AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0);    AppendMenu(gui->traymenu, MF_STRING, IDEXIT, "&Exit");}static void create_submenu(gui_t *gui){    gui->submenu = CreatePopupMenu();    gui->dvdmenu = CreatePopupMenu();    gui->aspectmenu = CreatePopupMenu();    gui->subtitlemenu = CreatePopupMenu();    AppendMenu(gui->submenu, MF_STRING | MF_POPUP, (UINT) gui->trayplaymenu, "Open...");    AppendMenu(gui->submenu, MF_SEPARATOR, 0, 0);    AppendMenu(gui->submenu, MF_STRING, ID_SEEKB, "Seek Backwards");    AppendMenu(gui->submenu, MF_STRING, ID_PTRACK, "Previous Track");    AppendMenu(gui->submenu, MF_STRING, ID_PLAY, "Play/Pause");    AppendMenu(gui->submenu, MF_STRING, ID_STOP, "Stop");    AppendMenu(gui->submenu, MF_STRING, ID_NTRACK, "Next Track");    AppendMenu(gui->submenu, MF_STRING, ID_SEEKF, "Seek Forwards");    AppendMenu(gui->submenu, MF_SEPARATOR, 0, 0);    AppendMenu(gui->submenu, MF_STRING, ID_FULLSCREEN, "Toggle Fullscreen");    AppendMenu(gui->submenu, MF_STRING, ID_MUTE, "Toggle Mute");    AppendMenu(gui->submenu, MF_SEPARATOR, 0, 0);    AppendMenu(gui->submenu, MF_STRING | MF_POPUP, (UINT) gui->aspectmenu, "Aspect Ratio");    AppendMenu(gui->submenu, MF_STRING | MF_POPUP, (UINT) gui->subtitlemenu, "Subtitle Options");    AppendMenu(gui->submenu, MF_STRING | MF_POPUP, (UINT) gui->dvdmenu, "DVD Options");#ifdef USE_DVDREAD    AppendMenu(gui->dvdmenu, MF_STRING | MF_GRAYED, ID_CHAPTERSEL, "Select Title/Chapter...");#endif    AppendMenu(gui->subtitlemenu, MF_STRING, IDSUB_TOGGLE, "Subtitle Visibility On/Off");    AppendMenu(gui->subtitlemenu, MF_STRING, IDSUB_CYCLE, "Cycle Subtitle Languages");    AppendMenu(gui->aspectmenu, MF_STRING, ID_ASPECT1, "Set 16:9");    AppendMenu(gui->aspectmenu, MF_STRING, ID_ASPECT2, "Set 4:3");    AppendMenu(gui->aspectmenu, MF_STRING, ID_ASPECT3, "Set 2.35");    AppendMenu(gui->aspectmenu, MF_SEPARATOR, 0, 0);    AppendMenu(gui->aspectmenu, MF_STRING, ID_ASPECT4, "Original Aspect");    AppendMenu(gui->submenu, MF_SEPARATOR, 0, 0);    AppendMenu(gui->submenu, MF_STRING, IDEXIT, "&Exit");}static void maketransparent(HWND hwnd, COLORREF crTransparent){    HDC mdc = GetDC(hwnd);    RECT rd;    HRGN crRgnres, crRgn, crRgnTmp;    int iX = 0, iY = 0, iLeftX = 0;    int width, height;    GetWindowRect(hwnd, &rd);    width = rd.right - rd.left;    height = rd.bottom - rd.top;    /* create an empty region */    crRgn = CreateRectRgn(0, 0, 0, 0);    /* Create a region from a bitmap with transparency colour of Purple */    for (iY = -1; iY < height; iY++)    {        do        {            /* skip over transparent pixels at start of lines */            while (iX <= width && GetPixel(mdc,iX, iY) == crTransparent) iX++;            /* remember this pixel */            iLeftX = iX;            /* now find first non transparent pixel */            while (iX <= width && GetPixel(mdc,iX, iY) != crTransparent) ++iX;            /* create a temp region on this info */            crRgnTmp = CreateRectRgn(iLeftX, iY, iX, iY+1);            /* combine into main region */            crRgnres = crRgn;            CombineRgn(crRgnres, crRgn, crRgnTmp, RGN_OR);            crRgn = crRgnres;            /* delete the temp region for next pass (otherwise you'll get an ASSERT) */            DeleteObject(crRgnTmp);        } while (iX < width);        iX = 0;    }    SetWindowRgn(hwnd, crRgn, TRUE);    DeleteObject(crRgn);    ReleaseDC(hwnd,mdc);}static int window_render(gui_t *gui, HWND hWnd, HDC hdc, window_priv_t *priv, window *desc, BITMAPINFO binfo){    int i;    SetWindowLongPtr(hWnd, GWLP_USERDATA, (DWORD) gui);    (gui->window_priv_count)++;    gui->window_priv = realloc(gui->window_priv, sizeof(window_priv_t *) * gui->window_priv_count);    priv = gui->window_priv[gui->window_priv_count - 1] = calloc(1, sizeof(window_priv_t));    priv->hwnd = hWnd;    priv->type = desc->type;    priv->background = desc->base->bitmap[0];    memcpy(&priv->img, desc->base->bitmap[0], sizeof(image));    hdc = GetDC(hWnd);    binfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);    binfo.bmiHeader.biWidth = priv->img.width;    binfo.bmiHeader.biHeight = -priv->img.height;    binfo.bmiHeader.biPlanes = 1;    binfo.bmiHeader.biSizeImage = priv->img.width * priv->img.height * (gui->screenbpp / 8);    binfo.bmiHeader.biXPelsPerMeter = 0;    binfo.bmiHeader.biYPelsPerMeter = 0;    binfo.bmiHeader.biClrUsed = 0;    binfo.bmiHeader.biClrImportant = 0;    binfo.bmiHeader.biBitCount = gui->screenbpp;    binfo.bmiHeader.biCompression = BI_RGB;    priv->bitmap = CreateDIBSection(hdc, &binfo, DIB_RGB_COLORS, (void **) &priv->img.data, NULL, 0);    if(!priv->bitmap)    {        mp_msg(MSGT_GPLAYER, MSGL_FATAL, "[GUI] unable to create bitmap for skinned window\n");        return 0;    }    memcpy(priv->img.data, desc->base->bitmap[0]->data, binfo.bmiHeader.biSizeImage);    ReleaseDC(hWnd,hdc);    for (i=0; i<gui->skin->widgetcount; i++)        if(gui->skin->widgets[i]->window == desc->type)            renderwidget(gui->skin, &priv->img, gui->skin->widgets[i], 1);    return 0;}/* creates the sub (AKA video) window,*/extern int create_subwindow(gui_t *gui, char *skindir){    HINSTANCE instance = GetModuleHandle(NULL);    WNDCLASS wc;    RECT rect;    HWND hWnd;    DWORD style = 0;    HDC hdc = NULL;    BITMAPINFO binfo;    window_priv_t *priv = NULL;    window *desc = NULL;    int i, x = -1, y = -1;    vo_colorkey = 0xff00ff;    for (i=0; i<gui->skin->windowcount; i++)        if(gui->skin->windows[i]->type == wiSub)            desc = gui->skin->windows[i];    if(!desc)    {        mp_msg(MSGT_GPLAYER, MSGL_FATAL, "[GUI] Invalid skin description\n");        return 1;    }    windowcolor = vo_colorkey;    colorbrush = CreateSolidBrush(windowcolor);    wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;    wc.lpfnWndProc = SubProc;    wc.cbClsExtra = 0;    wc.cbWndExtra = 0;    wc.hInstance = instance;    wc.hCursor = LoadCursor(NULL, IDC_ARROW);    wc.hIcon = gui->icon;    wc.hbrBackground = NULL; //WM_PAINT will handle background color switching;    wc.lpszClassName = "MPlayer Sub for Windows";    wc.lpszMenuName = NULL;    RegisterClass(&wc);    /* create the sub window menu */    create_submenu(gui);    rect.top = rect.left = 100;    rect.bottom = rect.top+desc->base->bitmap[0]->height;    rect.right = rect.left+desc->base->bitmap[0]->width;    /* our window aspect */    sub_aspect = (float)(rect.right-rect.left)/(rect.bottom-rect.top);    style = fullscreen?WS_VISIBLE | WS_POPUP:WS_OVERLAPPEDWINDOW | WS_SYSMENU | WS_MINIMIZEBOX;    AdjustWindowRect(&rect, style, 0);    if (gui_sub_pos_x >= 0)        x = gui_sub_pos_x;    if (gui_sub_pos_y >= 0)        y = gui_sub_pos_y;    /* out of bounds check */    if (x <= -1 || (x+(rect.right-rect.left) > GetSystemMetrics(SM_CXSCREEN)))        x = CW_USEDEFAULT;    if (y <= -1 || (y+(rect.bottom-rect.top) > GetSystemMetrics(SM_CYSCREEN)))        y = x;    hWnd = CreateWindowEx(0, "MPlayer Sub for Windows", "MPlayer for Windows", style,                          x, y, rect.right-rect.left, rect.bottom-rect.top,                          gui->subwindow, NULL, instance, NULL);    /* load all the window images */    window_render(gui, hWnd, hdc, priv, desc, binfo);    /* enable drag and drop support */    DragAcceptFiles(hWnd, TRUE);    gui->subwindow = hWnd;    if(sub_window)        WinID = gui->subwindow;    ShowWindow(gui->subwindow, SW_SHOW);    UpdateWindow(gui->subwindow);    return 0;}/* loads/updates a skin and creates windows for it */extern int create_window(gui_t *gui, char *skindir){    HINSTANCE instance = GetModuleHandle(NULL);    WNDCLASS wc;    RECT rect;    DWORD style = 0;    HWND hwnd;    HDC hdc = NULL;    BITMAPINFO binfo;    window_priv_t *priv = NULL;    window *desc = NULL;    char dir[MAX_PATH];    unsigned int i;    int x = -1, y = -1;    /* destroy the current main window */    if(gui->skin) destroy_window(gui);    /* get screenproperties */    gui->screenbpp = GetDesktopBitsPerPixel();    gui->screenw = GetSystemMetrics(SM_CXSCREEN);    gui->screenh = GetSystemMetrics(SM_CYSCREEN);    /* load the new skin */    gui->skin = loadskin(skindir, gui->screenbpp);    if(!gui->skin)    {        mp_msg(MSGT_GPLAYER, MSGL_FATAL, "[GUI] fatal error during skinload\n");        /* Set default Skin */        if (skinName) free(skinName);        skinName = strdup("Blue");        /* then force write conf */        cfg_write();        return 1;    }    /* find the description of the mainwindow */    for (i=0; i<gui->skin->windowcount; i++)        if(gui->skin->windows[i]->type == wiMain)            desc = gui->skin->windows[i];    if(!desc)    {        mp_msg(MSGT_GPLAYER, MSGL_FATAL, "[GUI] Invalid skin description\n");        return 1;    }    /* load the icon from the executable */    GetModuleFileName(NULL, dir, MAX_PATH);    gui->icon = ExtractIcon(instance, dir, 0);    /* create the window class */    wc.style = CS_HREDRAW | CS_VREDRAW;    wc.lpfnWndProc = EventProc;    wc.cbClsExtra = 0;    wc.cbWndExtra = 0;    wc.hInstance = instance;    wc.hCursor = LoadCursor(NULL, IDC_ARROW);    wc.hIcon = gui->icon;    wc.hbrBackground = CreateSolidBrush(RGB(0, 0, 0));    wc.lpszClassName = gui->classname = "MPlayer GUI for Windows";    wc.lpszMenuName = NULL;    RegisterClass(&wc);    /* create a context menu */    create_menu(gui);    /* create the systray menu */    create_traymenu(gui);    /* create the mainwindow */    /* TODO implement aligning as described in skin.html */    rect.top = rect.left = 100;    rect.bottom = rect.top+desc->base->bitmap[0]->height;    rect.right = rect.left+desc->base->bitmap[0]->width;    if(desc->decoration) style = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX;    else style = WS_POPUP | WS_SYSMENU;    AdjustWindowRect(&rect, style, 0);    /* Check if out of screen */    if (gui_main_pos_x >= 0)        x = gui_main_pos_x;    if (gui_main_pos_y >= 0)        y = gui_main_pos_y;    if (x <= -1 || (x+(rect.right-rect.left) > GetSystemMetrics(SM_CXFULLSCREEN)))    {        x = (GetSystemMetrics(SM_CXSCREEN) / 2) - ((rect.right-rect.left) / 2);        gui_main_pos_x = x;    }    if (y <= -1 || (y+(rect.bottom-rect.top) > GetSystemMetrics(SM_CYFULLSCREEN)))    {        y = ((GetSystemMetrics(SM_CYSCREEN)-40) - (rect.bottom-rect.top));        gui_main_pos_y = y;    }    hwnd = CreateWindowEx(0, gui->classname, "MPlayer for Windows", style,                          x, y, rect.right-rect.left, rect.bottom-rect.top,                          gui->mainwindow, NULL, instance, NULL);    /* set the systray icon properties */    nid.cbSize = sizeof(NOTIFYICONDATA);    nid.hWnd = hwnd;    nid.uID = 1;    nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;    nid.uCallbackMessage = WM_SYSTRAY;    nid.hIcon = gui->icon;    strcpy(nid.szTip, "MPlayer for Windows");    /* register the systray icon */    Shell_NotifyIcon(NIM_ADD, &nid);    /* load all the window images */    window_render(gui, hwnd, hdc, priv, desc, binfo);    /* enable drag and drop support */    DragAcceptFiles(hwnd, TRUE);    updatedisplay(gui, hwnd);    gui->mainwindow = hwnd;    /* display */    ShowWindow(gui->mainwindow, SW_SHOW);    UpdateWindow(gui->mainwindow);    maketransparent(gui->mainwindow, RGB(255, 0, 255));    return 0;}gui_t *create_gui(char *skindir, char *skinName, void (*playercontrol)(int event)){    gui_t *gui = calloc(1, sizeof(gui_t));    char temp[MAX_PATH];    HWND runningmplayer = FindWindow("MPlayer GUI for Windows", "MPlayer for Windows");    if(runningmplayer)    {        free(gui);        return NULL;    }    gui->startplay = startplay;    gui->playercontrol = playercontrol;    gui->uninit = uninit;    gui->updatedisplay = updatedisplay;    /* create playlist */    gui->playlist = create_playlist();    if(!skinName) skinName = strdup("Blue");    sprintf(temp, "%s\\%s", skindir, skinName);    if(create_window(gui, temp)) return NULL;    if(create_subwindow(gui, temp)) return NULL;    if(console) console_toggle();    return gui;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级二级三级蜜桃| 欧美国产亚洲另类动漫| 欧美变态口味重另类| 中文字幕五月欧美| 日韩av电影免费观看高清完整版| 成人性视频免费网站| 欧美一级xxx| 亚洲一区二区在线播放相泽| 国内精品国产成人国产三级粉色| 欧美影院一区二区三区| 亚洲国产成人一区二区三区| 日韩一区精品字幕| 在线视频你懂得一区二区三区| 2019国产精品| 日本不卡视频在线观看| 日本乱人伦aⅴ精品| 日本一区二区三区电影| 黄色资源网久久资源365| 欧美日韩中文另类| 亚洲成人自拍偷拍| 在线视频一区二区三| 亚洲色图一区二区三区| 成人小视频免费观看| 国产欧美精品一区| 国产精品夜夜嗨| 精品久久久久久久久久久久包黑料| 亚洲一本大道在线| 欧美亚洲综合另类| 亚洲一区二区av在线| 91黄色免费观看| 亚洲综合一二区| 在线一区二区三区做爰视频网站| 国产精品成人在线观看| 播五月开心婷婷综合| 国产精品久久久久9999吃药| 成人精品国产一区二区4080| 国产亚洲va综合人人澡精品| 国产精品一区免费在线观看| 久久久精品天堂| 国产成人精品免费在线| 国产精品的网站| 91国偷自产一区二区三区观看| 亚洲一区二区三区四区在线观看 | 26uuu精品一区二区| 日韩高清一级片| 日韩免费观看高清完整版在线观看| 蜜臀va亚洲va欧美va天堂| 日韩一级成人av| 国产精品一区免费在线观看| 中文字幕成人在线观看| 91麻豆国产在线观看| 亚洲成人在线免费| 日韩免费福利电影在线观看| 国产一区二区三区美女| 国产精品免费丝袜| 91国在线观看| 精品一区精品二区高清| 国产精品久久久久影院亚瑟| 色一区在线观看| 日韩精品欧美成人高清一区二区| 日韩一区二区精品| 成人美女视频在线观看18| 伊人性伊人情综合网| 欧美一区二区三区四区久久 | 不卡高清视频专区| 亚洲福利视频一区| 精品国产乱码久久久久久免费 | 欧美日韩国产高清一区二区三区| 日韩av午夜在线观看| 国产精品视频一区二区三区不卡| 色噜噜狠狠色综合欧洲selulu| 天天综合色天天综合| 国产欧美视频一区二区三区| 欧美性受xxxx| 国产精品18久久久久久vr| 亚洲午夜免费电影| 久久久久国产精品麻豆ai换脸 | 国产精品福利一区| 日韩视频永久免费| 91国偷自产一区二区三区成为亚洲经典 | 亚洲精品在线免费观看视频| 97精品久久久午夜一区二区三区| 日本亚洲视频在线| 亚洲女同女同女同女同女同69| 欧美一级日韩一级| 一本色道久久综合精品竹菊| 激情久久久久久久久久久久久久久久 | 香蕉影视欧美成人| 亚洲人精品一区| 国产精品久线观看视频| 欧美成人艳星乳罩| 欧美挠脚心视频网站| 色综合天天在线| 成人h动漫精品一区二| 久久国产精品区| 亚洲成人免费在线观看| 中文字幕一区二区视频| 国产喂奶挤奶一区二区三区| 日韩欧美久久久| 在线成人免费视频| 精品视频1区2区| 一本一道综合狠狠老| www.亚洲在线| 丰满白嫩尤物一区二区| 国产精品乡下勾搭老头1| 麻豆成人91精品二区三区| 亚洲国产一区二区视频| 亚洲综合色成人| 亚洲乱码国产乱码精品精的特点 | 97精品电影院| 成人av一区二区三区| 国产成人免费网站| 国产成人综合亚洲91猫咪| 久久99精品久久久| 久久精品国产精品亚洲综合| 日日骚欧美日韩| 午夜精品久久久久久久久| 亚洲在线视频免费观看| 亚洲一区av在线| 午夜欧美视频在线观看| 日韩和欧美一区二区三区| 三级亚洲高清视频| 日产精品久久久久久久性色| 亚洲成人在线观看视频| 美女视频第一区二区三区免费观看网站| 日韩精品电影一区亚洲| 美女视频一区二区| 国产一区二区三区久久久| 国产美女精品人人做人人爽| 国产成人午夜精品影院观看视频 | 国产精品系列在线播放| 国产91综合网| 色综合天天综合给合国产| 欧美日韩色一区| 精品成人在线观看| 国产精品毛片大码女人| 亚洲毛片av在线| 全国精品久久少妇| 成人三级伦理片| 欧美亚洲一区二区在线| 精品国精品国产| 自拍偷拍欧美激情| 奇米影视一区二区三区| 国产乱人伦精品一区二区在线观看| 国产精品69毛片高清亚洲| 色噜噜狠狠色综合欧洲selulu| 91精品啪在线观看国产60岁| 久久综合色之久久综合| 亚洲视频在线一区二区| 另类小说综合欧美亚洲| www.色综合.com| 欧美日本不卡视频| 欧美国产日产图区| 日韩和欧美的一区| 成人高清免费在线播放| 欧美精品色综合| 中文子幕无线码一区tr | 国产精品久久99| 日韩电影一区二区三区四区| 国产成人精品影院| 91精品中文字幕一区二区三区| 欧美国产国产综合| 美国毛片一区二区| 色综合久久久久综合| 亚洲精品一区二区三区99| 一区二区三区四区国产精品| 精品亚洲aⅴ乱码一区二区三区| 成人动漫中文字幕| 欧美一区二区三区喷汁尤物| 亚洲特级片在线| 国产激情91久久精品导航| 欧美日韩一区二区欧美激情 | 色乱码一区二区三区88| 精品久久久久久久久久久久久久久久久| 亚洲精选在线视频| 波多野结衣91| 久久久久久久久岛国免费| 婷婷国产在线综合| 在线视频欧美精品| 亚洲欧美一区二区视频| 国产精品 欧美精品| 日韩欧美国产1| 视频一区视频二区中文字幕| 91丨九色丨黑人外教| 中文字幕免费不卡| 国产永久精品大片wwwapp| 欧美一区二区三区公司| 亚洲va欧美va人人爽午夜| 一本色道亚洲精品aⅴ| 中文字幕在线观看一区二区| 国产精品18久久久久久vr| 精品国内二区三区| 国产一区二区三区四区五区入口 | 偷拍自拍另类欧美| 欧美日韩国产不卡| 亚洲一卡二卡三卡四卡五卡| 欧洲一区在线电影| 亚洲一区二区三区视频在线| 91国内精品野花午夜精品| 亚洲综合色自拍一区|