📄 id3v2tag.c
字号:
lvi.iSubItem = 0;
pItem->frameId = eFrameID;
field = ID3Frame_GetField(frame, ID3FN_DESCRIPTION);
ID3Field_GetASCII(field, info, 1024, 1);
pItem->aCols[0] = DupString(info);
field = ID3Frame_GetField(frame, ID3FN_TEXT);
ID3Field_GetASCII(field, info, 1024, 1);
pItem->aCols[1] = DupString(info);
lvi.lParam = (LPARAM)pItem; /* item data */
/* Add the item. */
ListView_InsertItem(hwndList, &lvi);
break;
}
case ID3FID_WWWAUDIOFILE: case ID3FID_WWWARTIST:
case ID3FID_WWWAUDIOSOURCE: case ID3FID_WWWCOMMERCIALINFO:
case ID3FID_WWWCOPYRIGHT: case ID3FID_WWWPUBLISHER:
case ID3FID_WWWPAYMENT: case ID3FID_WWWRADIOPAGE:
{
LV_ITEM lvi;
ID3ITEM *pItem = LocalAlloc(LPTR, sizeof(ID3ITEM));
/* Initialize LV_ITEM members that are common to all items. */
lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;
lvi.state = 0;
lvi.stateMask = 0;
lvi.pszText = LPSTR_TEXTCALLBACK; /* app. maintains text */
lvi.iImage = 0;
lvi.iItem = iItem;
lvi.iSubItem = 0;
pItem->frameId = eFrameID;
pItem->aCols[0] = GetFrameDesc(eFrameID);
field = ID3Frame_GetField(frame, ID3FN_URL);
ID3Field_GetASCII(field, info, 1024, 1);
pItem->aCols[1] = DupString(info);
lvi.lParam = (LPARAM)pItem; /* item data */
/* Add the item. */
ListView_InsertItem(hwndList, &lvi);
break;
}
case ID3FID_WWWUSER:
{
LV_ITEM lvi;
ID3ITEM *pItem = LocalAlloc(LPTR, sizeof(ID3ITEM));
/* Initialize LV_ITEM members that are common to all items. */
lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;
lvi.state = 0;
lvi.stateMask = 0;
lvi.pszText = LPSTR_TEXTCALLBACK; /* app. maintains text */
lvi.iImage = 0;
lvi.iItem = iItem;
lvi.iSubItem = 0;
pItem->frameId = eFrameID;
field = ID3Frame_GetField(frame, ID3FN_DESCRIPTION);
ID3Field_GetASCII(field, info, 1024, 1);
pItem->aCols[0] = DupString(info);
field = ID3Frame_GetField(frame, ID3FN_URL);
ID3Field_GetASCII(field, info, 1024, 1);
pItem->aCols[1] = DupString(info);
lvi.lParam = (LPARAM)pItem; /* item data */
/* Add the item. */
ListView_InsertItem(hwndList, &lvi);
break;
}
default:
break;
}
}
ID3Tag_Delete(tag);
}
}
BOOL CALLBACK AddFrameProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
int i, cursel;
switch (message) {
case WM_INITDIALOG:
EnableWindow(GetDlgItem(hwndDlg, IDC_COL0), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDOK), FALSE);
/* Note: FRAMEID is the index in the combo box + 1 */
for (i = 1; i < NUMFRAMES; i++)
{
SendMessage(GetDlgItem(hwndDlg, IDC_FRAMETYPE), CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)ID3Frames[i]);
}
return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDC_FRAMETYPE:
if (HIWORD(wParam) == CBN_SELCHANGE)
{
cursel = SendMessage(GetDlgItem(hwndDlg, IDC_FRAMETYPE), CB_GETCURSEL, 0, 0);
switch (cursel + 1)
{
case ID3FID_ALBUM: case ID3FID_BPM:
case ID3FID_COMPOSER: case ID3FID_COPYRIGHT:
case ID3FID_DATE: case ID3FID_PLAYLISTDELAY:
case ID3FID_ENCODEDBY: case ID3FID_LYRICIST:
case ID3FID_FILETYPE: case ID3FID_TIME:
case ID3FID_CONTENTGROUP: case ID3FID_TITLE:
case ID3FID_SUBTITLE: case ID3FID_INITIALKEY:
case ID3FID_LANGUAGE: case ID3FID_SONGLEN:
case ID3FID_MEDIATYPE: case ID3FID_ORIGALBUM:
case ID3FID_ORIGFILENAME: case ID3FID_ORIGLYRICIST:
case ID3FID_ORIGARTIST: case ID3FID_ORIGYEAR:
case ID3FID_FILEOWNER: case ID3FID_LEADARTIST:
case ID3FID_BAND: case ID3FID_CONDUCTOR:
case ID3FID_MIXARTIST: case ID3FID_PARTINSET:
case ID3FID_PUBLISHER: case ID3FID_TRACKNUM:
case ID3FID_RECORDINGDATES: case ID3FID_NETRADIOSTATION:
case ID3FID_NETRADIOOWNER: case ID3FID_SIZE:
case ID3FID_ISRC: case ID3FID_ENCODERSETTINGS:
case ID3FID_YEAR: case ID3FID_WWWAUDIOFILE:
case ID3FID_WWWARTIST: case ID3FID_WWWAUDIOSOURCE:
case ID3FID_WWWCOMMERCIALINFO: case ID3FID_WWWCOPYRIGHT:
case ID3FID_WWWPUBLISHER: case ID3FID_WWWPAYMENT:
case ID3FID_WWWRADIOPAGE: case ID3FID_CONTENTTYPE:
{
SetDlgItemText(hwndDlg, IDC_COL0, ID3Frames[cursel+1]);
EnableWindow(GetDlgItem(hwndDlg, IDC_COL0), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDOK), TRUE);
break;
}
case ID3FID_USERTEXT: case ID3FID_COMMENT:
case ID3FID_UNSYNCEDLYRICS: case ID3FID_WWWUSER:
{
SetDlgItemText(hwndDlg, IDC_COL0, ID3Frames[cursel+1]);
EnableWindow(GetDlgItem(hwndDlg, IDC_COL0), TRUE);
EnableWindow(GetDlgItem(hwndDlg, IDOK), TRUE);
break;
}
default:
MessageBox(hwndDlg, "Sorry, this frame type cannot be added (yet).", "Sorry", MB_OK);
EnableWindow(GetDlgItem(hwndDlg, IDC_COL0), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDOK), FALSE);
break;
}
}
return TRUE;
case IDOK:
{
LV_ITEM lvi;
ID3ITEM *pItem = LocalAlloc(LPTR, sizeof(ID3ITEM));
char *col0 = LocalAlloc(LPTR, 1024);
char *col1 = LocalAlloc(LPTR, 1024);
/* Initialize LV_ITEM members that are common to all items. */
lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;
lvi.state = 0;
lvi.stateMask = 0;
lvi.pszText = LPSTR_TEXTCALLBACK; /* app. maintains text */
lvi.iImage = 0;
lvi.iItem = ListView_GetItemCount(m_hwndList) + 1;
lvi.iSubItem = 0;
cursel = SendMessage(GetDlgItem(hwndDlg, IDC_FRAMETYPE), CB_GETCURSEL, 0, 0);
pItem->frameId = cursel + 1;
GetDlgItemText(hwndDlg, IDC_COL0, col0, 1024);
GetDlgItemText(hwndDlg, IDC_COL1, col1, 1024);
pItem->aCols[0] = col0;
pItem->aCols[1] = col1;
lvi.lParam = (LPARAM)pItem; /* item data */
/* Add the item. */
ListView_InsertItem(m_hwndList, &lvi);
ListView_Update(m_hwndList, lvi.iItem);
}
case IDCANCEL:
EndDialog(hwndDlg, wParam);
return TRUE;
}
}
return FALSE;
}
BOOL List_AddFrame(HWND hwndApp, HWND hwndList)
{
int result;
m_hwndList = hwndList;
result = DialogBox(hInstance_for_id3editor, MAKEINTRESOURCE(IDD_ADDFRAME),
hwndApp, AddFrameProc);
if (LOWORD(result) == IDOK)
return TRUE;
return FALSE;
}
void InsertTextFrame(HWND dlg, HWND list, int control, int item, int frame_id)
{
LV_ITEM lvi;
ID3ITEM *pItem = LocalAlloc(LPTR, sizeof(ID3ITEM));
/* Initialize LV_ITEM members that are common to all items. */
lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;
lvi.state = 0;
lvi.stateMask = 0;
lvi.pszText = LPSTR_TEXTCALLBACK; /* app. maintains text */
lvi.iImage = 0;
lvi.iItem = item;
lvi.iSubItem = 0;
pItem->frameId = frame_id;
pItem->aCols[0] = GetFrameDesc(frame_id);
pItem->aCols[1] = LocalAlloc(LPTR, 1024);
GetDlgItemText(dlg, control, pItem->aCols[1], 1024);
lvi.lParam = (LPARAM)pItem; /* item data */
/* Add the item. */
ListView_InsertItem(list, &lvi);
}
void AddFrameFromRAWData(HWND hwndList, int frameId, LPSTR data1, LPSTR data2)
{
LV_ITEM lvi;
ID3ITEM *pItem = LocalAlloc(LPTR, sizeof(ID3ITEM));
int nextItem;
nextItem = ListView_GetItemCount(hwndList);
/* Initialize LV_ITEM members that are common to all items. */
lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;
lvi.state = 0;
lvi.stateMask = 0;
lvi.pszText = LPSTR_TEXTCALLBACK; /* app. maintains text */
lvi.iImage = 0;
lvi.iItem = nextItem;
lvi.iSubItem = 0;
pItem->frameId = frameId;
pItem->aCols[0] = LocalAlloc(LPTR, 1024);
pItem->aCols[1] = LocalAlloc(LPTR, 1024);
lstrcpy(pItem->aCols[0], data1);
lstrcpy(pItem->aCols[1], data2);
lvi.lParam = (LPARAM)pItem; /* item data */
/* Add the item. */
ListView_InsertItem(hwndList, &lvi);
}
HWND m_hwndDlg;
int changed;
BOOL CALLBACK AddStandardProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
int added = 0;
switch (message) {
case WM_INITDIALOG:
changed = 0;
return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDOK:
{
if (GetWindowTextLength(GetDlgItem(hwndDlg, IDC_TRACK)) > 0) {
InsertTextFrame(hwndDlg, m_hwndList, IDC_TRACK, ListView_GetItemCount(m_hwndList)+1, ID3FID_TRACKNUM);
added++;
}
if (GetWindowTextLength(GetDlgItem(hwndDlg, IDC_TITLE)) > 0) {
InsertTextFrame(hwndDlg, m_hwndList, IDC_TITLE, ListView_GetItemCount(m_hwndList)+1, ID3FID_TITLE);
added++;
}
if (GetWindowTextLength(GetDlgItem(hwndDlg, IDC_ARTIST)) > 0) {
InsertTextFrame(hwndDlg, m_hwndList, IDC_ARTIST, ListView_GetItemCount(m_hwndList)+1, ID3FID_LEADARTIST);
added++;
}
if (GetWindowTextLength(GetDlgItem(hwndDlg, IDC_ALBUM)) > 0) {
InsertTextFrame(hwndDlg, m_hwndList, IDC_ALBUM, ListView_GetItemCount(m_hwndList)+1, ID3FID_ALBUM);
added++;
}
if (GetWindowTextLength(GetDlgItem(hwndDlg, IDC_YEAR)) > 0) {
InsertTextFrame(hwndDlg, m_hwndList, IDC_YEAR, ListView_GetItemCount(m_hwndList)+1, ID3FID_YEAR);
added++;
}
if (GetWindowTextLength(GetDlgItem(hwndDlg, IDC_GENRE)) > 0) {
InsertTextFrame(hwndDlg, m_hwndList, IDC_GENRE, ListView_GetItemCount(m_hwndList)+1, ID3FID_CONTENTTYPE);
added++;
}
if (GetWindowTextLength(GetDlgItem(hwndDlg, IDC_COMMENT)) > 0) {
InsertTextFrame(hwndDlg, m_hwndList, IDC_COMMENT, ListView_GetItemCount(m_hwndList)+1, ID3FID_COMMENT);
added++;
}
if (GetWindowTextLength(GetDlgItem(hwndDlg, IDC_COMPOSER)) > 0) {
InsertTextFrame(hwndDlg, m_hwndList, IDC_COMPOSER, ListView_GetItemCount(m_hwndList)+1, ID3FID_COMPOSER);
added++;
}
if (GetWindowTextLength(GetDlgItem(hwndDlg, IDC_ORIGARTIST)) > 0) {
InsertTextFrame(hwndDlg, m_hwndList, IDC_ORIGARTIST, ListView_GetItemCount(m_hwndList)+1, ID3FID_ORIGARTIST);
added++;
}
if (GetWindowTextLength(GetDlgItem(hwndDlg, IDC_COPYRIGHT)) > 0) {
InsertTextFrame(hwndDlg, m_hwndList, IDC_COPYRIGHT, ListView_GetItemCount(m_hwndList)+1, ID3FID_COPYRIGHT);
added++;
}
if (GetWindowTextLength(GetDlgItem(hwndDlg, IDC_URL)) > 0) {
InsertTextFrame(hwndDlg, m_hwndList, IDC_URL, ListView_GetItemCount(m_hwndList)+1, ID3FID_WWWARTIST);
added++;
}
if (GetWindowTextLength(GetDlgItem(hwndDlg, IDC_ENCBY)) > 0) {
InsertTextFrame(hwndDlg, m_hwndList, IDC_ENCBY, ListView_GetItemCount(m_hwndList)+1, ID3FID_ENCODEDBY);
added++;
}
if (added > 0)
changed = 1;
}
case IDCANCEL:
EndDialog(hwndDlg, changed);
return TRUE;
}
}
return FALSE;
}
BOOL List_AddStandardFrames(HWND hwndApp, HWND hwndList)
{
int result;
m_hwndList = hwndList;
m_hwndDlg = hwndApp;
result = DialogBox(hInstance_for_id3editor, MAKEINTRESOURCE(IDD_ADDSTANDARD),
hwndApp, AddStandardProc);
return result?TRUE:FALSE;
}
/* List_OnGetDispInfo - processes the LVN_GETDISPINFO */
/* notification message. */
/* pnmv - value of lParam (points to an LV_DISPINFO structure) */
void List_OnGetDispInfo(LV_DISPINFO *pnmv)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -