bool CXTPShellListCtrlEx::BrowseToFolder(LPCTSTR lpszPath) { XTP_TVITEMDATA lpTVID; LPITEMIDLIST pidl; LPSHELLFOLDER pDesktopFolder; OLECHAR szOleChar[MAX_PATH]; ULONG chEaten; ULONG dwAttributes; HRESULT hr; // Get a pointer to the Desktop's IShellFolder interface. if (SUCCEEDED(::SHGetDesktopFolder(&pDesktopFolder))) { // IShellFolder::ParseDisplayName requires the file name be in // Unicode. #if !defined(_UNICODE) ::MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, lpszPath, -1, szOleChar, MAX_PATH); #else STRCPY_S(szOleChar, MAX_PATH, lpszPath); #endif // Convert the path to an ITEMIDLIST. hr = pDesktopFolder->ParseDisplayName(NULL, NULL, szOleChar, &chEaten, &pidl, &dwAttributes); if (SUCCEEDED(hr)) { IShellFolder *psfMyFolder; lpTVID.lpi = lpTVID.lpifq = pidl; pDesktopFolder->BindToObject(lpTVID.lpifq, NULL, IID_IShellFolder, (LPVOID*)&psfMyFolder); lpTVID.lpsfParent = psfMyFolder; PopulateListView(&lpTVID, lpTVID.lpsfParent); m_strItemPath = lpszPath; pDesktopFolder->Release(); return true; } pDesktopFolder->Release(); } return false; }
UINT AlsongLyricLinkDialog::DialogProc(UINT iMessage, WPARAM wParam, LPARAM lParam) { switch(iMessage) { case WM_CLOSE: EndDialog(m_hWnd, 0); return TRUE; case WM_DESTROY: return TRUE; case WM_INITDIALOG: { uSetWindowText(m_hWnd, m_track->get_path()); //set artist, title field service_ptr_t<titleformat_object> to; pfc::string8 artist; pfc::string8 title; static_api_ptr_t<titleformat_compiler>()->compile_safe(to, "%artist%"); m_track->format_title(NULL, artist, to, NULL); static_api_ptr_t<titleformat_compiler>()->compile_safe(to, "%title%"); m_track->format_title(NULL, title, to, NULL); uSetDlgItemText(m_hWnd, IDC_ARTIST, artist.get_ptr()); uSetDlgItemText(m_hWnd, IDC_TITLE, title.get_ptr()); //perform listview initialization. LVCOLUMN lv; lv.mask = LVCF_WIDTH | LVCF_TEXT; lv.cx = 150; lv.pszText = TEXT("아티스트"); ListView_InsertColumn(GetDlgItem(m_hWnd, IDC_LYRICLIST), 0, &lv); lv.pszText = TEXT("제목"); ListView_InsertColumn(GetDlgItem(m_hWnd, IDC_LYRICLIST), 1, &lv); SetWindowLong(GetDlgItem(m_hWnd, IDC_NEXT), GWL_STYLE, GetWindowLong(GetDlgItem(m_hWnd, IDC_NEXT), GWL_STYLE) | WS_DISABLED); //disable next, prev button SetWindowLong(GetDlgItem(m_hWnd, IDC_PREV), GWL_STYLE, GetWindowLong(GetDlgItem(m_hWnd, IDC_NEXT), GWL_STYLE) | WS_DISABLED); } return TRUE; case WM_NOTIFY: { NMHDR *hdr = (NMHDR *)lParam; if(hdr->code == LVN_ITEMCHANGED && hdr->idFrom == IDC_LYRICLIST) { int nSel; NMLISTVIEW *nlv = (NMLISTVIEW *)lParam; nSel = nlv->iItem; LVITEM litem; litem.mask = LVIF_PARAM; litem.iItem = nSel; litem.iSubItem = 0; ListView_GetItem(GetDlgItem(m_hWnd, IDC_LYRICLIST), &litem); Lyric *res = m_searchresult->Get((int)litem.lParam); std::string lyric = res->GetRawLyric(); boost::replace_all(lyric, "<br>", "\r\n"); uSetDlgItemText(m_hWnd, IDC_LYRIC, lyric.c_str()); } } return TRUE; case WM_COMMAND: if(HIWORD(wParam) == BN_CLICKED) { switch(LOWORD(wParam)) { case IDC_SEARCH: { pfc::string8 artist; uGetDlgItemText(m_hWnd, IDC_ARTIST, artist); pfc::string8 title; uGetDlgItemText(m_hWnd, IDC_TITLE, title); if(artist.get_length() == 0) { MessageBox(m_hWnd, TEXT("아티스트를 입력해 주세요"), TEXT("에러"), MB_OK); return TRUE; } if(title.get_length() == 0) { MessageBox(m_hWnd, TEXT("제목을 입력해 주세요"), TEXT("에러"), MB_OK); return TRUE; } m_page = 0; m_lyriccount = LyricSourceAlsong().SearchLyricGetCount(artist.toString(), title.toString()); std::stringstream str; str << m_page * 100 + 1 << "~" << min(m_lyriccount, (m_page + 1) * 100) << "/" << m_lyriccount; uSetDlgItemText(m_hWnd, IDC_STATUS, str.str().c_str()); LVITEM item; HWND hListView = GetDlgItem(m_hWnd, IDC_LYRICLIST); item.mask = LVIF_TEXT; item.iItem = 0; item.iSubItem = 0; item.pszText = L""; ListView_InsertItem(hListView, &item); item.iSubItem = 1; item.mask = LVIF_TEXT; item.pszText = L"잠시 기다려 주세요"; ListView_SetItem(hListView, &item); m_searchresult = LyricSourceAlsong().SearchLyric(artist.toString(), title.toString(), 0); PopulateListView(); SetWindowLong(GetDlgItem(m_hWnd, IDC_PREV), GWL_STYLE, GetWindowLong(GetDlgItem(m_hWnd, IDC_PREV), GWL_STYLE) | WS_DISABLED); if(m_lyriccount > 100) SetWindowLong(GetDlgItem(m_hWnd, IDC_NEXT), GWL_STYLE, GetWindowLong(GetDlgItem(m_hWnd, IDC_NEXT), GWL_STYLE) & ~WS_DISABLED); else SetWindowLong(GetDlgItem(m_hWnd, IDC_NEXT), GWL_STYLE, GetWindowLong(GetDlgItem(m_hWnd, IDC_NEXT), GWL_STYLE) | WS_DISABLED); } break; case IDC_RESET: SetDlgItemText(m_hWnd, IDC_ARTIST, TEXT("")); SetDlgItemText(m_hWnd, IDC_TITLE, TEXT("")); SetDlgItemText(m_hWnd, IDC_STATUS, TEXT("")); ListView_DeleteAllItems(GetDlgItem(m_hWnd, IDC_LYRICLIST)); SetDlgItemText(m_hWnd, IDC_LYRIC, TEXT("")); SetFocus(GetDlgItem(m_hWnd, IDC_ARTIST)); SetWindowLong(GetDlgItem(m_hWnd, IDC_NEXT), GWL_STYLE, GetWindowLong(GetDlgItem(m_hWnd, IDC_NEXT), GWL_STYLE) | WS_DISABLED); SetWindowLong(GetDlgItem(m_hWnd, IDC_PREV), GWL_STYLE, GetWindowLong(GetDlgItem(m_hWnd, IDC_NEXT), GWL_STYLE) | WS_DISABLED); SetWindowLong(GetDlgItem(m_hWnd, IDC_ARTIST), GWL_STYLE, GetWindowLong(GetDlgItem(m_hWnd, IDC_ARTIST), GWL_STYLE) & ~WS_DISABLED); SetWindowLong(GetDlgItem(m_hWnd, IDC_TITLE), GWL_STYLE, GetWindowLong(GetDlgItem(m_hWnd, IDC_ARTIST), GWL_STYLE) & ~WS_DISABLED); //reset; break; case IDC_NEWLYRIC: //something break; case IDC_PREV: { if(m_page == 0) return TRUE; m_page --; pfc::string8 artist; uGetDlgItemText(m_hWnd, IDC_ARTIST, artist); pfc::string8 title; uGetDlgItemText(m_hWnd, IDC_TITLE, title); std::stringstream str; str << m_page * 100 + 1 << "~" << min(m_lyriccount, (m_page + 1) * 100) << "/" << m_lyriccount; uSetDlgItemText(m_hWnd, IDC_STATUS, str.str().c_str()); m_searchresult = LyricSourceAlsong().SearchLyric(artist.toString(), title.toString(), 0); PopulateListView(); if(m_page != 0) SetWindowLong(GetDlgItem(m_hWnd, IDC_PREV), GWL_STYLE, GetWindowLong(GetDlgItem(m_hWnd, IDC_PREV), GWL_STYLE) & ~WS_DISABLED); else SetWindowLong(GetDlgItem(m_hWnd, IDC_PREV), GWL_STYLE, GetWindowLong(GetDlgItem(m_hWnd, IDC_PREV), GWL_STYLE) | WS_DISABLED); if(m_lyriccount / 100 != m_page) SetWindowLong(GetDlgItem(m_hWnd, IDC_NEXT), GWL_STYLE, GetWindowLong(GetDlgItem(m_hWnd, IDC_NEXT), GWL_STYLE) & ~WS_DISABLED); else SetWindowLong(GetDlgItem(m_hWnd, IDC_NEXT), GWL_STYLE, GetWindowLong(GetDlgItem(m_hWnd, IDC_NEXT), GWL_STYLE) | WS_DISABLED); } break; case IDC_NEXT: { if(m_page == m_lyriccount / 100) return TRUE; m_page ++; pfc::string8 artist; uGetDlgItemText(m_hWnd, IDC_ARTIST, artist); pfc::string8 title; uGetDlgItemText(m_hWnd, IDC_TITLE, title); std::stringstream str; str << m_page * 100 + 1 << "~" << min(m_lyriccount, (m_page + 1) * 100) << "/" << m_lyriccount; uSetDlgItemText(m_hWnd, IDC_STATUS, str.str().c_str()); m_searchresult = LyricSourceAlsong().SearchLyric(artist.toString(), title.toString(), 0); PopulateListView(); if(m_page != 0) SetWindowLong(GetDlgItem(m_hWnd, IDC_PREV), GWL_STYLE, GetWindowLong(GetDlgItem(m_hWnd, IDC_PREV), GWL_STYLE) & ~WS_DISABLED); else SetWindowLong(GetDlgItem(m_hWnd, IDC_PREV), GWL_STYLE, GetWindowLong(GetDlgItem(m_hWnd, IDC_PREV), GWL_STYLE) | WS_DISABLED); if(m_lyriccount / 100 != m_page) SetWindowLong(GetDlgItem(m_hWnd, IDC_NEXT), GWL_STYLE, GetWindowLong(GetDlgItem(m_hWnd, IDC_NEXT), GWL_STYLE) & ~WS_DISABLED); else SetWindowLong(GetDlgItem(m_hWnd, IDC_NEXT), GWL_STYLE, GetWindowLong(GetDlgItem(m_hWnd, IDC_NEXT), GWL_STYLE) | WS_DISABLED); } break; case IDC_SYNCEDIT: break; case IDC_REGISTER: { int nSel; nSel = SendMessage(GetDlgItem(m_hWnd, IDC_LYRICLIST), LVM_GETSELECTIONMARK, 0, 0); LVITEM litem; litem.mask = LVIF_PARAM; litem.iItem = nSel; litem.iSubItem = 0; ListView_GetItem(GetDlgItem(m_hWnd, IDC_LYRICLIST), &litem); if(LyricSourceAlsong().Save(m_track, *m_searchresult->Get(litem.lParam))) { MessageBox(m_hWnd, TEXT("등록 성공"), TEXT("안내"), MB_OK); static_api_ptr_t<play_control> pc; metadb_handle_ptr p_track; pc->get_now_playing(p_track); if(p_track == m_track) LyricManager::Reload(p_track); EndDialog(m_hWnd, 0); return TRUE; } MessageBox(m_hWnd, TEXT("등록 실패"), TEXT("안내"), MB_OK); } break; case IDC_CANCEL: EndDialog(m_hWnd, 0); break; } } return TRUE; } return FALSE; }
static INT_PTR CALLBACK DialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_INITDIALOG: { disable_dialog = FALSE; EnableWindow(GetDlgItem(hwnd,IDC_IMPORT),FALSE); } break; case WM_NOTIFY: if (((LPNMHDR)lParam)->code == LVN_ITEMCHANGED) { HWND list = GetDlgItem(hwnd,IDC_LIST1); int count = SendMessageA(list,LVM_GETSELECTEDCOUNT,0,0); if (count > 0) EnableWindow(GetDlgItem(hwnd,IDC_IMPORT),TRUE); else EnableWindow(GetDlgItem(hwnd,IDC_IMPORT),FALSE); } break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_SKIP: on_disable_dialog_clicked(hwnd); break; case IDC_EXIT: UI_EndDialog(hwnd,0); break; case IDC_IMPORT: { HWND list = GetDlgItem(hwnd,IDC_LIST1); int count = SendMessageA(list,LVM_GETSELECTEDCOUNT,0,0); int i; if (count ==0) { UI_EndDialog(hwnd,0); return FALSE; } count = SendMessageA(list,LVM_GETITEMCOUNT,0,0); for ( i = 0; i < count; i++) { INT state = 0x00000000; state = SendMessageA(list,LVM_GETITEMSTATE,i, LVIS_SELECTED); if (state) { LVITEMA item; struct gphoto2_file *file; item.mask = LVIF_PARAM; item.iItem = i; item.iSubItem = 0; SendMessageA(list,LVM_GETITEMA,0,(LPARAM)&item); file = (struct gphoto2_file*)item.lParam; file->download = TRUE; } } UI_EndDialog(hwnd,1); } break; case IDC_IMPORTALL: { if (!GetAllImages()) { UI_EndDialog(hwnd,0); return FALSE; } UI_EndDialog(hwnd,1); } break; case IDC_FETCH: { HIMAGELIST ilist = 0; HWND list = GetDlgItem(hwnd,IDC_LIST1); PopulateImageList(&ilist,list); SendMessageA(list, LVM_SETIMAGELIST,LVSIL_NORMAL,(LPARAM)ilist); PopulateListView(list); EnableWindow(GetDlgItem(hwnd,IDC_FETCH),FALSE); } break; } break; } return FALSE; }
BOOL CALLBACK PickCertDialogProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { BOOL fRet = TRUE; PNETUI_PICKCERT pPickCert ; //HCERTSTORE hStore= (HCERTSTORE) lParam; LONG wCmdId; LONG wCmdCbn; LVITEM lvI; HWND hCtlList = GetDlgItem(hDlg, IDC_CERTLISTVIEW); switch (uMsg) { case WM_NOTIFY : break; case WM_INITDIALOG : { pPickCert = (PNETUI_PICKCERT) lParam; SetWindowLong (hDlg, DWL_USER, (LONG)pPickCert); ListView_SetExtendedListViewStyle(hCtlList, LVS_EX_FULLROWSELECT ); if (!pPickCert) fRet = FALSE; else fRet = InitListViewColumns(hCtlList); if (fRet) { PopulateListView(hCtlList, pPickCert); } } break; case WM_COMMAND : wCmdId = LOWORD(wParam); wCmdCbn = HIWORD(wParam); switch ( wCmdId ) { case IDCANCEL: EndDialog(hDlg,FALSE); break; case IDOK: { lvI.iItem = -1; lvI.lParam = 0; lvI.iSubItem = 0; lvI.mask = LVIF_PARAM; if (hCtlList) lvI.iItem = ListView_GetNextItem(hCtlList, -1, LVNI_SELECTED); if (lvI.iItem != -1 ) { ListView_GetItem(hCtlList, &lvI); } pPickCert = (PNETUI_PICKCERT)GetWindowLong(hDlg, DWL_USER); if (pPickCert) pPickCert->iSelected = lvI.lParam; EndDialog(hDlg, TRUE); break; } case IDC_BTN_CERTVIEW: { // Details button lvI.iItem = -1; lvI.lParam = 0; lvI.iSubItem = 0; lvI.mask = LVIF_PARAM; lvI.iItem = ListView_GetNextItem(hCtlList, -1, LVNI_SELECTED); ListView_GetItem(hCtlList, &lvI); pPickCert = (PNETUI_PICKCERT)GetWindowLong(hDlg, DWL_USER); if (pPickCert && lvI.iItem != -1 && pPickCert->ppCerts[lvI.lParam]) { ShowCertificate(hDlg, pPickCert->ppCerts[lvI.lParam]); } break; } default: fRet = FALSE; break; } default: fRet = FALSE; break; } return fRet; }