⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 VC++视频开发实例集锦(包括“远程视频监控”"语音识别系统"等13个经典例子)
💻 C
📖 第 1 页 / 共 5 页
字号:
                       width * (minutes % 10), 0);
        // Separator
        window_bmp_blt(hWnd, graphics.bmp_main_time_font,
                       left + (5 * width), top, width, height, width * 10,
                       0);
        // seconds
        window_bmp_blt(hWnd, graphics.bmp_main_time_font,
                       left + (6 * width), top, width, height,
                       width * (seconds / 10), 0);
        window_bmp_blt(hWnd, graphics.bmp_main_time_font,
                       left + (7 * width), top, width, height,
                       width * (seconds % 10), 0);

        if (options.show_remaining_time == TRUE)
            window_bmp_blt(hWnd, graphics.bmp_main_time_font, left, top,
                           width, height, width * 11, 0);
        else
            window_bmp_blt(hWnd, graphics.bmp_main_up, left, top, width,
                           height, left, top);
    }
}

void    main_draw_tracknr(HWND hWnd)
{
    int     top = Skin.Object[TrackText].y;
    int     left = Skin.Object[TrackText].x;
    int     width = Skin.Object[TrackText].w;
    int     height = Skin.Object[TrackText].h;
    int     nummertje;
    int     tracknr = 0;//globals.main_int_playlist_track_number;
    CP_HPLAYLISTITEM hCursor;

    for(hCursor= CPL_GetActiveItem(globals.m_hPlaylist); hCursor; hCursor = CPLI_Prev(hCursor))
        tracknr++;

    if (left) {
        nummertje = tracknr % 10;
        window_bmp_blt(hWnd, graphics.bmp_main_track_font,
                       left + (2 * width), top, width, height,
                       width * (nummertje), 0);
        nummertje = ((tracknr - nummertje) % 100);
        window_bmp_blt(hWnd, graphics.bmp_main_track_font, left + width,
                       top, width, height, width * (nummertje / 10), 0);
        nummertje = ((tracknr - nummertje) % 1000);
        window_bmp_blt(hWnd, graphics.bmp_main_track_font, left, top,
                       width, height, width * (nummertje / 100), 0);
    }
}

BOOL    path_is_directory(char *filename)
{
    DWORD   attribs = GetFileAttributes(filename);
    if (attribs & FILE_ATTRIBUTE_DIRECTORY)
        return TRUE;
    else
        return FALSE;
}

int     playlist_open_file(BOOL clearlist)
{
    OPENFILENAME fn;
    char    filefilter[] =
        "All Supported files\0*.mp1;*.mp2;*.mp3;*.m3u;*.pls;*.wav;*.ogg\0"
        "MPEG audio files (*.mp1;*.mp2;*.mp3)\0*.mp1;*.mp2;*.mp3\0"
        "Vorbis files (*.ogg)\0*.ogg\0"
        "Playlist files (*.m3u;*.pls)\0*.m3u;*.pls\0"
        "WAV files (*.wav)\0*.wav\0"
        "All Files (*.*)\0*.*\0";
    BOOL    returnval;
    char    initialfilename[MAX_PATH * 200] = "";
    fn.lStructSize = sizeof(OPENFILENAME);
    fn.hwndOwner = (HWND) GetWindowLong(windows.wnd_main, DWL_USER);
    fn.hInstance = NULL;
    fn.lpstrFilter = filefilter;
    fn.lpstrCustomFilter = NULL;
    fn.nMaxCustFilter = 0;
    fn.nFilterIndex = 0;
    fn.lpstrFile = initialfilename;
    fn.nMaxFile = MAX_PATH * 200;
    fn.lpstrFileTitle = NULL;
    fn.nMaxFileTitle = 0;
    fn.lpstrInitialDir = options.last_used_directory;
    fn.lpstrTitle = NULL;
    fn.Flags =
        OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY | OFN_EXPLORER |
        OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_ENABLESIZING;
    fn.nFileOffset = 0;
    fn.nFileExtension = 0;
    fn.lpstrDefExt = NULL;
    fn.lCustData = 0;
    fn.lpfnHook = NULL;
    fn.lpTemplateName = NULL;
    returnval = GetOpenFileName(&fn);
    if (returnval != FALSE) {
        char   *newfilename;
        char    path_buffer[_MAX_PATH];
        char    path_buffer2[_MAX_PATH];

        if (clearlist)
            CPL_Empty(globals.m_hPlaylist);

        strcpy(path_buffer, fn.lpstrFile);
        if (path_is_directory(fn.lpstrFile) == TRUE) {
            path_add_backslash(path_buffer);
        } else {
            path_remove_filespec(path_buffer);
        }
        strcpy(options.last_used_directory, path_buffer);

        newfilename = fn.lpstrFile + fn.nFileOffset;
        while (newfilename[0] != 0) {
            strcpy(path_buffer2, path_buffer);
            strcat(path_buffer2, newfilename);
            CPL_SyncLoadNextFile(globals.m_hPlaylist);
            CPL_AddFile(globals.m_hPlaylist, path_buffer2);
            newfilename = newfilename + strlen(newfilename) + 1;
        }

        return 1;
    }
    return 0;
}

void    main_draw_vu_from_mouse(HWND hWnd, int vunummer, int vuwaarde)
{

    if (Skin.Object[vunummer].maxw == 1)	// Vertical Slider
    {
        if (Skin.Object[vunummer].x2 != 0) {
            window_bmp_blt(hWnd, graphics.bmp_main_up,
                           Skin.Object[vunummer].x,
                           Skin.Object[vunummer].y,
                           Skin.Object[vunummer].w,
                           Skin.Object[vunummer].h +
                           Skin.Object[vunummer].h2,
                           Skin.Object[vunummer].x,
                           Skin.Object[vunummer].y);

            window_bmp_blt(hWnd, graphics.bmp_main_down,
                           Skin.Object[vunummer].x,
                           vuwaarde,
                           Skin.Object[vunummer].w2,
                           Skin.Object[vunummer].h2,
                           Skin.Object[vunummer].x2,
                           Skin.Object[vunummer].y2);
            return;
        }

        window_bmp_blt(hWnd, graphics.bmp_main_up,
                       Skin.Object[vunummer].x,
                       vuwaarde,
                       Skin.Object[vunummer].w,
                       Skin.Object[vunummer].h - (vuwaarde -
                                                  Skin.Object[vunummer].y),
                       Skin.Object[vunummer].x, vuwaarde);

        window_bmp_blt(hWnd, graphics.bmp_main_down,
                       Skin.Object[vunummer].x,
                       Skin.Object[vunummer].y,
                       Skin.Object[vunummer].w,
                       vuwaarde - Skin.Object[vunummer].y,
                       Skin.Object[vunummer].x, Skin.Object[vunummer].y);
    } else			// Horizontal Slider
    {
        if (Skin.Object[vunummer].x2 != 0) {
            window_bmp_blt(hWnd, graphics.bmp_main_up,
                           Skin.Object[vunummer].x,
                           Skin.Object[vunummer].y,
                           Skin.Object[vunummer].w +
                           Skin.Object[vunummer].w2,
                           Skin.Object[vunummer].h,
                           Skin.Object[vunummer].x,
                           Skin.Object[vunummer].y);

            window_bmp_blt(hWnd, graphics.bmp_main_down,
                           vuwaarde,
                           Skin.Object[vunummer].y,
                           Skin.Object[vunummer].w2,
                           Skin.Object[vunummer].h2,
                           Skin.Object[vunummer].x2,
                           Skin.Object[vunummer].y2);

            return;
        }
        window_bmp_blt(hWnd, graphics.bmp_main_up,
                       Skin.Object[vunummer].x,
                       Skin.Object[vunummer].y,
                       vuwaarde - Skin.Object[vunummer].x,
                       Skin.Object[vunummer].h,
                       Skin.Object[vunummer].x, Skin.Object[vunummer].y);

        window_bmp_blt(hWnd, graphics.bmp_main_down,
                       vuwaarde,
                       Skin.Object[vunummer].y,
                       Skin.Object[vunummer].w - (vuwaarde -
                                                  Skin.Object[vunummer].x),
                       Skin.Object[vunummer].h, vuwaarde,
                       Skin.Object[vunummer].y);
    }
}

void    main_draw_vu_from_value(HWND hWnd, int vunummer, int vuwaarde)
{
    int     positionwaarde;

    if (Skin.Object[vunummer].maxw == 1)	// Vertical slider
    {
        switch (vunummer) {
        case VolumeSlider:
            positionwaarde =
                (int) ((float) Skin.Object[vunummer].y +
                       Skin.Object[vunummer].h -
                       (((float) vuwaarde / (float) 100.0f) *
                        (float) Skin.Object[vunummer].h));
            break;
        case PositionSlider:
            positionwaarde =
                (int) (Skin.Object[PositionSlider].y +
                       Skin.Object[PositionSlider].h) - vuwaarde;
            if (vuwaarde > Skin.Object[PositionSlider].h)
                positionwaarde = Skin.Object[PositionSlider].y;
            break;
        default:		// so it's a eq
            positionwaarde =
                (int) ((float) Skin.Object[vunummer].y +
                       Skin.Object[vunummer].h -
                       (
                           ((float) (vuwaarde + 128.0f) /
                            (float) 255.0f) * (float) Skin.Object[vunummer].h));
        }

        main_draw_vu_from_mouse(hWnd, vunummer, positionwaarde);
    } else			// Horizontal Slider
    {
        switch (vunummer) {
        case VolumeSlider:
            positionwaarde =
                (int) ((float) Skin.Object[vunummer].x +
                       (((float) vuwaarde / (float) 100.0f) *
                        (float) Skin.Object[vunummer].w));
            break;
        case PositionSlider:
            positionwaarde =
                (int) vuwaarde + Skin.Object[PositionSlider].x;
            if (vuwaarde > Skin.Object[PositionSlider].w)
                positionwaarde =
                    Skin.Object[PositionSlider].w +
                    Skin.Object[PositionSlider].x;
            break;
        default:		// so it's a eq
            positionwaarde =
                (int) ((float) Skin.Object[vunummer].x +
                       (
                           ((float) (vuwaarde + 128.0) /
                            (float) 255.0f) * (float) Skin.Object[vunummer].w));
        }
        main_draw_vu_from_mouse(hWnd, vunummer, positionwaarde);

    }
}

