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

📄 statisticsdlg.cpp

📁 media player 控件源码 用EVC编译可以进行对WINCE下media player控制
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        {
            m_szFilename = new TCHAR[_tcslen(pStats->szFilename) + 1];

            if (NULL != m_szFilename)
            {
                _tcscpy(m_szFilename, pStats->szFilename);
            }
        }

        m_bFNChanged = true;
    }

    Refresh();

    return;
}

///////////////////////////////////////////////////////////////////////////////
// Name: CStatisticsDlg::Refresh()
// Desc: This function copies what is currently in member variables into the
//       associated edit box on the dialog.
///////////////////////////////////////////////////////////////////////////////
void CStatisticsDlg::Refresh()
{
    LONG  cx;
    TCHAR szText[REGKEY_SIZE];
    TCHAR szBuf[20];
    HDC   hdc = NULL;
    RECT rc;
    int width;

    int   itemNumber = 2;

    hdc = ::GetDC(m_hListView);

    cx = m_iMaxWidth;

    if (m_bFNChanged || -1 == m_iFNIndex)
    {
        if (-1 == m_iFNIndex)
        {
            ListView_DeleteAllItems(m_hListView);

            InsertTwoItems(0);

            m_iMaxWidth = 0;
            m_iFNIndex = 0;
            m_iFRIndex = -1;
            m_iARIndex = -1;
            m_iFDIndex = -1;
            m_iBWIndex = -1;
            m_iSPIndex = -1;
            m_iRCIndex = -1;
            m_iRPIndex = -1;
            m_iLPIndex = -1;
            m_iECIndex = -1;
            m_iMIIndex = -1;
            m_iADIndex = -1;
        }

        TCHAR * pszFilename = (m_szFilename ? m_szFilename : L"");
        TCHAR * pszSlash    = wcsrchr(pszFilename, L'\\');

        RefreshItem(m_iFNIndex, L"Filename:", (pszSlash ? ++pszSlash : pszFilename), hdc, cx);
    }

    if (-1 == m_iFRIndex && m_bFRChanged && 0.0 != m_dFrameRate)
    {
        m_iFRIndex = itemNumber;

        InsertTwoItems(m_iFRIndex);

        if (-1 != m_iARIndex) m_iARIndex += 2;
        if (-1 != m_iFDIndex) m_iFDIndex += 2;
        if (-1 != m_iBWIndex) m_iBWIndex += 2;
        if (-1 != m_iSPIndex) m_iSPIndex += 2;
        if (-1 != m_iRCIndex) m_iRCIndex += 2;
        if (-1 != m_iRPIndex) m_iRPIndex += 2;
        if (-1 != m_iLPIndex) m_iLPIndex += 2;
        if (-1 != m_iECIndex) m_iECIndex += 2;
        if (-1 != m_iMIIndex) m_iMIIndex += 2;
        if (-1 != m_iADIndex) m_iMIIndex += 2;

        itemNumber += 2;
    }
    else if (-1 != m_iFRIndex)
    {
        itemNumber = m_iFRIndex + 2;
    }

    if (0.0 != m_dFrameRate && m_bFRChanged)
    {
        wsprintf(szBuf, TEXT("%.2f"), m_dFrameRate);

        RefreshItem(m_iFRIndex, L"Desired Frame Rate:", szBuf, hdc, cx);
    }

    if (-1 == m_iARIndex && m_bARChanged && 0.0 != m_dActualRate)
    {
        m_iARIndex = itemNumber;

        InsertTwoItems(m_iARIndex);

        if (-1 != m_iFDIndex) m_iFDIndex += 2;
        if (-1 != m_iBWIndex) m_iBWIndex += 2;
        if (-1 != m_iSPIndex) m_iSPIndex += 2;
        if (-1 != m_iRCIndex) m_iRCIndex += 2;
        if (-1 != m_iRPIndex) m_iRPIndex += 2;
        if (-1 != m_iLPIndex) m_iLPIndex += 2;
        if (-1 != m_iECIndex) m_iECIndex += 2;
        if (-1 != m_iMIIndex) m_iMIIndex += 2;
        if (-1 != m_iADIndex) m_iMIIndex += 2;

        itemNumber += 2;
    }
    else if (-1 != m_iARIndex)
    {
        itemNumber = m_iARIndex + 2;
    }

    if (0.0 != m_dActualRate && m_bARChanged)
    {
        wsprintf(szBuf, L"%.2f", m_dActualRate);

        RefreshItem(m_iARIndex, L"Frame Rate:", szBuf, hdc, cx);
    }

    // 10/15/03 - meirab - adding audio glitches counts
    if( -1 == m_iADIndex )
    {
        m_iADIndex = itemNumber;

        InsertTwoItems(m_iADIndex);

        if (-1 != m_iBWIndex) m_iBWIndex += 2;
        if (-1 != m_iSPIndex) m_iSPIndex += 2;
        if (-1 != m_iRCIndex) m_iRCIndex += 2;
        if (-1 != m_iRPIndex) m_iRPIndex += 2;
        if (-1 != m_iLPIndex) m_iLPIndex += 2;
        if (-1 != m_iECIndex) m_iECIndex += 2;
        if (-1 != m_iMIIndex) m_iMIIndex += 2;

        itemNumber += 2;
        wsprintf(szBuf, L"%ld", m_lDroppedAudioPackets);
        RefreshItem( m_iADIndex, L"Audio Glitches", szBuf, hdc, cx);
    }


    if (-1 == m_iFDIndex && m_bFDChanged && 0 != m_lFramesDropped)
    {
        m_iFDIndex = itemNumber;

        InsertTwoItems(m_iFDIndex);

        if (-1 != m_iBWIndex) m_iBWIndex += 2;
        if (-1 != m_iSPIndex) m_iSPIndex += 2;
        if (-1 != m_iRCIndex) m_iRCIndex += 2;
        if (-1 != m_iRPIndex) m_iRPIndex += 2;
        if (-1 != m_iLPIndex) m_iLPIndex += 2;
        if (-1 != m_iECIndex) m_iECIndex += 2;
        if (-1 != m_iMIIndex) m_iMIIndex += 2;

        itemNumber += 2;
    }
    else if (-1 != m_iFDIndex)
    {
        itemNumber = m_iFDIndex + 2;
    }

    if (0 != m_lFramesDropped && m_bFDChanged)
    {
        wsprintf(szBuf, L"%ld", m_lFramesDropped);

        RefreshItem(m_iFDIndex, L"Frames Dropped:", szBuf, hdc, cx);
    }

    if (-1 == m_iBWIndex && m_bBWChanged && 0 != m_lBandwidth)
    {
        m_iBWIndex = itemNumber;

        InsertTwoItems(m_iBWIndex);

        if (-1 != m_iSPIndex) m_iSPIndex += 2;
        if (-1 != m_iRCIndex) m_iRCIndex += 2;
        if (-1 != m_iRPIndex) m_iRPIndex += 2;
        if (-1 != m_iLPIndex) m_iLPIndex += 2;
        if (-1 != m_iECIndex) m_iECIndex += 2;
        if (-1 != m_iMIIndex) m_iMIIndex += 2;

        itemNumber += 2;
    }
    else if (-1 != m_iBWIndex)
    {
        itemNumber = m_iBWIndex + 2;
    }

    if (0 != m_lBandwidth && m_bBWChanged)
    {
        wsprintf(szBuf, L"%ld", m_lBandwidth);

        RefreshItem(m_iBWIndex, L"Bandwidth:", szBuf, hdc, cx);
    }

    szText[0] = L'\0';
    switch (m_lSourceProtocol)
    {
    case nsMulticast:
        LoadString( g_hInst, IDS_STREAM_MULTICAST_NO_CONNECTION, szText, REGKEY_SIZE );
        break;

    case nsMulticastPlus:
        LoadString( g_hInst, IDS_STREAM_MULTICAST, szText, REGKEY_SIZE );
        break;

    case nsUDP:
        LoadString( g_hInst, IDS_STREAM_UNICAST_UDP, szText, REGKEY_SIZE );
        break;

    case nsTCP:
        LoadString( g_hInst, IDS_STREAM_UNICAST_TCP, szText, REGKEY_SIZE );
        break;

    case nsDistribution:
        LoadString( g_hInst, IDS_STREAM_UNICAST_DISTRIBUTION, szText, REGKEY_SIZE );
        break;

    case nsHTTP:
        LoadString( g_hInst, IDS_STREAM_UNICAST_HTTP, szText, REGKEY_SIZE );
        break;

    case nsFile:
        LoadString( g_hInst, IDS_STREAM_NETWORKED_FILE, szText, REGKEY_SIZE );
        break;

    default:
        wcscpy(szText, L"Local File");
        break;
    }

    if (-1 == m_iSPIndex && m_bSPChanged && L'\0' != szText[0])
    {
        m_iSPIndex = itemNumber;

        InsertTwoItems(m_iSPIndex);

        if (-1 != m_iRCIndex) m_iRCIndex += 2;
        if (-1 != m_iRPIndex) m_iRPIndex += 2;
        if (-1 != m_iLPIndex) m_iLPIndex += 2;
        if (-1 != m_iECIndex) m_iECIndex += 2;
        if (-1 != m_iMIIndex) m_iMIIndex += 2;

        itemNumber += 2;
    }
    else if (-1 != m_iSPIndex)
    {
        itemNumber = m_iSPIndex + 2;
    }

    if (L'\0' != szText[0] && m_bSPChanged)
    {
        RefreshItem(m_iSPIndex, L"Source Protocol:", szText, hdc, cx);
    }

    if (-1 == m_iECIndex && m_bECChanged && NULL != m_szErrorCorrection && L'\0' != m_szErrorCorrection[0])
    {
        m_iECIndex = itemNumber;

        InsertTwoItems(m_iECIndex);

        if (-1 != m_iRCIndex) m_iRCIndex += 2;
        if (-1 != m_iRPIndex) m_iRPIndex += 2;
        if (-1 != m_iLPIndex) m_iLPIndex += 2;
        if (-1 != m_iMIIndex) m_iMIIndex += 2;

        itemNumber += 2;
    }
    else if (-1 != m_iECIndex)
    {
        itemNumber = m_iECIndex + 2;
    }

    if (NULL != m_szErrorCorrection
        && L'\0' != m_szErrorCorrection[0])
    {
        RefreshItem(m_iECIndex, L"Error Correction:", m_szErrorCorrection, hdc, cx);
    }

    if (-1 == m_iRCIndex && (m_bRCChanged || m_bRPChanged || m_bLPChanged)
        && (0 != m_lReceivedPackets || 0 != m_lRecoveredPackets || 0 != m_lLostPackets))
    {
        m_iRCIndex = itemNumber;

        InsertTwoItems(m_iRCIndex);

        if (-1 != m_iRPIndex) m_iRPIndex += 2;
        if (-1 != m_iLPIndex) m_iLPIndex += 2;
        if (-1 != m_iMIIndex) m_iMIIndex += 2;

        itemNumber += 2;
    }
    else if (-1 != m_iRCIndex)
    {
        itemNumber = m_iRCIndex + 2;
    }

    if (-1 == m_iRPIndex && (m_bRCChanged || m_bRPChanged || m_bLPChanged)
        && (0 != m_lReceivedPackets || 0 != m_lRecoveredPackets || 0 != m_lLostPackets))
    {
        m_iRPIndex = itemNumber;

        InsertTwoItems(m_iRPIndex);

        if (-1 != m_iLPIndex) m_iLPIndex += 2;
        if (-1 != m_iMIIndex) m_iMIIndex += 2;

        itemNumber += 2;
    }
    else if (-1 != m_iRPIndex)
    {
        itemNumber = m_iRPIndex + 2;
    }

    if (-1 == m_iLPIndex && (m_bRCChanged || m_bRPChanged || m_bLPChanged)
        && (0 != m_lReceivedPackets || 0 != m_lRecoveredPackets || 0 != m_lLostPackets))
    {
        m_iLPIndex = itemNumber;

        InsertTwoItems(m_iLPIndex);

        if (-1 != m_iMIIndex) m_iMIIndex += 2;

        itemNumber += 2;
    }
    else if (-1 != m_iLPIndex)
    {
        itemNumber = m_iLPIndex + 2;
    }

    if ( (0 != m_lReceivedPackets
          || 0 != m_lRecoveredPackets
          || 0 != m_lLostPackets)
        && (m_bRCChanged || m_bRPChanged || m_bLPChanged))
    {
        wsprintf(szBuf, TEXT("%ld"), m_lReceivedPackets);

        RefreshItem(m_iRCIndex, L"Received Packets:", szBuf, hdc, cx);

        wsprintf(szBuf, TEXT("%ld"), m_lRecoveredPackets);

        RefreshItem(m_iRPIndex, L"Recovered Packets:", szBuf, hdc, cx);

        wsprintf(szBuf, TEXT("%ld"), m_lLostPackets);

        RefreshItem(m_iLPIndex, L"Lost Packets:", szBuf, hdc, cx);
    }

    //
    // Get memory information
    //
    MEMORYSTATUS memstat;

    memstat.dwLength = sizeof (MEMORYSTATUS);
    GlobalMemoryStatus(&memstat);

    if (-1 == m_iMIIndex)
    {
        m_iMIIndex = ListView_GetItemCount(m_hListView);

        InsertTwoItems(m_iMIIndex);
    }

    wsprintf(szText, L"%d%% Used (%d KB Available)", memstat.dwMemoryLoad, memstat.dwAvailPhys/1024);

    RefreshItem(m_iMIIndex, L"Memory Usage", szText, hdc, cx);

    m_bFRChanged = false;
    m_bARChanged = false;
    m_bFDChanged = false;
    m_bBWChanged = false;
    m_bSPChanged = false;
    m_bRCChanged = false;
    m_bRPChanged = false;
    m_bLPChanged = false;
    m_bECChanged = false;
    m_bFNChanged = false;

    if (hdc)
    {
        ::ReleaseDC(m_hListView, hdc);
    }

    // clean up the list view
    GetClientRect(m_hListView, &rc);

    width = rc.right - rc.left;

    if (cx < width)
    {
        cx = width;
    }

    ListView_SetColumnWidth(m_hListView, 0, cx);

    return;
}

