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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gui.c

?? 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;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品美女一区二区| 日韩成人精品在线观看| 国产精品毛片大码女人| 久久久久久亚洲综合| 精品国产凹凸成av人导航| 日韩一区二区免费在线观看| 欧美剧情片在线观看| 欧美日韩一区不卡| 欧美精选一区二区| 欧美一区二区三区免费大片 | 欧美久久久久免费| 在线视频国内自拍亚洲视频| 色呦呦网站一区| 91国偷自产一区二区三区成为亚洲经典| 欧美日韩午夜在线视频| 成人黄色软件下载| 国产成人综合亚洲网站| 国产成人免费高清| 成av人片一区二区| 91久久精品一区二区| 欧美系列在线观看| 日韩小视频在线观看专区| 欧美成人r级一区二区三区| 久久色在线视频| 国产精品久久久久久一区二区三区 | av成人免费在线观看| 一本色道综合亚洲| 欧美视频在线一区| 日韩欧美中文字幕公布| 久久看人人爽人人| 综合在线观看色| 亚洲精品v日韩精品| 日韩专区中文字幕一区二区| 精品一区二区三区影院在线午夜| 亚洲欧美一区二区视频| 一区二区三区欧美久久| 亚洲成av人片| 韩国精品一区二区| 99视频在线观看一区三区| 精品视频一区二区不卡| 精品sm在线观看| 亚洲欧美日韩国产中文在线| 日韩av在线发布| 盗摄精品av一区二区三区| 色综合天天综合网天天看片| 91精品中文字幕一区二区三区| 欧美在线观看一区二区| xnxx国产精品| 一区二区三区蜜桃网| 国产在线国偷精品免费看| 99久久综合99久久综合网站| 制服丝袜日韩国产| 中文字幕在线一区免费| 蜜臀av在线播放一区二区三区| 日韩国产一二三区| 成人国产精品视频| 欧美一级日韩一级| 自拍偷自拍亚洲精品播放| 天堂va蜜桃一区二区三区| 处破女av一区二区| 欧美一级免费观看| 亚洲欧美韩国综合色| 久久精品国产999大香线蕉| 91色|porny| 久久综合999| 午夜一区二区三区视频| 不卡一区在线观看| 欧美成人vr18sexvr| 亚洲高清免费视频| aaa国产一区| 久久这里都是精品| 日韩精品久久久久久| 色综合久久久久综合体| 中文字幕免费不卡| 麻豆一区二区在线| 欧美情侣在线播放| 亚洲黄色录像片| 国产大片一区二区| 日韩免费观看2025年上映的电影| 精品国产一区二区三区久久久蜜月| 日韩精品一区二区在线观看| 亚洲一级在线观看| 国产成人欧美日韩在线电影| 日韩精品一区二区三区中文不卡| 久久精品一二三| 美女视频黄久久| 欧美午夜不卡在线观看免费| 成人免费一区二区三区视频 | 天堂资源在线中文精品| 91在线观看地址| 亚洲国产高清不卡| 国产揄拍国内精品对白| 日韩欧美中文一区| 亚洲国产成人精品视频| 91性感美女视频| 中文字幕在线观看一区二区| 狠狠久久亚洲欧美| 日韩你懂的电影在线观看| 亚洲mv在线观看| 欧洲av一区二区嗯嗯嗯啊| 亚洲免费视频成人| 91视频91自| 亚洲美腿欧美偷拍| 在线一区二区三区做爰视频网站| 日韩一区二区电影在线| 日韩国产高清在线| 777精品伊人久久久久大香线蕉| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产麻豆9l精品三级站| 久久亚洲春色中文字幕久久久| 国产精品成人一区二区三区夜夜夜 | 欧美日韩亚洲丝袜制服| 亚洲第一激情av| 欧美嫩在线观看| 日韩电影在线观看一区| 日韩欧美一区二区不卡| 日本强好片久久久久久aaa| 欧美二区在线观看| 麻豆精品国产91久久久久久| 欧美tickling挠脚心丨vk| 国产一区二区福利视频| 亚洲国产成人午夜在线一区| 99久久99久久精品国产片果冻| 欧美一区二区人人喊爽| 日韩激情av在线| 精品少妇一区二区三区| 国产麻豆精品在线| 中文字幕在线免费不卡| 在线国产亚洲欧美| 午夜精品一区二区三区三上悠亚| 国产成人综合亚洲网站| ●精品国产综合乱码久久久久 | 色婷婷综合视频在线观看| 一二三四社区欧美黄| 91精品国产美女浴室洗澡无遮挡| 国产视频亚洲色图| 99re成人精品视频| 亚洲不卡在线观看| 制服丝袜亚洲色图| 国产a区久久久| 亚洲一区二区三区在线| 欧美一区二区三区日韩| 国产成人免费网站| 亚洲一区二区三区四区在线观看 | 国产精品亚洲第一| 国产日韩欧美一区二区三区综合| 午夜精品久久久久久久99水蜜桃| 成人免费毛片片v| 亚洲三级电影网站| 51久久夜色精品国产麻豆| 国产在线视频一区二区| 中文字幕中文在线不卡住| 欧美日韩电影一区| 国产大陆亚洲精品国产| 一区二区三区波多野结衣在线观看| 国产精品影音先锋| 亚洲猫色日本管| 日韩欧美高清dvd碟片| 91蜜桃视频在线| 日本欧洲一区二区| 亚洲品质自拍视频| 26uuuu精品一区二区| 欧美在线观看视频一区二区| 韩国精品免费视频| 亚洲国产乱码最新视频 | 国产亚洲精品免费| 欧美三级韩国三级日本一级| 国产91综合一区在线观看| 亚洲成人综合在线| 国产精品久久久久精k8| 精品国产一区二区精华| 在线观看av一区二区| 国产成人超碰人人澡人人澡| 日本特黄久久久高潮| 国产精品免费看片| 日韩精品专区在线| 欧洲日韩一区二区三区| 国产suv精品一区二区883| 日韩av午夜在线观看| 亚洲免费观看高清完整版在线观看熊| 成人精品国产免费网站| 老司机精品视频一区二区三区| 日韩欧美成人激情| 欧美日韩国产小视频在线观看| 亚洲一二三区在线观看| 国产色综合久久| 日韩视频免费观看高清完整版在线观看| 自拍视频在线观看一区二区| 日韩三级在线免费观看| 欧美日韩小视频| 在线欧美小视频| av网站免费线看精品| 精品一区在线看| 欧美aaaaa成人免费观看视频| 日韩欧美中文字幕制服| 宅男噜噜噜66一区二区66| 欧美无砖砖区免费| 不卡一区二区在线| 成人app软件下载大全免费| 国产高清成人在线|