📄 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 + -