BOOL CPpcMainWnd::Create(LPTSTR pszCmdLine, HWND hwndParent, DWORD dwStyle) { CWaitCursor wc; // クラスの登録 RegisterClass(); // ウインドウ作成 CreateWindow(MAINWND_CLASS_NAME, MAINWND_TITLE, WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, PPC_MAINWND_WIDTH, PPC_MAINWND_HEIGHT, NULL, NULL, GetInst(), this); if (!m_hWnd) return FALSE; ShowWindow(m_hWnd, SW_SHOW); UpdateWindow(m_hWnd); if (_tcslen(pszCmdLine)) { SendCmdLine(m_hWnd, pszCmdLine); } else { // デフォルトリストの読み込み if (((CPpcOptions*)m_pOptions)->m_fSaveDefList) { m_nCurrent = 0; // 開かないようにする // 読み込み m_fNoListRedraw = TRUE; SendMessage(m_hwndLV, WM_SETREDRAW, 0, 0); TCHAR szPath[MAX_PATH]; GetDefPlayListPath(szPath); LoadPlayList(szPath); SendMessage(m_hwndLV, WM_SETREDRAW, 1, 0); m_fNoListRedraw = FALSE; InvalidateRect(m_hwndLV, 0, FALSE); UpdateWindow(m_hwndLV); m_nCurrent = OPEN_NONE; // レジューム情報を反映する if (((CPpcOptions*)m_pOptions)->m_fResume && ((CPpcOptions*)m_pOptions)->m_nResumeTrack != -1 && ((CPpcOptions*)m_pOptions)->m_nResumeTrack < m_pListFile->GetCount()) { Open(((CPpcOptions*)m_pOptions)->m_nResumeTrack); if (m_nCurrent == OPEN_NONE) OpenFirstFile(); else { MAP_Seek(m_hMap, ((CPpcOptions*)m_pOptions)->m_nResumeTime); ((CPpcOptions*)m_pOptions)->m_nResumeTime = 0; } } else OpenFirstFile(); if (((CPpcOptions*)m_pOptions)->m_fPlayOnStart) Play(); } } return TRUE; }
BOOL CMainWnd::OpenMediaFile(BOOL fAdd, HWND hwndParent) { if (m_fShowOpenDlg) return FALSE; BOOL fRet; m_fShowOpenDlg = TRUE; CTempStr strTitle(fAdd ? IDS_TITLE_ADD_FILE : IDS_TITLE_OPEN_FILE); CTempStr strFilter; TCHAR szFile[FILE_BUFF_LEN] = {0}; #ifdef _WIN32_WCE OPENFILENAME ofn; memset(&(ofn), 0, sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hwndParent ? hwndParent : m_hWnd; ofn.lpstrFile = szFile; ofn.nMaxFile = FILE_BUFF_LEN; ofn.lpstrTitle = strTitle; BOOL (*gsGetOpenFileName)(OPENFILENAME*) = NULL; HINSTANCE hInst = LoadLibrary(_T("gsgetfile.dll")); if (hInst) { (FARPROC&)gsGetOpenFileName = GetProcAddress(hInst, _T("gsGetOpenFileName")); } if (gsGetOpenFileName) { if (!m_pszOpenFilter) MakeOpenFilter(&m_pszOpenFilter, TRUE); ofn.lpstrFilter = m_pszOpenFilter; ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY; ofn.lpstrInitialDir = m_pOptions->m_szLastDir; fRet = gsGetOpenFileName(&ofn); } else { if (!m_pszOpenFilter) MakeOpenFilter(&m_pszOpenFilter, FALSE); ofn.lpstrFilter = m_pszOpenFilter; ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; ofn.lpstrInitialDir = m_pOptions->m_szLastDir; fRet = GetOpenFileName(&ofn); } if (hInst) FreeLibrary(hInst); #else if (!m_pszOpenFilter) MakeOpenFilter(&m_pszOpenFilter, TRUE); OPENFILENAME ofn; memset(&(ofn), 0, sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hwndParent ? hwndParent : m_hWnd; ofn.lpstrFile = szFile; ofn.nMaxFile = FILE_BUFF_LEN; ofn.lpstrTitle = strTitle; ofn.lpstrFilter = m_pszOpenFilter; ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY; ofn.lpstrInitialDir = m_pOptions->m_szLastDir; fRet = GetOpenFileName(&ofn); #endif m_fShowOpenDlg = FALSE; if (!fRet) return FALSE; // 既存のリストを削除 if (!fAdd) DeleteAllFile(); // 追加 DWORD dw = GetFileAttributes(szFile); if (dw != 0xFFFFFFFF) { if (!(dw & FILE_ATTRIBUTE_DIRECTORY)) { // single if (IsPlayList(szFile)) LoadPlayList(szFile); else AddFile(szFile); LPTSTR psz = _tcsrchr(szFile, _T('\\')); if (psz) *psz = _T('\0'); _tcscpy(m_pOptions->m_szLastDir, szFile); } else { // multi TCHAR szPath[MAX_PATH]; LPTSTR p = szFile; _tcscpy(m_pOptions->m_szLastDir, szFile); while (TRUE) { p += _tcslen(p); if (*p != NULL || *(p + 1) == NULL) break; wsprintf(szPath, _T("%s\\%s"), m_pOptions->m_szLastDir, ++p); if (IsPlayList(szPath)) LoadPlayList(szPath); else AddFile(szPath); } } } return TRUE; }