// // 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; } }
// // 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; } }