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;
	}
Exemplo n.º 2
0
/*********************************************************************
*
*       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;
}
Exemplo n.º 4
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;
}