void CStatisticsDlg::RefreshItem(int     iIndex,
                                 TCHAR * pszTitle,
                                 TCHAR * pszText,
                                 HDC     hdc,
                                 LONG  & cx)
{
    LVITEM item;
    SIZE   size;
    int    itemNumber = 0;

    item.mask      = LVIF_TEXT;
    item.iSubItem  = 0;
    item.state     = 0;
    item.stateMask = 0;

    item.iItem   = iIndex;
    item.pszText = pszTitle;
    if (-1 != ListView_SetItem(m_hListView, &item))
        itemNumber++;

    if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
        && size.cx > cx)
        cx = size.cx;

    item.iItem   = iIndex + 1;
    item.pszText = pszText;
    if (-1 != ListView_SetItem(m_hListView, &item))
        itemNumber++;

    if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
        && size.cx > cx)
        cx = size.cx;

    if (cx > m_iMaxWidth)
        m_iMaxWidth = cx;
}

void CStatisticsDlg::InsertTwoItems(int iIndex)
{
    LVITEM item;

    item.mask      = LVIF_TEXT;
    item.pszText   = L"";
    item.iSubItem  = 0;
    item.state     = 0;
    item.stateMask = 0;
    item.iItem     = iIndex;

    ListView_InsertItem(m_hListView, &item);
    ListView_InsertItem(m_hListView, &item);
}

⌨️ 快捷键说明

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