📄 propertydlg.cpp
字号:
item.iItem = itemNumber;
item.pszText = property;
if (ListView_InsertItem(m_hListView, &item) != -1)
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
SysFreeString(property);
}
// Clip Description
if (pMediaContent)
{
property = L"";
pMediaContent->get_Description(&property);
}
if (*property)
{
item.iItem = itemNumber;
item.pszText = L"Clip Album:";
if (ListView_InsertItem(m_hListView, &item) != -1)
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
item.iItem = itemNumber;
item.pszText = property;
if (ListView_InsertItem(m_hListView, &item) != -1)
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
SysFreeString(property);
}
// Clip Copyright
if (pMediaContent)
{
property = L"";
pMediaContent->get_Copyright(&property);
}
if (*property)
{
item.iItem = itemNumber;
item.pszText = L"Clip Copyright:";
if (ListView_InsertItem(m_hListView, &item) != -1)
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
item.iItem = itemNumber;
item.pszText = property;
if (ListView_InsertItem(m_hListView, &item) != -1)
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
SysFreeString(property);
}
// Filename
item.iItem = itemNumber;
item.pszText = L"Filename:";
if (ListView_InsertItem(m_hListView, &item) != -1)
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
TCHAR * slash = wcsrchr(szFilename, L'\\');
item.iItem = itemNumber;
item.pszText = slash ? ++slash : szFilename;
if (ListView_InsertItem(m_hListView, &item) != -1)
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
// duration
if (NULL != pims)
{
double dDuration = 0.0;
LONGLONG llDuration = 0;
pims->GetDuration(&llDuration);
if (llDuration)
{
WCHAR durationText[10] = L"";
dDuration = llDuration / 1E7;
Time2String(dDuration, durationText, 10, FALSE, FALSE, L":", L".");
item.iItem = itemNumber;
item.pszText = L"Duration:";
if (-1 != ListView_InsertItem(m_hListView, &item))
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
item.iItem = itemNumber;
item.pszText = durationText;
if (-1 != ListView_InsertItem(m_hListView, &item))
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
}
}
// audio info
AUDIOINFO audioInfo;
memset(&audioInfo, 0, sizeof (AUDIOINFO));
if (SUCCEEDED(AudioInfo(&audioInfo, piba, pnsep, psmc)))
{
// codec description
if (audioInfo.bstrCodecDescription && *audioInfo.bstrCodecDescription)
{
item.iItem = itemNumber;
item.pszText = L"Audio Codec:";
if (-1 != ListView_InsertItem(m_hListView, &item))
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
item.iItem = itemNumber;
item.pszText = audioInfo.bstrCodecDescription;
if (-1 != ListView_InsertItem(m_hListView, &item))
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
SysFreeString(audioInfo.bstrCodecDescription);
}
// audio bitrate
if (audioInfo.lpwcCodecBitrate && *audioInfo.lpwcCodecBitrate)
{
item.iItem = itemNumber;
item.pszText = L"Audio Bitrate:";
if (-1 != ListView_InsertItem(m_hListView, &item))
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
item.iItem = itemNumber;
item.pszText = audioInfo.lpwcCodecBitrate;
if (-1 != ListView_InsertItem(m_hListView, &item))
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
delete [] audioInfo.lpwcCodecBitrate;
}
// What's the frequency, Kenneth?
WCHAR frequency[8];
if (audioInfo.wfmtWaveFormat.nSamplesPerSec)
{
wsprintf(frequency, L"%2.1fKHz", (float)(audioInfo.wfmtWaveFormat.nSamplesPerSec) / 1000.0);
item.iItem = itemNumber;
item.pszText = L"Audio Frequency:";
if (-1 != ListView_InsertItem(m_hListView, &item))
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
item.iItem = itemNumber;
item.pszText = frequency;
if (-1 != ListView_InsertItem(m_hListView, &item))
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
}
// stero or mono sound?
WCHAR stereo[4];
if (audioInfo.wfmtWaveFormat.nChannels)
{
wcscpy(stereo, audioInfo.wfmtWaveFormat.nChannels > 1 ? L"Yes" : L"No");
item.iItem = itemNumber;
item.pszText = L"Stereo:";
if (-1 != ListView_InsertItem(m_hListView, &item))
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
item.iItem = itemNumber;
item.pszText = stereo;
if (-1 != ListView_InsertItem(m_hListView, &item))
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
}
}
// video info
BSTR videoCodec = NULL;
if (SUCCEEDED(VideoInfo(&videoCodec, pnsep)))
{
item.iItem = itemNumber;
item.pszText = L"Video Codec:";
if (-1 != ListView_InsertItem(m_hListView, &item))
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
item.iItem = itemNumber;
item.pszText = videoCodec;
if (-1 != ListView_InsertItem(m_hListView, &item))
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
SysFreeString(videoCodec);
}
// video resolution
long lWidth, lHeight;
WCHAR resolution[10] = L"";
if (NULL != pibv
&& SUCCEEDED(pibv->get_VideoWidth(&lWidth))
&& SUCCEEDED(pibv->get_VideoHeight(&lHeight))
&& lWidth && lHeight)
{
wsprintf(resolution, L"%d x %d", lWidth, lHeight);
item.iItem = itemNumber;
item.pszText = L"Video Size:";
if (-1 != ListView_InsertItem(m_hListView, &item))
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
item.iItem = itemNumber;
item.pszText = resolution;
if (-1 != ListView_InsertItem(m_hListView, &item))
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
}
// protected
item.iItem = itemNumber;
item.pszText = L"Protected:";
if (-1 != ListView_InsertItem(m_hListView, &item))
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
item.iItem = itemNumber;
item.pszText = audioInfo.bSecure ? L"Yes" : L"No";
if (-1 != ListView_InsertItem(m_hListView, &item))
itemNumber++;
if (GetTextExtentExPoint(hdc, item.pszText, _tcslen(item.pszText), 0, NULL, NULL, &size)
&& size.cx > cx)
cx = size.cx;
if (hdc)
{
::ReleaseDC(m_hListView, hdc);
}
// Clean up list view
RECT rc;
LONG width;
GetClientRect(m_hListView, &rc);
width = rc.right - rc.left;
if (ListView_GetCountPerPage(m_hListView) < ListView_GetItemCount(m_hListView))
{
width -= GetSystemMetrics(SM_CXVSCROLL);
}
if (cx < width)
{
cx = width;
}
ListView_SetColumnWidth(m_hListView, 0, cx);
SendMessage(m_hListView, WM_SETREDRAW, TRUE, 0);
InvalidateRect(m_hListView, NULL, TRUE);
// Release filter interfaces
if (NULL != pMediaContent)
{
pMediaContent->Release();
pMediaContent = NULL;
}
if (NULL != piba)
{
piba->Release();
piba = NULL;
}
if (NULL != pibv)
{
pibv->Release();
pibv = NULL;
}
if (NULL != pnsep)
{
pnsep->Release();
pnsep = NULL;
}
if (NULL != psmc)
{
psmc->Release();
psmc = NULL;
}
if (NULL != pims)
{
pims->Release();
pims = NULL;
}
// Release IGraphBuilder
if (NULL != pGraphBuilder)
{
pGraphBuilder->Release();
pGraphBuilder = NULL;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -