示例#1
0
文件: OpenSave.c 项目: akavel/neatpad
//
//	Open the specified file
//
BOOL DoOpenFile(HWND hwndMain, TCHAR *szFileName, TCHAR *szFileTitle)
{
	int fmt, fmtlook[] = 
	{
		IDM_VIEW_ASCII, IDM_VIEW_UTF8, IDM_VIEW_UTF16, IDM_VIEW_UTF16BE 
	};

	if(TextView_OpenFile(g_hwndTextView, szFileName))
	{
		SetWindowFileName(hwndMain, szFileTitle, FALSE);
		g_fFileChanged   = FALSE;

		fmt = TextView_GetFormat(g_hwndTextView);

		CheckMenuRadioItem(GetMenu(hwndMain), 
			IDM_VIEW_ASCII, IDM_VIEW_UTF16BE, 
			fmtlook[fmt], MF_BYCOMMAND);

		NotifyFileChange(szFileName, hwndMain, 0);
		return TRUE;
	}
	else
	{
		FmtErrorMsg(hwndMain, MB_OK|MB_ICONWARNING, GetLastError(), _T("Error opening \'%s\'\r\n\r\n"), szFileName);
		//FormatMessage
		//MessageBox(hwndMain, _T("Error opening file"), APP_TITLE, MB_ICONEXCLAMATION);
		return FALSE;
	}
}
示例#2
0
文件: OpenSave.c 项目: avplayer/avdbg
//
//	Open the specified file
//
BOOL HexOpenFile(HWND hwndMain, LPCTSTR szFileName, DWORD fHexViewFlags)
{
	HWND   hwndHV;
	TCITEM tci = { TCIF_PARAM, 0, 0, NULL, 0, 0, 0 };
	BOOL fReuseTab = FALSE;
	int  i;
	
	// is the file already open?!
	if(HexIsOpen(hwndMain, szFileName, &i))
	{
		return HexSetCurFile(hwndMain, i, TRUE);
	}
	
	// shall we use the (untitled) document or create a new window?
	if(TabCtrl_GetItemCount(g_hwndTabView) == 1 && TabCtrl_GetItem(g_hwndTabView, 0, &tci))
	{
		hwndHV = (HWND)tci.lParam;

		// is file (new) and unmodified?
		if(HexView_GetFileName(hwndHV, 0,0) == 0 && HexView_CanUndo(hwndHV) == FALSE && HexView_CanRedo(hwndHV) == FALSE)
		{
			fReuseTab = TRUE;
		}
	}
	
	if(fReuseTab == FALSE)
		hwndHV = CreateHexViewCtrl(hwndMain);

	// 
	if(HexView_OpenFile(hwndHV, szFileName, fHexViewFlags))
	{
		DWORD e = GetLastError();
			
		LoadHighlights(hwndHV);

		UpdateCurFileName(hwndMain, hwndHV, szFileName, FALSE);

		if(fReuseTab == FALSE)
		{
			tci.mask     = TCIF_PARAM | TCIF_TEXT | TCIF_STATE;
			tci.dwState  = TCIS_FILENAME;
			tci.lParam   = (LPARAM)hwndHV;
			tci.pszText  = (WCHAR *)szFileName;//g_szFileTitle;
			
			// insert at the end
			TabCtrl_InsertItem(g_hwndTabView, TabCtrl_GetItemCount(g_hwndTabView), &tci);			
		}

		UpdateMainTabs(g_hwndTabView);
		HexSetCurFile(hwndMain, TabCtrl_GetItemCount(g_hwndTabView)-1, TRUE);

		if(e == ERROR_SHARING_VIOLATION)
		{
			HexInfoBox(TEXT("%s\r\nhas been opened as read-only."), g_szFileName);
			//MessageBox(hwndMain, TEXT("Another "), TEXT("HexEdit"), MB_ICONINFORMATION);
		}

		UpdateHighlight(szFileName, 0, TRUE);
		UpdateTypeView();

		return TRUE;
	}
	else
	{
		DWORD dwError = GetLastError();
		DestroyWindow(hwndHV);
		FmtErrorMsg(hwndMain, MB_OK|MB_ICONWARNING, dwError, TEXT("Error opening \'%s\'\r\n\r\n"), szFileName);
		return FALSE;
	}
}