ERMsg CDirectoryManagerBase::GetFilePath(const std::string& fileName, const std::string& fileExt, std::string& filePath)const { ERMsg msg; filePath = GetFilePath(fileName, fileExt); if (filePath.empty()) { string directoryList = "\t" + GetDirectories(); ReplaceString(directoryList, "|", "\r\n\t"); string error = FormatMsg(IDS_WG_FILE_NOT_FOUND, _GetFileName(fileName, fileExt), directoryList.c_str()); msg.ajoute(error); } return msg; }
/********************************************************************* * * MainTask */ void MainTask(void) { char acPath[_MAX_PATH] = {0}; HANDLE hFile; /* Initialize emWin */ GUI_Init(); GUI_SetFont(&GUI_Font24_ASCII); GUI_DispStringHCenterAt("External binary font sample", 160, 5); while (1) { /* Get font file name... */ _GetFileName(acPath, sizeof(acPath)); /* ...and open the file */ hFile = CreateFile(acPath, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if (hFile != INVALID_HANDLE_VALUE) { /* On success call demo routine */ _ShowXBF(&hFile); CloseHandle(hFile); } else { /* On error show message box */ GUI_MessageBox("File not found!", "Error", GUI_MESSAGEBOX_CF_MODAL); GUI_ClearRect(0, 40, 319, 239); } } }
LRESULT CTSFMainWnd::_OnCommand(WORD wID, WORD wCmd, HWND hWnd) { switch(wID) { case IDM_EXIT: PostMessage(m_hWnd, WM_CLOSE, 0, 0); break; case IDM_ABOUT: MessageBox(m_hWnd, TEXT(""), g_szTSFAppTitle, MB_OK | MB_ICONINFORMATION); break; case IDM_GETPRESERVEDKEY: m_pTSFEditWnd->_OnGetPreservedKey(); break; case IDM_GETDISPATTR: m_pTSFEditWnd->_GetDisplayAttributes(); break; case IDM_GET_TEXTOWNER: m_pTSFEditWnd->_GetTextOwner(); break; case IDM_GET_READING: m_pTSFEditWnd->_GetReadingText(); break; case IDM_GET_COMPOSING: m_pTSFEditWnd->_GetComposing(); break; case IDM_TERMINATE_COMPOSITION: m_pTSFEditWnd->_TerminateAllCompositions(); break; case IDM_RECONVERT: m_pTSFEditWnd->_Reconvert(); break; case IDM_PLAYBACK: m_pTSFEditWnd->_Playback(); break; case IDM_LOAD: { TCHAR szFile[MAX_PATH]; if(_GetFileName(m_hWnd, szFile, MAX_PATH, TRUE)) { m_pTSFEditWnd->_LoadFromFile(szFile); } } break; case IDM_SAVE: { TCHAR szFile[MAX_PATH]; if(_GetFileName(m_hWnd, szFile, MAX_PATH, FALSE)) { m_pTSFEditWnd->_SaveToFile(szFile); } } break; case IDM_TEST: m_pTSFEditWnd->_OnTest(); break; } return 0; }
HRESULT CCustomBindStatusCallBack::OnDataAvailable( /* [in] */ DWORD grfBSCF, /* [in] */ DWORD dwSize, /* [in] */ FORMATETC *pformatetc, /* [in] */ STGMEDIUM *pstgmed ) { HRESULT hr = S_OK; // Get the Stream passed if (BSCF_FIRSTDATANOTIFICATION & grfBSCF) { if (m_spStream == NULL && pstgmed->tymed == TYMED_ISTREAM) { m_spStream = pstgmed->pstm; // ファイル名を取得する if (_GetFileName() == false) { // キャンセルされたので帰る Cancel(); if (m_dwThreadId) ::PostThreadMessage(m_dwThreadId, WM_DECREMENTTHREADREFCOUNT, 0, 0); return E_ABORT; } // フォルダが存在しなければ作成 CString strDir = MtlGetDirectoryPath(m_pDLItem->strFilePath); if (::PathIsDirectory(strDir) == FALSE) ::SHCreateDirectory(NULL, strDir); m_hFile = ::CreateFile(m_pDLItem->strIncompleteFilePath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (m_hFile == INVALID_HANDLE_VALUE) { //ATLASSERT(FALSE); CString strError = _T("ファイルの作成に失敗しました\n"); strError += GetLastErrorString(); MessageBox(NULL, strError, NULL, MB_OK | MB_ICONWARNING); Cancel(); return E_ABORT; } /* DLリストに追加 */ ::PostMessage(m_hWndDLing, WM_USER_ADDTODOWNLOADLIST, (WPARAM)m_pDLItem, 0); } } if (m_spStream && dwSize > m_dwTotalRead) { DWORD dwRead = dwSize - m_dwTotalRead; // まだ読まれていないデータ量 DWORD dwActuallyRead = 0; if (dwRead > 0) { do { BYTE* pBytes = NULL; ATLTRY(pBytes = new BYTE[dwRead + 1]); if (pBytes == NULL) { hr = E_OUTOFMEMORY; } else { hr = m_spStream->Read(pBytes, dwRead, &dwActuallyRead); pBytes[dwActuallyRead] = 0; if (dwActuallyRead > 0) { DWORD dwWritten = 0; m_dwTotalRead += dwActuallyRead; ::WriteFile(m_hFile, (LPCVOID)pBytes, dwActuallyRead, &dwWritten, NULL); ATLASSERT(dwWritten == dwActuallyRead); } delete[] pBytes; } //} while (!(hr == E_PENDING || hr == S_FALSE)/* && SUCCEEDED(hr)*/); } while (hr == S_OK); } } // Clean up if (BSCF_LASTDATANOTIFICATION & grfBSCF) { m_spStream.Release(); if (m_hFile != INVALID_HANDLE_VALUE) { ::CloseHandle(m_hFile); m_hFile = INVALID_HANDLE_VALUE; if (m_pDLItem->nProgress != m_pDLItem->nProgressMax && m_pDLItem->nProgressMax != 0) { m_pDLItem->bAbort = true; ::DeleteFile(m_pDLItem->strIncompleteFilePath); ::SHChangeNotify(SHCNE_DELETE, SHCNF_PATH, static_cast<LPCTSTR>(m_pDLItem->strIncompleteFilePath), nullptr); TRACEIN(_T("BSCF_LASTDATANOTIFICATION (%s): サイズが一致しません!"), (LPCTSTR)m_pDLItem->strFileName); } else { TRACEIN(_T("BSCF_LASTDATANOTIFICATION : 正常終了しました(%s)"), (LPCTSTR)m_pDLItem->strFileName); ::MoveFileEx(m_pDLItem->strIncompleteFilePath, m_pDLItem->strFilePath, MOVEFILE_REPLACE_EXISTING); /* エクスプローラーにファイルの変更通知 */ ::SHChangeNotify(SHCNE_RENAMEITEM, SHCNF_PATH, static_cast<LPCTSTR>(m_pDLItem->strIncompleteFilePath), static_cast<LPCTSTR>(m_pDLItem->strFilePath)); } } } return S_OK; }