BOOL    main_draw_vu_all(HWND hWnd, WPARAM wParam, LPARAM lParam,
                         BOOL rememberlastval)
{
    POINTS  cursorpos;
    int     teller;
    int     moveit = TRUE;

    cursorpos = MAKEPOINTS(lParam);

    for (teller = VolumeSlider; teller <= Eq8; teller++) {

        int		knobx=0,knoby=0;
        int		addx=0,addy=0;

        if (Skin.Object[teller].maxw == 0) { // we have  a horizontal one
            knobx=Skin.Object[teller].w2/2;
            addx=1;
        }
        else { // we have  a vertical one
            knoby=Skin.Object[teller].h2/2;
            addy=1;
        }
        if (cursorpos.x >= Skin.Object[teller].x + knobx - addx
                && cursorpos.y >= Skin.Object[teller].y + knoby - addy
                && cursorpos.x <=
                Skin.Object[teller].x + Skin.Object[teller].w + (knobx*2) + addx
                && cursorpos.y <=
                Skin.Object[teller].y + Skin.Object[teller].h + (knoby*2) + addy) {
            int waarde=0;

            if (Skin.Object[teller].maxw == 0)
                cursorpos.x-=knobx;
            else
                cursorpos.y-=knoby;


            moveit = FALSE;
            switch (teller) {
            case Eq1:
            case Eq2:
            case Eq3:
            case Eq4:
            case Eq5:
            case Eq6:
            case Eq7:
            case Eq8:
                if (globals.main_bool_slider_keep_focus == FALSE) {
                    if (Skin.Object[teller].maxw == 1)
                        options.eq_settings[(teller - Eq1) + 1] =
                            (int) (
                                ((Skin.Object
                                  [teller].y +
                                  Skin.Object[teller].h) -
                                 cursorpos.y) * (255 /
                                                 (float)
                                                 Skin.Object[teller].
                                                 h)) - 128;
                    else
                        options.eq_settings[(teller - Eq1) + 1] =
                            (int) ((cursorpos.x - Skin.Object[teller].x) *
                                   (255 / (float) Skin.Object[teller].w)) -
                            128;
                    if(options.eq_settings[(teller - Eq1) + 1]>127) options.eq_settings[(teller - Eq1) + 1]=127;
                    if(options.eq_settings[(teller - Eq1) + 1]<-128)   options.eq_settings[(teller - Eq1) + 1]=-128;

                    waarde=options.eq_settings[(teller - Eq1) + 1];
                    main_set_eq();
                }
                break;
            case VolumeSlider:
                {
                    globals.main_bool_slider_keep_focus = TRUE;
                    if (Skin.Object[teller].maxw == 1)	// we have  a vertical one
                    {
                        globals.m_iVolume = (int) (((100.0f / (float)
                                                     Skin.Object[teller].h) *
                                                    ( (Skin.Object[teller].y +
                                                       Skin.Object[teller].h) -
                                                      cursorpos.y)));
                    }
                    else
                    {
                        globals.m_iVolume =
                            (int) ((cursorpos.x - Skin.Object[teller].x) *
                                   (100 / (float) Skin.Object[teller].w));
                    }

                    if(globals.m_iVolume>100) globals.m_iVolume=100;
                    if(globals.m_iVolume<0) globals.m_iVolume=0;

                    //				CP_TRACE1("level=%d",globals.m_iVolume);
                    CPI_Player__SetVolume(globals.m_hPlayer, globals.m_iVolume);
                    waarde=globals.m_iVolume;
                    break;
                }
            case PositionSlider:
                if(globals.m_bStreaming == TRUE)
                {
                    waarde = globals.m_iStreamingPortion;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -