#include "precomp.h"\r
#include "resource.h"\r
-#include <shlwapi.h>\r
#include "clipboard.h"\r
#include "hexwnd.h"\r
#include "hexwdlg.h"\r
void ChooseDiffDlg::add_diff(HWND hwndList, int diff, int lower, int upper)\r
{\r
char buf[100];\r
- sprintf(buf, "%d) 0x%x=%d to 0x%x=%d (%d bytes)", diff, lower, lower,\r
- upper, upper, upper - lower + 1);\r
+ sprintf(buf, "%d) 0x%x=%n%d to 0x%x=%n%d (%d bytes)", diff,\r
+ lower, &lower, lower,\r
+ upper, &upper, upper,\r
+ upper - lower + 1);\r
int i = SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM)buf);\r
- SendMessage(hwndList, LB_SETITEMDATA, i, lower);\r
+ SendMessage(hwndList, LB_SETITEMDATA, i, MAKELONG(lower, upper));\r
}\r
\r
//-------------------------------------------------------------------\r
BOOL ChooseDiffDlg::OnInitDialog(HWND hDlg)\r
{\r
char szFileName[_MAX_PATH];\r
- char szTitleName[_MAX_FNAME + _MAX_EXT];\r
szFileName[0] = '\0';\r
OPENFILENAME ofn;\r
ZeroMemory(&ofn, sizeof ofn);\r
ofn.lpstrFilter = "All Files (*.*)\0*.*\0\0";\r
ofn.lpstrFile = szFileName;\r
ofn.nMaxFile = _MAX_PATH;\r
- ofn.lpstrFileTitle = szTitleName;\r
- ofn.nMaxFileTitle = _MAX_FNAME + _MAX_EXT;\r
ofn.lpstrTitle = "Choose file to compare with";\r
- if (GetOpenFileName(&ofn))\r
+ if (!GetOpenFileName(&ofn))\r
+ return FALSE;\r
+ int filehandle = _open(szFileName, _O_RDONLY|_O_BINARY);\r
+ if (filehandle == -1)\r
{\r
- int filehandle = _open(szFileName, _O_RDONLY|_O_BINARY,_S_IREAD|_S_IWRITE);\r
- if (filehandle == -1)\r
- {\r
- MessageBox(hDlg, "Error while opening file.", "Compare", MB_ICONERROR);\r
- EndDialog(hDlg, IDCANCEL);\r
- }\r
- else if (int filelen = _filelength(filehandle))\r
+ MessageBox(hDlg, "Error while opening file.", "Compare", MB_ICONERROR);\r
+ return FALSE;\r
+ }\r
+ BOOL bDone = FALSE;\r
+ if (int filelen = _filelength(filehandle))\r
+ {\r
+ int iDestFileLen = filelen;\r
+ int iSrcFileLen = DataArray.GetLength() - iCurByte;\r
+ if (char *cmpdata = new char[filelen])\r
{\r
- int iDestFileLen = filelen;\r
- int iSrcFileLen = DataArray.GetLength() - iCurByte;\r
- char *cmpdata = new char[filelen];\r
// Read data.\r
if (_read(filehandle, cmpdata, filelen) != -1)\r
{\r
sprintf(buf, "Remaining loaded data size: %d, size of file on disk: %d.", iSrcFileLen, iDestFileLen);\r
SetDlgItemText(hDlg, IDC_STATIC2, buf);\r
SendMessage(hwndList, LB_SETCURSEL, 0, 0);\r
+ bDone = TRUE;\r
}\r
else\r
{\r
// No difference.\r
MessageBox(hDlg, "Data matches exactly.", "Compare", MB_ICONINFORMATION);\r
- EndDialog(hDlg, IDCANCEL);\r
}\r
}\r
else\r
{\r
MessageBox(hDlg, "Error while reading from file.", "Compare", MB_ICONERROR);\r
- EndDialog(hDlg, IDCANCEL);\r
}\r
delete[] cmpdata;\r
}\r
- _close(filehandle);\r
- }\r
- else\r
- {\r
- EndDialog(hDlg, IDCANCEL);\r
+ else\r
+ {\r
+ MessageBox(hDlg, "Not enough memory.", "Compare", MB_ICONERROR);\r
+ }\r
}\r
- return TRUE;\r
+ _close(filehandle);\r
+ return bDone;\r
}\r
\r
//-------------------------------------------------------------------\r
switch (iMsg)\r
{\r
case WM_INITDIALOG:\r
- return OnInitDialog(hDlg);\r
+ if (!OnInitDialog(hDlg))\r
+ EndDialog(hDlg, IDCANCEL);\r
+ return TRUE;\r
case WM_COMMAND:\r
switch (wParam)\r
{\r
if (i != -1)\r
{\r
SendMessage(hwndList, LB_GETTEXT, i, (LPARAM)buf);\r
- if (LPTSTR p = StrRChr(buf, 0, '('))\r
- {\r
- iCurByte += SendMessage(hwndList, LB_GETITEMDATA, i, 0);\r
- iStartOfSelection = iCurByte;\r
- iEndOfSelection = iCurByte + StrToInt(p + 1) - 1;\r
- bSelected = TRUE;\r
- adjust_view_for_selection();\r
- repaint();\r
- }\r
+ DWORD dw = SendMessage(hwndList, LB_GETITEMDATA, i, 0);\r
+ iStartOfSelection = iCurByte + StrToInt(buf + LOWORD(dw));\r
+ iEndOfSelection = iCurByte + StrToInt(buf + HIWORD(dw));\r
+ iCurByte = iStartOfSelection;\r
+ bSelected = TRUE;\r
+ adjust_view_for_selection();\r
+ repaint();\r
}\r
}\r
// fall through\r
{\r
// Assume selected area is to be hexdumped.\r
// Make sure end of selection is greater than start of selection.\r
-//Pabs changed - line remove & insert - works better now for both exporting types\r
- iCopyHexdumpDlgStart = iStartOfSelection ;\r
- iCopyHexdumpDlgEnd = iEndOfSelection ;\r
- if (iCopyHexdumpDlgEnd < iCopyHexdumpDlgStart)\r
- swap(iCopyHexdumpDlgStart, iCopyHexdumpDlgEnd);\r
-//end\r
+ iCopyHexdumpDlgStart = iGetStartOfSelection();\r
+ iCopyHexdumpDlgEnd = iGetEndOfSelection();\r
}\r
char buf[16];\r
sprintf(buf, "%x", iCopyHexdumpDlgStart);\r
--- /dev/null
+/*/DllProxies.cpp\r
+\r
+[The MIT license]\r
+\r
+Copyright (c) Jochen Neubeck\r
+\r
+Permission is hereby granted, free of charge, to any person obtaining a copy\r
+of this software and associated documentation files (the "Software"), to deal\r
+in the Software without restriction, including without limitation the rights\r
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
+copies of the Software, and to permit persons to whom the Software is\r
+furnished to do so, subject to the following conditions:\r
+\r
+The above copyright notice and this permission notice shall be included in\r
+all copies or substantial portions of the Software.\r
+\r
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
+SOFTWARE.\r
+\r
+[ChangeLog]\r
+\r
+DATE: BY: DESCRIPTION:\r
+========== ================== ================================================\r
+2007-02-03 Jochen Neubeck Created\r
+2008-08-24 Jochen Neubeck FormatMessage\r
+*/\r
+#include "precomp.h"\r
+#include "DllProxies.h"\r
+\r
+// If MFC is unavailable, resort to FatalAppExit for exceptions.\r
+#ifndef _AFX\r
+#define AfxThrowOleDispatchException FatalAppExit\r
+#endif\r
+\r
+// TCHAR-aware function name decoration\r
+#ifdef _UNICODE\r
+#define AW "W"\r
+#else\r
+#define AW "A"\r
+#endif\r
+\r
+/**\r
+ * @brief Load a dll and import a number of functions.\r
+ */\r
+LPVOID DllProxy::Load()\r
+{\r
+ if (Names[0])\r
+ {\r
+ if (Names[1] == 0 || Names[1] == Names[0])\r
+ return 0;\r
+ HMODULE handle = LoadLibraryA(Names[0]);\r
+ if (handle == 0)\r
+ {\r
+ Names[1] = 0;\r
+ return 0;\r
+ }\r
+ LPCSTR *export = Names;\r
+ *Names = 0;\r
+ while (LPCSTR name = *++export)\r
+ {\r
+ *export = (LPCSTR)GetProcAddress(handle, name);\r
+ if (*export == 0)\r
+ {\r
+ Names[0] = Names[1] = name;\r
+ Names[2] = (LPCSTR)handle;\r
+ return 0;\r
+ }\r
+ }\r
+ *export = (LPCSTR)handle;\r
+ }\r
+ return this + 1;\r
+}\r
+\r
+/**\r
+ * @brief Load a dll and import a number of functions, or throw an exception.\r
+ */\r
+LPVOID DllProxy::EnsureLoad()\r
+{\r
+ if (!Load())\r
+ {\r
+ TCHAR buf[1024];\r
+ FormatMessage(buf);\r
+ AfxThrowOleDispatchException(0, buf);\r
+ }\r
+ return this + 1;\r
+}\r
+\r
+/**\r
+ * @brief Format an appropriate error message.\r
+ */\r
+void DllProxy::FormatMessage(LPTSTR buf)\r
+{\r
+ int cch = wsprintf(buf, _T("%hs"), Names[0]);\r
+ DWORD error = ERROR_MOD_NOT_FOUND;\r
+ if (Names[1])\r
+ {\r
+ buf[cch++] = '@';\r
+ cch += ::GetModuleFileName((HMODULE)Names[2], buf + cch, MAX_PATH);\r
+ error = ERROR_PROC_NOT_FOUND;\r
+ }\r
+ buf[cch++] = ':';\r
+ buf[cch++] = '\n';\r
+ ::FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, error, 0, buf + cch, MAX_PATH, 0);\r
+}\r
+\r
+/**\r
+ * @brief RAWIO32 dll proxy\r
+ */\r
+DllProxy::Instance<struct RAWIO32> RAWIO32 =\r
+{\r
+ "RAWIO32.DLL",\r
+ "ResetDisk",\r
+ "ReadPhysicalSector",\r
+ "WritePhysicalSector",\r
+ "ReadDiskGeometry",\r
+ "EI13GetDriveParameters",\r
+ "EI13ReadSector",\r
+ "EI13WriteSector",\r
+ (HMODULE)0\r
+};\r
+\r
+/**\r
+ * @brief IMAGEHLP dll proxy\r
+ */\r
+DllProxy::Instance<struct IMAGEHLP> IMAGEHLP =\r
+{\r
+ "IMAGEHLP.DLL",\r
+ "UnMapAndLoad",\r
+ "ImageRvaToVa",\r
+ "MapAndLoad",\r
+ (HMODULE)0\r
+};\r
--- /dev/null
+struct DllProxy\r
+{\r
+ LPCSTR Names[1];\r
+ LPVOID Load() throw();\r
+ LPVOID EnsureLoad();\r
+ void FormatMessage(LPTSTR);\r
+ template<class T> struct Instance;\r
+};\r
+\r
+template<class T> struct DllProxy::Instance\r
+{\r
+ union\r
+ {\r
+ struct\r
+ {\r
+ LPCSTR Names[sizeof(T) / sizeof(LPCSTR)];\r
+ } Names;\r
+ DllProxy Proxy;\r
+ };\r
+ HMODULE H;\r
+ operator T *() throw()\r
+ {\r
+ return (T *)Proxy.Load();\r
+ }\r
+ T *operator->()\r
+ {\r
+ return (T *)Proxy.EnsureLoad();\r
+ }\r
+};\r
+\r
+/**\r
+ * @brief RAWIO32 dll proxy\r
+ */\r
+struct SectorInfo;\r
+struct ExtDriveInfo;\r
+struct BlockInfo;\r
+\r
+struct RAWIO32\r
+{\r
+ DWORD(WINAPI*ResetDisk)(SectorInfo *);\r
+ DWORD(WINAPI*ReadPhysicalSector)(SectorInfo *, LPBYTE, DWORD);\r
+ DWORD(WINAPI*WritePhysicalSector)(SectorInfo *, LPBYTE, DWORD);\r
+ DWORD(WINAPI*ReadDiskGeometry)(SectorInfo *);\r
+ DWORD(WINAPI*EI13GetDriveParameters)(ExtDriveInfo *);\r
+ DWORD(WINAPI*EI13ReadSector)(BlockInfo *, LPBYTE, DWORD);\r
+ DWORD(WINAPI*EI13WriteSector)(BlockInfo *, LPBYTE, DWORD);\r
+ HMODULE H;\r
+};\r
+\r
+extern DllProxy::Instance<struct RAWIO32> RAWIO32;\r
+\r
+/**\r
+ * @brief IMAGEHLP dll proxy\r
+ */\r
+typedef struct _LOADED_IMAGE *PLOADED_IMAGE;\r
+\r
+struct IMAGEHLP\r
+{\r
+ BOOL(NTAPI*UnMapAndLoad)(PLOADED_IMAGE);\r
+ PVOID(NTAPI*ImageRvaToVa)(PIMAGE_NT_HEADERS, PVOID, ULONG, PIMAGE_SECTION_HEADER);\r
+ BOOL(NTAPI*MapAndLoad)(PSTR, PSTR, PLOADED_IMAGE, BOOL, BOOL);\r
+ HMODULE H;\r
+};\r
+\r
+extern DllProxy::Instance<struct IMAGEHLP> IMAGEHLP;\r
\r
if (bSelected)\r
{\r
- int x = swapxor(iStartOfSelection, iEndOfSelection);\r
- iStartOfSelSetting = x ^ iStartOfSelection;\r
- iEndOfSelSetting = x ^ iEndOfSelection;\r
+ iStartOfSelSetting = iGetStartOfSelection();\r
+ iEndOfSelSetting = iGetEndOfSelection();\r
}\r
else\r
{\r
//prepare OPENFILENAME for the file open common dlg box\r
szFWFileName[0] = '\0';\r
OPENFILENAME ofn;\r
- ofn.lStructSize = sizeof (OPENFILENAME);\r
+ ZeroMemory(&ofn, sizeof ofn);\r
+ ofn.lStructSize = sizeof ofn;\r
ofn.hwndOwner = hDlg;\r
- ofn.hInstance = NULL;\r
ofn.lpstrFilter = "All Files (*.*)\0*.*\0\0";\r
- ofn.lpstrCustomFilter = NULL;\r
- ofn.nMaxCustFilter = 0;\r
- ofn.nFilterIndex = 0;\r
ofn.lpstrFile = szFWFileName;\r
ofn.nMaxFile = _MAX_PATH;\r
- ofn.lpstrFileTitle = NULL;\r
- ofn.lpstrInitialDir = NULL;\r
- ofn.lpstrTitle = NULL;\r
ofn.Flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_FILEMUSTEXIST;\r
- ofn.lpstrDefExt = NULL;\r
- ofn.lCustData = 0L;\r
- ofn.lpfnHook = NULL;\r
- ofn.lpTemplateName = NULL;\r
//show open dlgbox and if file good save name & path in edit box\r
if (GetOpenFileName(&ofn))\r
SetDlgItemText(hDlg, IDC_FN, ofn.lpstrFile);\r
if (bSelected)\r
{\r
// Get start offset and length (is at least =1) of selection.\r
- int sel_start, select_len;\r
- if (iEndOfSelection < iStartOfSelection)\r
- {\r
- sel_start = iEndOfSelection;\r
- select_len = iStartOfSelection - iEndOfSelection + 1;\r
- }\r
- else\r
+ int sel_start = iGetStartOfSelection();\r
+ int select_len = iGetEndOfSelection() - sel_start + 1;\r
+ // Get the length of the bytecode representation of the selection (including zero-byte at end).\r
+ int findlen = Text2BinTranslator::iBytes2BytecodeDestLen((char *)&DataArray[sel_start], select_len);\r
+ if (findlen > iFindDlgBufLen)\r
{\r
- sel_start = iStartOfSelection;\r
- select_len = iEndOfSelection - iStartOfSelection + 1;\r
+ MessageBox(hDlg, "Selection too large.", "Find", MB_ICONERROR);\r
+ EndDialog(hDlg, IDCANCEL);\r
+ return TRUE;\r
}\r
-\r
- // Get the length of the bytecode representation of the selection (including zero-byte at end).\r
- /*int findlen = */Text2BinTranslator::iBytes2BytecodeDestLen( (char*) &DataArray[sel_start], select_len );\r
-\r
- // New buffer length is at least FINDDLG_BUFLEN = 64K, bigger if findstring is bigger than 64K.\r
- // iFindDlgBufLen = max( FINDDLG_BUFLEN, findlen );\r
-\r
- // Signal dialogue function to display the text in the edit box.\r
- // iFindDlgLastLen = findlen;\r
-\r
- // Delete old buffer.\r
- // if( pcFindDlgBuffer != NULL )\r
- // delete [] pcFindDlgBuffer;\r
-\r
- // Allocate new buffer.\r
- // pcFindDlgBuffer = new char[ iFindDlgBufLen ];\r
- // if( pcFindDlgBuffer == NULL )\r
- // MessageBox( hwnd, "Could not allocate findstring buffer!", "Find ERROR", MB_OK | MB_ICONERROR );\r
-\r
// Translate the selection into bytecode and write it into the edit box buffer.\r
Text2BinTranslator::iTranslateBytesToBC(pcFindDlgBuffer, &DataArray[sel_start], select_len);\r
}\r
CheckDlgButton(hDlg, iFindDlgDirection == -1 ? IDC_RADIO1 : IDC_RADIO2, BST_CHECKED);\r
CheckDlgButton(hDlg, IDC_CHECK1, iFindDlgMatchCase);\r
CheckDlgButton(hDlg, IDC_CHECK4, iFindDlgUnicode);\r
- return FALSE;\r
+ return TRUE;\r
\r
case WM_COMMAND:\r
//GK16AUG2K\r
int i;\r
char (*cmp)(char) = iFindDlgMatchCase ? equal : lower_case;\r
\r
- SetCursor (LoadCursor (NULL, IDC_WAIT));\r
+ SetCursor(LoadCursor(NULL, IDC_WAIT));\r
// Find forward.\r
if (iFindDlgDirection == 1)\r
{\r
- i = find_bytes ((char*) &(DataArray[iCurByte + 1]), DataArray.GetLength() - iCurByte - 1, pcFindstring, destlen, 1, cmp);\r
+ i = find_bytes((char *)&DataArray[iCurByte + 1], DataArray.GetLength() - iCurByte - 1, pcFindstring, destlen, 1, cmp);\r
if (i != -1)\r
iCurByte += i + 1;\r
}\r
// Find backward.\r
else\r
{\r
- i = find_bytes( (char*) &(DataArray[0]),\r
- min( iCurByte + (destlen - 1), DataArray.GetLength() ),\r
- pcFindstring, destlen, -1, cmp );\r
+ i = find_bytes((char *)&DataArray[0],\r
+ min(iCurByte + (destlen - 1), DataArray.GetLength()),\r
+ pcFindstring, destlen, -1, cmp);\r
if (i != -1)\r
iCurByte = i;\r
}\r
- SetCursor (LoadCursor (NULL, IDC_ARROW));\r
+ SetCursor(LoadCursor(NULL, IDC_ARROW));\r
\r
if (i != -1)\r
{\r
- // Caret will be vertically centered if line of found string is not visible.\r
- /* OLD: ONLY SET CURSOR POSITION\r
- if( iCurByte/iBytesPerLine < iVscrollPos || iCurByte/iBytesPerLine > iVscrollPos + cyBuffer )\r
- iVscrollPos = max( 0, iCurByte/iBytesPerLine-cyBuffer/2 );\r
- adjust_vscrollbar();\r
- */\r
-\r
- // NEW: Select found interval.\r
+ // Select found interval.\r
bSelected = TRUE;\r
iStartOfSelection = iCurByte;\r
iEndOfSelection = iCurByte + destlen - 1;\r
To find source-level changes use diff or a visual diff prog such as CSdiff (good for RTF files) or Araxis Merge\r
\r
-version heksedit.dll 1.01b by Jochen Neubeck\r
+heksedit.dll by Jochen Neubeck\r
- Compiles into a dll for use as a control in other applications\r
- Thorough refactoring, plus a few fixes, plus probably a few bugs\r
- Got rid of most global variables, mostly to support multiple instances per process\r
--- /dev/null
+#include "precomp.h"\r
+#include "simparr.h"\r
+#include "LangArray.h"\r
+#include "VersionData.h"\r
+\r
+/**\r
+ * @brief Remove prefix from the string.\r
+ * @param [in] text String from which to jump over prefix.\r
+ * @param [in] prefix Prefix string to jump over.\r
+ * @return String without the prefix.\r
+ * @note Function returns pointer to original string,\r
+ * it does not allocate a new string.\r
+ */\r
+static char *EatPrefix(char *text, const char *prefix)\r
+{\r
+ if (int len = strlen(prefix))\r
+ if (_memicmp(text, prefix, len) == 0)\r
+ return text + len;\r
+ return 0;\r
+}\r
+\r
+LangArray::StringData *LangArray::StringData::Create(const char *ps, size_t length)\r
+{\r
+ size_t cb = FIELD_OFFSET(StringData, data) + length + 1;\r
+ StringData *psd = reinterpret_cast<StringData *>(new char[cb]);\r
+ psd->refcount = 0;\r
+ memcpy(psd->data, ps, length);\r
+ psd->data[length] = '\0';\r
+ return psd;\r
+}\r
+\r
+char *LangArray::StringData::Share()\r
+{\r
+ ++refcount;\r
+ return data;\r
+}\r
+\r
+void LangArray::StringData::Unshare(char *data)\r
+{\r
+ data -= FIELD_OFFSET(StringData, data);\r
+ if (--reinterpret_cast<StringData *>(data)->refcount == 0)\r
+ delete [] data;\r
+}\r
+\r
+LangArray::LangArray()\r
+: m_hLangDll(0)\r
+, m_codepage(0)\r
+, m_langid(0)\r
+{\r
+}\r
+\r
+LangArray::~LangArray()\r
+{\r
+ ClearAll();\r
+}\r
+\r
+void LangArray::ExpandToSize()\r
+{\r
+ while (m_nUpperBound < m_nSize - 1)\r
+ m_pT[++m_nUpperBound] = 0;\r
+}\r
+\r
+void LangArray::ClearAll()\r
+{\r
+ while (m_nSize)\r
+ if (char *data = m_pT[--m_nSize])\r
+ StringData::Unshare(data);\r
+ SimpleArray<char *>::ClearAll();\r
+}\r
+\r
+/**\r
+ * @brief Convert C style \\nnn, \\r, \\n, \\t etc into their indicated characters.\r
+ * @param [in] codepage Codepage to use in conversion.\r
+ * @param [in,out] s String to convert.\r
+ */\r
+static void unslash(unsigned codepage, char *p)\r
+{\r
+ char *q = p;\r
+ char c;\r
+ do\r
+ {\r
+ char *r = q + 1;\r
+ switch (c = *q)\r
+ {\r
+ case '\\':\r
+ switch (c = *r++)\r
+ {\r
+ case 'a':\r
+ c = '\a';\r
+ break;\r
+ case 'b':\r
+ c = '\b';\r
+ break;\r
+ case 'f':\r
+ c = '\f';\r
+ break;\r
+ case 'n':\r
+ c = '\n';\r
+ break;\r
+ case 'r':\r
+ c = '\r';\r
+ break;\r
+ case 't':\r
+ c = '\t';\r
+ break;\r
+ case 'v':\r
+ c = '\v';\r
+ break;\r
+ case 'x':\r
+ *p = (char)strtol(r, &q, 16);\r
+ break;\r
+ default:\r
+ *p = (char)strtol(r - 1, &q, 8);\r
+ break;\r
+ }\r
+ if (q >= r)\r
+ break;\r
+ // fall through\r
+ default:\r
+ *p = c;\r
+ if ((*p & 0x80) && IsDBCSLeadByteEx(codepage, *p))\r
+ *++p = *r++;\r
+ q = r;\r
+ }\r
+ ++p;\r
+ } while (c != '\0');\r
+}\r
+\r
+BOOL LangArray::Load(HINSTANCE hMainInstance, LANGID langid)\r
+{\r
+ if (m_langid == langid)\r
+ return TRUE;\r
+ m_langid = langid;\r
+ ClearAll();\r
+ char buf[1024];\r
+ SimpleString *ps = 0;\r
+ SimpleString msgid;\r
+ SimpleArray<int> lines;\r
+ int unresolved = 0;\r
+ int mismatched = 0;\r
+ FILE *f = 0;\r
+ if (langid)\r
+ {\r
+ TCHAR path[MAX_PATH];\r
+ GetModuleFileName(hMainInstance, path, MAX_PATH);\r
+ LPTSTR name = PathFindFileName(path); \r
+ LPTSTR ext = PathFindExtension(name);\r
+ *ext = _T('\0');\r
+ wsprintf(ext + 1, _T("lng\\%s.lng"), name);\r
+ *ext = _T('.');\r
+ if (m_hLangDll == 0)\r
+ {\r
+ m_hLangDll = LoadLibrary(path);\r
+ if (m_hLangDll == 0)\r
+ return FALSE;\r
+ }\r
+ const CVersionData *pvdMain = CVersionData::Load(hMainInstance);\r
+ if (pvdMain == 0)\r
+ return FALSE;\r
+ const CVersionData *pvdLang = CVersionData::Load(m_hLangDll);\r
+ if (pvdLang == 0)\r
+ return FALSE;\r
+ if (memcmp(pvdMain->Data(), pvdLang->Data(), FIELD_OFFSET(VS_FIXEDFILEINFO, dwProductVersionMS)))\r
+ return FALSE;\r
+ HRSRC potfile = FindResource(m_hLangDll, _T("en-US.pot"), RT_RCDATA);\r
+ if (potfile == 0)\r
+ return FALSE;\r
+ size_t size = SizeofResource(m_hLangDll, potfile);\r
+ const char *data = (const char *)LoadResource(m_hLangDll, potfile);\r
+ while (const char *eol = (const char *)memchr(data, '\n', size))\r
+ {\r
+ size_t len = eol - data;\r
+ if (len >= sizeof buf)\r
+ {\r
+ assert(FALSE);\r
+ break;\r
+ }\r
+ memcpy(buf, data, len);\r
+ buf[len++] = '\0';\r
+ data += len;\r
+ size -= len;\r
+ if (char *p = EatPrefix(buf, "#:"))\r
+ {\r
+ if (char *q = strchr(p, ':'))\r
+ {\r
+ int line = strtol(q + 1, &q, 10);\r
+ lines.Append(line);\r
+ ++unresolved;\r
+ }\r
+ }\r
+ else if (EatPrefix(buf, "msgid "))\r
+ {\r
+ ps = &msgid;\r
+ }\r
+ if (ps)\r
+ {\r
+ char *p = strchr(buf, '"');\r
+ char *q = strrchr(buf, '"');\r
+ if (q > p)\r
+ {\r
+ *q = '\0';\r
+ ps->AppendString(p + 1);\r
+ }\r
+ else\r
+ {\r
+ ps = 0;\r
+ if (int i = lines.GetLength())\r
+ {\r
+ StringData *psd = StringData::Create(msgid, msgid.StrLen());\r
+ do\r
+ {\r
+ int line = lines[--i];\r
+ if (GetLength() <= line)\r
+ {\r
+ SetSize(line + 1);\r
+ ExpandToSize();\r
+ }\r
+ SetAt(line, psd->Share());\r
+ } while (i);\r
+ }\r
+ lines.ClearAll();\r
+ msgid.Clear();\r
+ }\r
+ }\r
+ }\r
+ PathRemoveFileSpec(path);\r
+ name = PathAddBackslash(path);\r
+ // Look for a .po file that matches the given langid.\r
+ // Possible cases in order of precedence:\r
+ // (1) Country specific translation for given country, e.g. de-CH.po\r
+ // (2) Country specific translation to serve as default, e.g. de-DE.po\r
+ // (3) Country inspecific translation, e.g. de.po\r
+ do\r
+ {\r
+ if (int i = GetLocaleInfo(langid, LOCALE_SISO639LANGNAME, name, 4))\r
+ {\r
+ int j = GetLocaleInfo(langid, LOCALE_SISO3166CTRYNAME, name + i, 4);\r
+ name[--i] = '-';\r
+ do\r
+ {\r
+ strcpy(name + i + j, ".po");\r
+ f = fopen(path, "r");\r
+ if (j == 0 || SUBLANGID(langid) != SUBLANG_DEFAULT)\r
+ break;\r
+ j = 0;\r
+ } while (f == 0);\r
+ }\r
+ if (SUBLANGID(langid) == SUBLANG_DEFAULT)\r
+ break;\r
+ langid = MAKELANGID(PRIMARYLANGID(langid), SUBLANG_DEFAULT);\r
+ } while (f == 0);\r
+ }\r
+ if (f == 0)\r
+ {\r
+ if (m_hLangDll)\r
+ FreeLibrary(m_hLangDll);\r
+ m_hLangDll = 0;\r
+ return FALSE;\r
+ }\r
+ ps = 0;\r
+ msgid.ClearAll();\r
+ lines.ClearAll();\r
+ SimpleString msgstr;\r
+ SimpleString format;\r
+ SimpleString directive;\r
+ while (fgets(buf, sizeof buf, f))\r
+ {\r
+ if (char *p = EatPrefix(buf, "#:"))\r
+ {\r
+ if (char *q = strchr(p, ':'))\r
+ {\r
+ int line = strtol(q + 1, &q, 10);\r
+ if (line == 367)\r
+ line = line;\r
+ lines.Append(line);\r
+ --unresolved;\r
+ }\r
+ }\r
+ else if (char *p = EatPrefix(buf, "#,"))\r
+ {\r
+ StrTrim(p, " \t\r\n");\r
+ format = p;\r
+ }\r
+ else if (char *p = EatPrefix(buf, "#."))\r
+ {\r
+ StrTrim(p, " \t\r\n");\r
+ directive = p;\r
+ }\r
+ else if (EatPrefix(buf, "msgid "))\r
+ {\r
+ ps = &msgid;\r
+ }\r
+ else if (EatPrefix(buf, "msgstr "))\r
+ {\r
+ ps = &msgstr;\r
+ }\r
+ if (ps)\r
+ {\r
+ char *p = strchr(buf, '"');\r
+ char *q = strrchr(buf, '"');\r
+ if (q > p)\r
+ {\r
+ *q = '\0';\r
+ ps->AppendString(p + 1);\r
+ }\r
+ else\r
+ {\r
+ ps = 0;\r
+ if (msgstr.IsEmpty())\r
+ msgstr = msgid;\r
+ unslash(m_codepage, msgstr);\r
+ if (int i = lines.GetLength())\r
+ {\r
+ StringData *psd = StringData::Create(msgstr, msgstr.StrLen());\r
+ do\r
+ {\r
+ int line = lines[--i];\r
+ if (GetLength() <= line)\r
+ {\r
+ SetSize(line + 1);\r
+ ExpandToSize();\r
+ }\r
+ char *data = GetAt(line);\r
+ if (data && strcmp(data, msgid) == 0)\r
+ {\r
+ StringData::Unshare(data);\r
+ SetAt(line, psd->Share());\r
+ }\r
+ else\r
+ {\r
+ ++mismatched;\r
+ }\r
+ } while (i);\r
+ }\r
+ lines.ClearAll();\r
+ if (strcmp(directive, "Codepage") == 0)\r
+ {\r
+ m_codepage = strtol(msgstr, &p, 10);\r
+ directive.Clear();\r
+ }\r
+ msgid.Clear();\r
+ msgstr.Clear();\r
+ }\r
+ }\r
+ }\r
+ fclose(f);\r
+ if (unresolved || mismatched)\r
+ {\r
+ ClearAll();\r
+ if (m_hLangDll)\r
+ FreeLibrary(m_hLangDll);\r
+ m_hLangDll = 0;\r
+ return FALSE;\r
+ }\r
+ return TRUE;\r
+}\r
+\r
+BSTR LangArray::TranslateStringA(int line)\r
+{\r
+ BSTR t = 0;\r
+ if (line > 0 && line < GetLength())\r
+ {\r
+ if (char *s = GetAt(line))\r
+ {\r
+ if (int len = strlen(s))\r
+ {\r
+ unsigned codepage = GetACP();\r
+ if (m_codepage != codepage)\r
+ {\r
+ // Attempt to convert to UI codepage\r
+ BSTR ws = SysAllocStringLen(0, len);\r
+ len = MultiByteToWideChar(m_codepage, 0, s, -1, ws, len + 1);\r
+ if (len)\r
+ {\r
+ SysReAllocStringLen(&ws, ws, len - 1);\r
+ len = WideCharToMultiByte(codepage, 0, ws, -1, 0, 0, 0, 0);\r
+ if (len)\r
+ {\r
+ t = SysAllocStringByteLen(0, len - 1);\r
+ WideCharToMultiByte(codepage, 0, ws, -1, (PSTR)t, len, 0, 0);\r
+ }\r
+ }\r
+ SysFreeString(ws);\r
+ }\r
+ else\r
+ {\r
+ t = SysAllocStringByteLen(s, len);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return t;\r
+}\r
+\r
+BSTR LangArray::TranslateStringW(int line)\r
+{\r
+ BSTR ws = 0;\r
+ if (line > 0 && line < GetLength())\r
+ {\r
+ if (char *s = GetAt(line))\r
+ {\r
+ if (int len = strlen(s))\r
+ {\r
+ ws = SysAllocStringLen(0, len);\r
+ len = MultiByteToWideChar(m_codepage, 0, s, -1, ws, len + 1);\r
+ SysReAllocStringLen(&ws, ws, len - 1);\r
+ }\r
+ }\r
+ }\r
+ return ws;\r
+}\r
+\r
+void LangArray::TranslateDialogA(HWND h)\r
+{\r
+ UINT gw = GW_CHILD;\r
+ do\r
+ {\r
+ TCHAR text[80];\r
+ ::GetWindowTextA(h, text, RTL_NUMBER_OF(text));\r
+ int line = 0;\r
+ if (LPTSTR p = _tcschr(text, _T(':')))\r
+ line = _ttoi(p + 1);\r
+ if (BSTR t = TranslateStringA(line))\r
+ {\r
+ ::SetWindowTextA(h, (PSTR)t);\r
+ ::SysFreeString(t);\r
+ }\r
+ h = ::GetWindow(h, gw);\r
+ gw = GW_HWNDNEXT;\r
+ } while (h);\r
+}\r
+\r
+void LangArray::TranslateDialogW(HWND h)\r
+{\r
+ UINT gw = GW_CHILD;\r
+ do\r
+ {\r
+ WCHAR text[80];\r
+ ::GetWindowTextW(h, text, RTL_NUMBER_OF(text));\r
+ int line = 0;\r
+ if (LPWSTR p = wcschr(text, L':'))\r
+ line = _wtoi(p + 1);\r
+ if (BSTR t = TranslateStringW(line))\r
+ {\r
+ ::SetWindowTextW(h, t);\r
+ ::SysFreeString(t);\r
+ }\r
+ h = ::GetWindow(h, gw);\r
+ gw = GW_HWNDNEXT;\r
+ } while (h);\r
+}\r
--- /dev/null
+class LangArray : public SimpleArray<char *>\r
+{\r
+public:\r
+ struct StringData\r
+ {\r
+ int refcount;\r
+ char data[1];\r
+ static StringData *Create(const char *, size_t);\r
+ char *Share();\r
+ static void Unshare(char *);\r
+ };\r
+ HMODULE m_hLangDll;\r
+ unsigned m_codepage;\r
+ LANGID m_langid;\r
+ LangArray();\r
+ ~LangArray();\r
+ void ExpandToSize();\r
+ void ClearAll();\r
+ BOOL Load(HINSTANCE, LANGID);\r
+ BSTR TranslateStringA(int line);\r
+ BSTR TranslateStringW(int line);\r
+ void TranslateDialogA(HWND);\r
+ void TranslateDialogW(HWND);\r
+};\r
--- /dev/null
+Option Explicit\r
+''\r
+' This script creates the master POT file (en-US.pot).\r
+'\r
+' Copyright (C) 2007 by Tim Gerundt\r
+' Released under the "GNU General Public License"\r
+'\r
+' ID line follows -- this is updated by SVN\r
+' $Id: CreateMasterPotFile.vbs 4974 2008-01-29 23:10:28Z gerundt $\r
+\r
+Const ForReading = 1\r
+\r
+Const NO_BLOCK = 0\r
+Const MENU_BLOCK = 1\r
+Const DIALOGEX_BLOCK = 2\r
+Const STRINGTABLE_BLOCK = 3\r
+Const VERSIONINFO_BLOCK = 4\r
+Const ACCELERATORS_BLOCK = 5\r
+Const TEXTINCLUDE_BLOCK = 6\r
+\r
+Dim oFSO, bRunFromCmd\r
+\r
+Set oFSO = CreateObject("Scripting.FileSystemObject")\r
+\r
+bRunFromCmd = LCase(oFSO.GetFileName(Wscript.FullName)) = "cscript.exe"\r
+\r
+Call Main\r
+\r
+''\r
+' ...\r
+Sub Main\r
+ Dim oStrings, sCodePage\r
+ Dim StartTime, EndTime, Seconds\r
+ Dim oFile, dDate, sBuild\r
+ \r
+ StartTime = Time\r
+ \r
+ InfoBox "Creating POT file from heksedit.rc...", 3\r
+ dDate = oFSO.GetFile("../heksedit.rc").DateLastModified\r
+ sBuild = FormatTimeStamp(dDate) & ".CreateMasterPotFile"\r
+ If Not oFSO.FileExists(sBuild) Then\r
+ Set oStrings = GetStringsFromRcFile("../heksedit.rc", sCodePage)\r
+ CreateMasterPotFile "en-US.pot", oStrings, sCodePage\r
+ For Each oFile In oFSO.GetFolder(".").Files 'For all files in the current folder...\r
+ Select Case UCase(oFSO.GetExtensionName(oFile.Name))\r
+ Case "CREATEMASTERPOTFILE"\r
+ oFile.Name = sBuild\r
+ End Select\r
+ Next\r
+ \r
+ EndTime = Time\r
+ Seconds = DateDiff("s", StartTime, EndTime)\r
+ \r
+ InfoBox "POT file created, after " & Seconds & " second(s).", 10\r
+ Else 'If update NOT necessary...\r
+ InfoBox "POT file already up-to-date.", 10\r
+ End If\r
+End Sub\r
+\r
+''\r
+' ...\r
+Class CString\r
+ Dim Comment, References, Context, Id, Str\r
+End Class\r
+\r
+''\r
+' ...\r
+Function GetStringsFromRcFile(ByVal sRcFilePath, ByRef sCodePage)\r
+ Dim oBlacklist, oStrings, oString, oRcFile, sLine, iLine\r
+ Dim sRcFileName, iBlockType, sReference, sString, sComment, sContext, oMatch, sTemp, sKey\r
+ Dim oLcFile, sLcLine, fContinuation\r
+\r
+ Set oBlacklist = GetStringBlacklist("StringBlacklist.txt")\r
+ \r
+ Set oStrings = CreateObject("Scripting.Dictionary")\r
+ \r
+ If (oFSO.FileExists(sRcFilePath) = True) Then 'If the RC file exists...\r
+ sRcFileName = oFSO.GetFileName(sRcFilePath)\r
+ iLine = 0\r
+ iBlockType = NO_BLOCK\r
+ sCodePage = ""\r
+ Set oRcFile = oFSO.OpenTextFile(sRcFilePath, ForReading)\r
+ Set oLcFile = oFSO.CreateTextFile("heksedit.rc", True)\r
+ Do Until oRcFile.AtEndOfStream = True 'For all lines...\r
+ sLcLine = oRcFile.ReadLine\r
+ sLine = Trim(sLcLine)\r
+ sLine = Replace(sLine, vbTab, " ")\r
+ iLine = iLine + 1\r
+ \r
+ sReference = sRcFileName & ":" & iLine\r
+ sString = ""\r
+ sComment = ""\r
+ sContext = ""\r
+ \r
+ If fContinuation Then\r
+ ' Nothing to do\r
+ ElseIf InStr(sLine, " TEXTINCLUDE") > 0 Then 'TEXTINCLUDE...\r
+ iBlockType = TEXTINCLUDE_BLOCK\r
+ ElseIf InStr(sLine, " MENU") > 0 And InStr(sLine, "IDR_") > 0 Then 'MENU...\r
+ iBlockType = MENU_BLOCK\r
+ ElseIf InStr(sLine, " DIALOG") > 0 Then 'DIALOG(EX)...\r
+ iBlockType = DIALOGEX_BLOCK\r
+ ElseIf InStr(sLine, "STRINGTABLE") > 0 Then 'STRINGTABLE...\r
+ iBlockType = STRINGTABLE_BLOCK\r
+ ElseIf InStr(sLine, " VERSIONINFO") > 0 Then 'VERSIONINFO...\r
+ iBlockType = VERSIONINFO_BLOCK\r
+ ElseIf InStr(sLine, " ACCELERATORS") > 0 Then 'ACCELERATORS...\r
+ iBlockType = ACCELERATORS_BLOCK\r
+ ElseIf InStr(sLine, " BITMAP ") > 0 Then 'BEGIN...\r
+ sLcLine = "//" & sLcLine\r
+ 'IGNORE FOR SPEEDUP!\r
+ ElseIf (sLine = "BEGIN") Then 'BEGIN...\r
+ 'IGNORE FOR SPEEDUP!\r
+ ElseIf (sLine = "END") Then 'END...\r
+ If (iBlockType = STRINGTABLE_BLOCK) Then 'If inside stringtable...\r
+ iBlockType = NO_BLOCK\r
+ End If\r
+ ElseIf (Left(sLine, 2) = "//") Then 'If comment line...\r
+ sLine = ""\r
+ 'IGNORE FOR SPEEDUP!\r
+ ElseIf sLine <> "" Then 'If NOT empty line...\r
+ Select Case iBlockType\r
+ Case NO_BLOCK:\r
+ If FoundRegExpMatch(sLine, "LANGUAGE (LANG_\w*, SUBLANG_\w*)", oMatch) Then 'LANGUAGE...\r
+ sString = oMatch.SubMatches(0)\r
+ sComment = "LANGUAGE, SUBLANGUAGE"\r
+ ElseIf FoundRegExpMatch(sLine, "code_page\(([\d]+)\)", oMatch) Then 'code_page...\r
+ sString = oMatch.SubMatches(0)\r
+ sComment = "Codepage"\r
+ sCodePage = oMatch.SubMatches(0)\r
+ End If\r
+ \r
+ Case MENU_BLOCK, DIALOGEX_BLOCK, STRINGTABLE_BLOCK:\r
+ If InStr(sLine, """") > 0 Then 'If quote found (for speedup)...\r
+ '--------------------------------------------------------------------------------\r
+ ' Replace 1st string literal only - 2nd string literal specifies control class!\r
+ '--------------------------------------------------------------------------------\r
+ If FoundRegExpMatch(sLine, """((?:""""|[^""])*)""", oMatch) Then 'String...\r
+ sTemp = oMatch.SubMatches(0)\r
+ If (sTemp <> "") And (oBlacklist.Exists(sTemp) = False) Then 'If NOT blacklisted...\r
+ sLcLine = Replace(sLcLine, """" & sTemp & """", """" & sReference & """", 1, 1)\r
+ sString = Replace(sTemp, """""", "\""")\r
+ If FoundRegExpMatch(sLine, "//#\. (.*?)$", oMatch) Then 'If found a comment for the translators...\r
+ sComment = Trim(oMatch.SubMatches(0))\r
+ ElseIf FoundRegExpMatch(sLine, "//msgctxt (.*?)$", oMatch) Then 'If found a context for the translation...\r
+ sContext = Trim(oMatch.SubMatches(0))\r
+ sComment = sContext\r
+ End If\r
+ End If\r
+ End If\r
+ End If\r
+ \r
+ Case VERSIONINFO_BLOCK:\r
+ If FoundRegExpMatch(sLine, "BLOCK ""([0-9A-F]+)""", oMatch) Then 'StringFileInfo.Block...\r
+ sString = oMatch.SubMatches(0)\r
+ sComment = "StringFileInfo.Block"\r
+ ElseIf FoundRegExpMatch(sLine, "VALUE ""Comments"", ""(.*?)\\?0?""", oMatch) Then 'StringFileInfo.Comments...\r
+ sString = oMatch.SubMatches(0)\r
+ sComment = "You should use a string like ""Translated by "" followed by the translator names for this string. It is ONLY VISIBLE in the StringFileInfo.Comments property from the final resource file!"\r
+ ElseIf FoundRegExpMatch(sLine, "VALUE ""Translation"", (.*?)$", oMatch) Then 'VarFileInfo.Translation...\r
+ sString = oMatch.SubMatches(0)\r
+ sComment = "VarFileInfo.Translation"\r
+ End If\r
+ \r
+ End Select\r
+ End If\r
+ \r
+ If (sString <> "") Then\r
+ sKey = sContext & sString\r
+ Set oString = New CString\r
+ If (oStrings.Exists(sKey) = True) Then 'If the key is already used...\r
+ Set oString = oStrings(sKey)\r
+ End If\r
+ If (sComment <> "") Then\r
+ oString.Comment = sComment\r
+ End If\r
+ If (oString.References <> "") Then\r
+ oString.References = oString.References & vbTab & sReference\r
+ Else\r
+ oString.References = sReference\r
+ End If\r
+ oString.Context = sContext\r
+ oString.Id = sString\r
+ oString.Str = ""\r
+ \r
+ If (oStrings.Exists(sKey) = True) Then 'If the key is already used...\r
+ Set oStrings(sKey) = oString\r
+ Else 'If the key is NOT already used...\r
+ oStrings.Add sContext & sString, oString\r
+ End If\r
+ End If\r
+ If sLine = "#ifndef APSTUDIO_INVOKED" Then Exit Do\r
+ oLcFile.WriteLine sLcLine\r
+ fContinuation = sLine <> "" And InStr(",|", Right(sLine, 1)) <> 0\r
+ Loop\r
+ oLcFile.WriteLine "#include ""version.rc"""\r
+ oLcFile.WriteLine "en-US.pot RCDATA ""en-US.pot"""\r
+ oRcFile.Close\r
+ oLcFile.Close\r
+ End If\r
+ Set GetStringsFromRcFile = oStrings\r
+End Function\r
+\r
+''\r
+' ...\r
+Function GetStringBlacklist(ByVal sTxtFilePath)\r
+ Dim oBlacklist, oTxtFile, sLine\r
+ \r
+ Set oBlacklist = CreateObject("Scripting.Dictionary")\r
+ \r
+ If (oFSO.FileExists(sTxtFilePath) = True) Then 'If the blacklist file exists...\r
+ Set oTxtFile = oFSO.OpenTextFile(sTxtFilePath, ForReading)\r
+ Do Until oTxtFile.AtEndOfStream = True 'For all lines...\r
+ sLine = Trim(oTxtFile.ReadLine)\r
+ \r
+ If (sLine <> "") Then\r
+ If (oBlacklist.Exists(sLine) = False) Then 'If the key is NOT already used...\r
+ oBlacklist.Add sLine, True\r
+ End If\r
+ End If\r
+ Loop\r
+ oTxtFile.Close\r
+ End If\r
+ Set GetStringBlacklist = oBlacklist\r
+End Function\r
+\r
+''\r
+' ...\r
+Sub CreateMasterPotFile(ByVal sPotPath, ByVal oStrings, ByVal sCodePage)\r
+ Dim oPotFile, sKey, oString, aReferences, i\r
+ \r
+ Set oPotFile = oFSO.CreateTextFile(sPotPath, True)\r
+ \r
+ oPotFile.WriteLine "# This file is part of FRHED <http://winmerge.org/>"\r
+ oPotFile.WriteLine "# Released under the ""GNU General Public License"""\r
+ oPotFile.WriteLine "#"\r
+ oPotFile.WriteLine "# ID line follows -- this is updated by SVN"\r
+ oPotFile.WriteLine "# $" & "Id: " & "$"\r
+ oPotFile.WriteLine "#"\r
+ oPotFile.WriteLine "msgid """""\r
+ oPotFile.WriteLine "msgstr """""\r
+ oPotFile.WriteLine """Project-Id-Version: FRHED\n"""\r
+ oPotFile.WriteLine """Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=13216&atid=113216\n"""\r
+ oPotFile.WriteLine """POT-Creation-Date: " & GetPotCreationDate() & "\n"""\r
+ oPotFile.WriteLine """PO-Revision-Date: \n"""\r
+ oPotFile.WriteLine """Last-Translator: \n"""\r
+ oPotFile.WriteLine """Language-Team: English <winmerge-translate@lists.sourceforge.net>\n"""\r
+ oPotFile.WriteLine """MIME-Version: 1.0\n"""\r
+ oPotFile.WriteLine """Content-Type: text/plain; charset=CP" & sCodePage & "\n"""\r
+ oPotFile.WriteLine """Content-Transfer-Encoding: 8bit\n"""\r
+ oPotFile.WriteLine """X-Poedit-Language: English\n"""\r
+ oPotFile.WriteLine """X-Poedit-SourceCharset: CP" & sCodePage & "\n"""\r
+ oPotFile.WriteLine """X-Generator: CreateMasterPotFile.vbs\n"""\r
+ oPotFile.WriteLine\r
+ For Each sKey In oStrings.Keys 'For all strings...\r
+ Set oString = oStrings(sKey)\r
+ If (oString.Comment <> "") Then 'If comment exists...\r
+ oPotFile.WriteLine "#. " & oString.Comment\r
+ End If\r
+ aReferences = Split(oString.References, vbTab)\r
+ For i = LBound(aReferences) To UBound(aReferences) 'For all references...\r
+ oPotFile.WriteLine "#: " & aReferences(i)\r
+ Next\r
+ oPotFile.WriteLine "#, c-format"\r
+ If (oString.Context <> "") Then 'If context exists...\r
+ oPotFile.WriteLine "msgctxt """ & oString.Context & """"\r
+ End If\r
+ oPotFile.WriteLine "msgid """ & oString.Id & """"\r
+ oPotFile.WriteLine "msgstr """""\r
+ oPotFile.WriteLine\r
+ Next\r
+ oPotFile.Close\r
+End Sub\r
+\r
+''\r
+' ...\r
+Function FoundRegExpMatch(ByVal sString, ByVal sPattern, ByRef oMatchReturn)\r
+ Dim oRegExp, oMatches\r
+ \r
+ Set oRegExp = New RegExp\r
+ oRegExp.Pattern = sPattern\r
+ oRegExp.IgnoreCase = True\r
+ \r
+ Set oMatchReturn = Nothing\r
+ FoundRegExpMatch = False\r
+ If oRegExp.Test(sString) Then\r
+ Set oMatches = oRegExp.Execute(sString)\r
+ Set oMatchReturn = oMatches(0)\r
+ FoundRegExpMatch = True\r
+ End If\r
+End Function\r
+\r
+''\r
+' ...\r
+Function GetPotCreationDate()\r
+ Dim oNow, sYear, sMonth, sDay, sHour, sMinute\r
+ \r
+ oNow = Now()\r
+ sYear = Year(oNow)\r
+ sMonth = Month(oNow)\r
+ If (sMonth < 10) Then sMonth = "0" & sMonth\r
+ sDay = Day(oNow)\r
+ If (sDay < 10) Then sDay = "0" & sDay\r
+ sHour = Hour(oNow)\r
+ If (sHour < 10) Then sHour = "0" & sHour\r
+ sMinute = Minute(oNow)\r
+ If (sMinute < 10) Then sMinute = "0" & sMinute\r
+ \r
+ GetPotCreationDate = sYear & "-" & sMonth & "-" & sDay & " " & sHour & ":" & sMinute & "+0000"\r
+End Function\r
+\r
+''\r
+' ...\r
+Function FormatTimestamp(now)\r
+ ' Form an ISO 8601 compliant timestamp without separators. Don't care about timezones.\r
+ FormatTimestamp = Right("0000" & Year(now), 4) & Right("00" & Month(now), 2) & Right("00" & Day(now), 2) _\r
+ & "T" & Right("00" & Hour(now), 2) & Right("00" & Minute(now), 2) & Right("00" & Second(now), 2)\r
+End Function\r
+\r
+''\r
+' ...\r
+Function InfoBox(ByVal sText, ByVal iSecondsToWait)\r
+ Dim oShell\r
+ \r
+ If (bRunFromCmd = False) Then 'If run from command line...\r
+ Set oShell = Wscript.CreateObject("WScript.Shell")\r
+ InfoBox = oShell.Popup(sText, iSecondsToWait, Wscript.ScriptName, 64)\r
+ Else 'If NOT run from command line...\r
+ Wscript.Echo sText\r
+ End If\r
+End Function\r
--- /dev/null
+(filter name)\r
+[VERSION COPYRIGHT GOES HERE]\r
+_HDR_POPUP_\r
+_ITEM_POPUP_\r
+_POPUP_\r
+<PlaceHolder>\r
+0\r
+0.00\r
+IDM_MRU\r
+MS Shell Dlg\r
+Version 1.0\r
--- /dev/null
+Option Explicit\r
+''\r
+' This script updates the language PO files from the master POT file.\r
+'\r
+' Copyright (C) 2007 by Tim Gerundt\r
+' Released under the "GNU General Public License"\r
+'\r
+' ID line follows -- this is updated by SVN\r
+' $Id: UpdatePoFilesFromPotFile.vbs 4974 2008-01-29 23:10:28Z gerundt $\r
+\r
+Const ForReading = 1\r
+\r
+Dim oFSO, bRunFromCmd\r
+\r
+Set oFSO = CreateObject("Scripting.FileSystemObject")\r
+\r
+bRunFromCmd = False\r
+If LCase(oFSO.GetFileName(Wscript.FullName)) = "cscript.exe" Then\r
+ bRunFromCmd = True\r
+End If\r
+\r
+Call Main\r
+\r
+''\r
+' ...\r
+Sub Main\r
+ Dim oFiles, oFile, sFile, sDir, bPotChanged\r
+ Dim oEnglishPotContent, oLanguagePoContent\r
+ Dim StartTime, EndTime, Seconds\r
+ Dim dDate, sBuild\r
+ \r
+ StartTime = Time\r
+ \r
+ InfoBox "Updating PO files from POT file...", 3\r
+ \r
+ sDir = oFSO.GetParentFolderName(Wscript.ScriptFullName)\r
+\r
+ dDate = oFSO.GetFile(sDir & "\en-US.pot").DateLastModified\r
+ sBuild = FormatTimeStamp(dDate) & ".UpdatePoFilesFromPotFile"\r
+\r
+ Set oEnglishPotContent = GetContentFromPoFile(sDir & "\en-US.pot")\r
+ If oEnglishPotContent.Count = 0 Then Err.Raise vbObjectError, "Sub Main", "Error reading content from en-US.pot"\r
+ Set oFiles = Wscript.Arguments\r
+ If oFiles.Count = 0 Then\r
+ Set oFiles = oFSO.GetFolder(".").Files\r
+ bPotChanged = Not oFSO.FileExists(sBuild)\r
+ Else\r
+ bPotChanged = True\r
+ End If\r
+ For Each oFile In oFiles 'For all languages...\r
+ sFile = CStr(oFile)\r
+ Select Case UCase(oFSO.GetExtensionName(sFile))\r
+ Case "UPDATEPOFILESFROMPOTFILE"\r
+ If oFile.Name <> sBuild Then oFile.Name = sBuild\r
+ Case "PO"\r
+ If bPotChanged Or GetArchiveBit(sFile) Then 'If update necessary...\r
+ If bRunFromCmd Then 'If run from command line...\r
+ Wscript.Echo oFSO.GetFileName(sFile)\r
+ End If\r
+ Set oLanguagePoContent = GetContentFromPoFile(sFile)\r
+ If oLanguagePoContent.Count > 0 Then 'If content exists...\r
+ CreateUpdatedPoFile sFile, oEnglishPotContent, oLanguagePoContent\r
+ End If\r
+ SetArchiveBit sFile, False\r
+ End If\r
+ End Select\r
+ Next\r
+ \r
+ EndTime = Time\r
+ Seconds = DateDiff("s", StartTime, EndTime)\r
+ \r
+ InfoBox "All PO files updated, after " & Seconds & " second(s).", 10\r
+End Sub\r
+\r
+''\r
+' ...\r
+Class CSubContent\r
+ Dim sMsgCtxt2, sMsgId2, sMsgStr2, sTranslatorComments, sExtractedComments, sReferences, sFlags\r
+End Class\r
+\r
+''\r
+' ...\r
+Function GetContentFromPoFile(ByVal sPoPath)\r
+ Dim oContent, oSubContent, oTextFile, sLine\r
+ Dim oMatch, iMsgStarted, sMsgCtxt, sMsgId\r
+ Dim reMsgCtxt, reMsgId, reMsgContinued\r
+\r
+ Set reMsgCtxt = New RegExp\r
+ reMsgCtxt.Pattern = "^msgctxt ""(.*)""$"\r
+ reMsgCtxt.IgnoreCase = True\r
+\r
+ Set reMsgId = New RegExp\r
+ reMsgId.Pattern = "^msgid ""(.*)""$"\r
+ reMsgId.IgnoreCase = True\r
+\r
+ Set reMsgContinued = New RegExp\r
+ reMsgContinued.Pattern = "^""(.*)""$"\r
+ reMsgContinued.IgnoreCase = True\r
+ \r
+ Set oContent = CreateObject("Scripting.Dictionary")\r
+ \r
+ iMsgStarted = 0\r
+ sMsgCtxt = ""\r
+ Set oSubContent = New CSubContent\r
+ Set oTextFile = oFSO.OpenTextFile(sPoPath, ForReading)\r
+ Do Until oTextFile.AtEndOfStream 'For all lines...\r
+ sLine = Trim(oTextFile.ReadLine)\r
+ If sLine <> "" Then 'If NOT empty line...\r
+ If Left(sLine, 1) <> "#" Then 'If NOT comment line...\r
+ If reMsgCtxt.Test(sLine) Then 'If "msgctxt"...\r
+ iMsgStarted = 1\r
+ Set oMatch = reMsgCtxt.Execute(sLine)(0)\r
+ sMsgCtxt = oMatch.SubMatches(0)\r
+ oSubContent.sMsgCtxt2 = sLine & vbCrLf\r
+ ElseIf reMsgId.Test(sLine) Then 'If "msgid"...\r
+ iMsgStarted = 2\r
+ Set oMatch = reMsgId.Execute(sLine)(0)\r
+ sMsgId = oMatch.SubMatches(0)\r
+ oSubContent.sMsgId2 = sLine & vbCrLf\r
+ ElseIf Left(sLine, 8) = "msgstr """ Then 'If "msgstr"...\r
+ iMsgStarted = 3\r
+ oSubContent.sMsgStr2 = sLine & vbCrLf\r
+ ElseIf reMsgContinued.Test(sLine) Then 'If "msgctxt", "msgid" or "msgstr" continued...\r
+ If iMsgStarted = 1 Then\r
+ sMsgCtxt = sMsgCtxt & oMatch.SubMatches(0)\r
+ oSubContent.sMsgCtxt2 = oSubContent.sMsgCtxt2 & sLine & vbCrLf\r
+ ElseIf iMsgStarted = 2 Then\r
+ Set oMatch = reMsgContinued.Execute(sLine)(0)\r
+ sMsgId = sMsgId & oMatch.SubMatches(0)\r
+ oSubContent.sMsgId2 = oSubContent.sMsgId2 & sLine & vbCrLf\r
+ ElseIf iMsgStarted = 3 Then\r
+ oSubContent.sMsgStr2 = oSubContent.sMsgStr2 & sLine & vbCrLf\r
+ End If\r
+ End If\r
+ Else 'If comment line...\r
+ iMsgStarted = -1\r
+ Select Case Left(sLine, 2)\r
+ Case "#." 'Extracted comment...\r
+ oSubContent.sExtractedComments = oSubContent.sExtractedComments & sLine & vbCrLf\r
+ Case "#:" 'Reference...\r
+ oSubContent.sReferences = oSubContent.sReferences & sLine & vbCrLf\r
+ Case "#," 'Flag...\r
+ oSubContent.sFlags = oSubContent.sFlags & sLine & vbCrLf\r
+ Case Else 'Translator comment...\r
+ oSubContent.sTranslatorComments = oSubContent.sTranslatorComments & sLine & vbCrLf\r
+ End Select\r
+ End If\r
+ ElseIf iMsgStarted <> 0 Then 'If empty line AND there is pending translation...\r
+ iMsgStarted = 0 'Don't process same translation twice\r
+ If sMsgId = "" Then sMsgId = "__head__"\r
+ oContent.Add sMsgCtxt & sMsgId, oSubContent\r
+ sMsgCtxt = ""\r
+ Set oSubContent = New CSubContent\r
+ End If\r
+ Loop\r
+ oTextFile.Close\r
+ Set GetContentFromPoFile = oContent\r
+End Function\r
+\r
+''\r
+' ...\r
+Sub CreateUpdatedPoFile(ByVal sPoPath, ByVal oEnglishPotContent, ByVal oLanguagePoContent)\r
+ Dim sBakPath, oPoFile, sKey, oEnglish, oLanguage\r
+ \r
+ '--------------------------------------------------------------------------------\r
+ ' Backup the old PO file...\r
+ '--------------------------------------------------------------------------------\r
+ sBakPath = sPoPath & ".bak"\r
+ If oFSO.FileExists(sBakPath) Then\r
+ oFSO.DeleteFile sBakPath\r
+ End If\r
+ oFSO.MoveFile sPoPath, sBakPath\r
+ '--------------------------------------------------------------------------------\r
+ \r
+ Set oPoFile = oFSO.CreateTextFile(sPoPath, True)\r
+ \r
+ Set oLanguage = oLanguagePoContent("__head__")\r
+ oPoFile.Write oLanguage.sTranslatorComments\r
+ oPoFile.Write oLanguage.sMsgId2\r
+ oPoFile.Write oLanguage.sMsgStr2\r
+ oPoFile.Write vbCrLf\r
+ For Each sKey In oEnglishPotContent.Keys 'For all English content...\r
+ If sKey <> "__head__" Then\r
+ Set oEnglish = oEnglishPotContent(sKey)\r
+ If oLanguagePoContent.Exists(sKey) Then 'If translation exists...\r
+ Set oLanguage = oLanguagePoContent(sKey)\r
+ Else 'If translation NOT exists...\r
+ Set oLanguage = oEnglish\r
+ End If\r
+ oPoFile.Write oLanguage.sTranslatorComments\r
+ oPoFile.Write oEnglish.sExtractedComments\r
+ oPoFile.Write oEnglish.sReferences\r
+ oPoFile.Write oLanguage.sFlags\r
+ oPoFile.Write oLanguage.sMsgCtxt2\r
+ oPoFile.Write oLanguage.sMsgId2\r
+ oPoFile.Write oLanguage.sMsgStr2\r
+ oPoFile.Write vbCrLf\r
+ End If\r
+ Next\r
+ oPoFile.Close\r
+End Sub\r
+\r
+''\r
+' ...\r
+Function FormatTimestamp(now)\r
+ ' Form an ISO 8601 compliant timestamp without separators. Don't care about timezones.\r
+ FormatTimestamp = Right("0000" & Year(now), 4) & Right("00" & Month(now), 2) & Right("00" & Day(now), 2) _\r
+ & "T" & Right("00" & Hour(now), 2) & Right("00" & Minute(now), 2) & Right("00" & Second(now), 2)\r
+End Function\r
+\r
+''\r
+' ...\r
+Function InfoBox(ByVal sText, ByVal iSecondsToWait)\r
+ Dim oShell\r
+ \r
+ If (bRunFromCmd = False) Then 'If run from command line...\r
+ Set oShell = Wscript.CreateObject("WScript.Shell")\r
+ InfoBox = oShell.Popup(sText, iSecondsToWait, Wscript.ScriptName, 64)\r
+ Else 'If NOT run from command line...\r
+ Wscript.Echo sText\r
+ End If\r
+End Function\r
+\r
+''\r
+' ...\r
+Function GetArchiveBit(ByVal sFilePath)\r
+ Dim oFile\r
+ GetArchiveBit = False\r
+ If oFSO.FileExists(sFilePath) Then 'If the file exists...\r
+ Set oFile = oFSO.GetFile(sFilePath)\r
+ If (oFile.Attributes And 32) = 32 Then 'If archive bit set...\r
+ GetArchiveBit = True\r
+ End If\r
+ End If\r
+End Function\r
+\r
+''\r
+' ...\r
+Sub SetArchiveBit(ByVal sFilePath, ByVal bValue)\r
+ Dim oFile\r
+ If oFSO.FileExists(sFilePath) Then 'If the file exists...\r
+ Set oFile = oFSO.GetFile(sFilePath)\r
+ If bValue Xor (oFile.Attributes And 32) = 32 Then 'If archive bit different...\r
+ oFile.Attributes = oFile.Attributes Xor 32\r
+ End If\r
+ End If\r
+End Sub\r
--- /dev/null
+// Microsoft Visual C++ generated resource script.\r
+//\r
+#include "resource.h"\r
+\r
+#define APSTUDIO_READONLY_SYMBOLS\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Generated from the TEXTINCLUDE 2 resource.\r
+//\r
+#include "winres.h"\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+#undef APSTUDIO_READONLY_SYMBOLS\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+// English (U.S.) resources\r
+\r
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r
+#ifdef _WIN32\r
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US\r
+#pragma code_page(1252)\r
+#endif //_WIN32\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Menu\r
+//\r
+\r
+IDR_MAINMENU MENU \r
+BEGIN\r
+ POPUP "heksedit.rc:31"\r
+ BEGIN\r
+ MENUITEM "heksedit.rc:33", IDM_NEW\r
+ MENUITEM "heksedit.rc:34", IDM_OPEN\r
+ MENUITEM "heksedit.rc:35", IDM_PARTIAL_OPEN\r
+ MENUITEM "heksedit.rc:36", IDM_SAVE\r
+ MENUITEM "heksedit.rc:37", IDM_SAVE_AS\r
+ MENUITEM "heksedit.rc:38", IDM_SAVESELAS\r
+ MENUITEM "heksedit.rc:39", IDM_REVERT\r
+ MENUITEM "heksedit.rc:40", IDM_INSERTFILE\r
+ MENUITEM "heksedit.rc:41", IDM_DELETEFILE\r
+ MENUITEM "heksedit.rc:42", IDM_NEW\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "heksedit.rc:44", IDM_COPY_HEXDUMP\r
+ MENUITEM "heksedit.rc:45", IDM_OPEN_HEXDUMP\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "heksedit.rc:47", IDM_EXIT\r
+ MENUITEM "IDM_MRU", IDM_MRU1\r
+ MENUITEM "IDM_MRU", IDM_MRU2\r
+ MENUITEM "IDM_MRU", IDM_MRU3\r
+ MENUITEM "IDM_MRU", IDM_MRU4\r
+ MENUITEM "IDM_MRU", IDM_MRU5\r
+ MENUITEM "IDM_MRU", IDM_MRU6\r
+ MENUITEM "IDM_MRU", IDM_MRU7\r
+ MENUITEM "IDM_MRU", IDM_MRU8\r
+ MENUITEM "IDM_MRU", IDM_MRU9\r
+ END\r
+ POPUP "heksedit.rc:58"\r
+ BEGIN\r
+ MENUITEM "heksedit.rc:60", ID_DISK_OPEN_DRIVE\r
+ MENUITEM "heksedit.rc:61", ID_DISK_CLOSEDRIVE\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "heksedit.rc:63", ID_DISK_GOTOFIRSTTRACK\r
+ MENUITEM "heksedit.rc:64", ID_DISK_GOTONEXTTRACK\r
+ MENUITEM "heksedit.rc:65", \r
+ ID_DISK_GOTOPREVIOUSTRACK\r
+ MENUITEM "heksedit.rc:67", ID_DISK_GOTOLASTTRACK\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "heksedit.rc:69", ID_DISK_GOTOTRACK\r
+ END\r
+ POPUP "heksedit.rc:71"\r
+ BEGIN\r
+ MENUITEM "heksedit.rc:73", IDM_EDIT_CUT\r
+ MENUITEM "heksedit.rc:74", IDM_EDIT_COPY\r
+ MENUITEM "heksedit.rc:75", IDM_EDIT_PASTE\r
+ MENUITEM "heksedit.rc:76", IDM_PASTE_WITH_DLG\r
+ MENUITEM "heksedit.rc:77", IDM_EDIT_MOVE_COPY\r
+ MENUITEM "heksedit.rc:78", IDM_EDIT_REVERSE\r
+ MENUITEM "heksedit.rc:79", IDM_EDIT_APPEND\r
+ MENUITEM "heksedit.rc:80", IDA_DELETEKEY\r
+ MENUITEM "heksedit.rc:81", IDM_SELECT_ALL\r
+ MENUITEM "heksedit.rc:82", IDM_SELECT_BLOCK\r
+ MENUITEM "heksedit.rc:83", IDM_FILL_WITH\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "heksedit.rc:85", IDM_CHANGE_MODE\r
+ MENUITEM "heksedit.rc:86", \r
+ IDA_INSERTMODETOGGLE\r
+ MENUITEM "heksedit.rc:88", IDM_EDIT_READONLYMODE\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "heksedit.rc:90", IDM_FIND\r
+ MENUITEM "heksedit.rc:91", IDM_REPLACE\r
+ MENUITEM "heksedit.rc:92", IDM_FINDPREV\r
+ MENUITEM "heksedit.rc:93", IDM_FINDNEXT\r
+ MENUITEM "heksedit.rc:94", IDM_GO_TO\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "heksedit.rc:96", \r
+ IDM_EDIT_ENTERDECIMALVALUE\r
+ MENUITEM "heksedit.rc:98", IDM_EDIT_MANIPULATEBITS\r
+ MENUITEM "heksedit.rc:99", IDM_COMPARE\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "heksedit.rc:101", IDM_READFLOAT\r
+ MENUITEM "heksedit.rc:102", IDM_PROPERTIES\r
+ MENUITEM "heksedit.rc:103", IDM_APPLYTEMPLATE\r
+ MENUITEM "heksedit.rc:104", IDM_OPEN_TEXT\r
+ END\r
+ POPUP "heksedit.rc:106"\r
+ BEGIN\r
+ MENUITEM "heksedit.rc:108", IDM_SCROLL_LEFT\r
+ MENUITEM "heksedit.rc:109", IDM_SCROLL_RIGHT\r
+ MENUITEM "heksedit.rc:110", IDM_SCROLL_UP\r
+ MENUITEM "heksedit.rc:111", IDM_SCROLL_DOWN\r
+ MENUITEM "heksedit.rc:112", IDM_SCROLL_PRIOR\r
+ MENUITEM "heksedit.rc:113", IDM_SCROLL_NEXT\r
+ END\r
+ POPUP "heksedit.rc:115"\r
+ BEGIN\r
+ MENUITEM "heksedit.rc:117", IDM_VIEW_SETTINGS\r
+ POPUP "heksedit.rc:118"\r
+ BEGIN\r
+ MENUITEM "heksedit.rc:120", IDM_TEXT_COLOR\r
+ MENUITEM "heksedit.rc:121", IDM_BK_COLOR\r
+ MENUITEM "heksedit.rc:122", IDM_SEP_COLOR\r
+ MENUITEM "heksedit.rc:123", \r
+ IDM_SELTEXT_COLOR\r
+ MENUITEM "heksedit.rc:125", \r
+ IDM_SELBACK_COLOR\r
+ MENUITEM "heksedit.rc:127", IDM_BMK_COLOR\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "heksedit.rc:129", \r
+ IDM_RESET_COLORS\r
+ MENUITEM "heksedit.rc:131", \r
+ IDM_ADOPT_COLOURS\r
+ END\r
+ MENUITEM "heksedit.rc:134", IDM_CHARACTER_SET\r
+ MENUITEM "heksedit.rc:135", IDM_BINARYMODE\r
+ MENUITEM "heksedit.rc:136", IDM_OLE_DRAG_DROP\r
+ MENUITEM "heksedit.rc:137", IDM_MAKE_BACKUPS, CHECKED\r
+ END\r
+ POPUP "heksedit.rc:139"\r
+ BEGIN\r
+ MENUITEM "heksedit.rc:141", IDM_CONTEXT, CHECKED\r
+ MENUITEM "heksedit.rc:142", IDM_UNKNOWN, CHECKED\r
+ MENUITEM "heksedit.rc:143", IDM_DEFAULT, CHECKED\r
+ MENUITEM "heksedit.rc:144", IDM_SAVEINI, CHECKED\r
+ MENUITEM "heksedit.rc:145", IDM_CHANGEINST\r
+ MENUITEM "heksedit.rc:146", IDM_REMOVE\r
+ MENUITEM "heksedit.rc:147", IDM_UPGRADE\r
+ MENUITEM "heksedit.rc:148", IDM_SHORTCUTS\r
+ END\r
+ POPUP "heksedit.rc:150"\r
+ BEGIN\r
+ MENUITEM "heksedit.rc:152", IDM_ADDBOOKMARK\r
+ MENUITEM "heksedit.rc:153", IDM_REMOVE_BKM\r
+ MENUITEM "heksedit.rc:154", IDM_CLEARALL_BMK\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "heksedit.rc:156", IDM_BOOKMARK1\r
+ MENUITEM "heksedit.rc:157", IDM_BOOKMARK2\r
+ MENUITEM "heksedit.rc:158", IDM_BOOKMARK3\r
+ MENUITEM "heksedit.rc:159", IDM_BOOKMARK4\r
+ MENUITEM "heksedit.rc:160", IDM_BOOKMARK5\r
+ MENUITEM "heksedit.rc:161", IDM_BOOKMARK6\r
+ MENUITEM "heksedit.rc:162", IDM_BOOKMARK7\r
+ MENUITEM "heksedit.rc:163", IDM_BOOKMARK8\r
+ MENUITEM "heksedit.rc:164", IDM_BOOKMARK9\r
+ END\r
+ POPUP "heksedit.rc:166"\r
+ BEGIN\r
+ MENUITEM "heksedit.rc:168", ID_MISC_GOTO_DLL_EXPORTS\r
+ MENUITEM "heksedit.rc:169", ID_MISC_GOTO_DLL_IMPORTS\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "heksedit.rc:171", ID_MISC_ENCODEDECODE\r
+ END\r
+ POPUP "heksedit.rc:173"\r
+ BEGIN\r
+ MENUITEM "heksedit.rc:175", IDM_HELP_TOPICS\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "heksedit.rc:177", IDM_ABOUT\r
+ END\r
+END\r
+\r
+IDR_CONTEXTMENU MENU \r
+BEGIN\r
+ POPUP "0"\r
+ BEGIN\r
+ MENUITEM "heksedit.rc:185", IDM_EDIT_CUT\r
+ MENUITEM "heksedit.rc:186", IDM_EDIT_COPY\r
+ MENUITEM "heksedit.rc:187", IDM_EDIT_PASTE\r
+ MENUITEM "heksedit.rc:188", IDA_DELETEKEY\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "heksedit.rc:190", IDM_FIND\r
+ MENUITEM "heksedit.rc:191", IDM_REPLACE\r
+ MENUITEM "heksedit.rc:192", IDM_FINDNEXT\r
+ MENUITEM "heksedit.rc:193", IDM_FINDPREV\r
+ MENUITEM "heksedit.rc:194", IDM_GO_TO\r
+ END\r
+ POPUP "heksedit.rc:196"\r
+ BEGIN\r
+ MENUITEM "heksedit.rc:198", ID_DISK_GOTOFIRSTTRACK\r
+ MENUITEM "heksedit.rc:199", ID_DISK_GOTONEXTTRACK\r
+ MENUITEM "heksedit.rc:200", ID_DISK_GOTOPREVIOUSTRACK\r
+ MENUITEM "heksedit.rc:201", ID_DISK_GOTOLASTTRACK\r
+ MENUITEM SEPARATOR\r
+ MENUITEM "heksedit.rc:203", ID_DISK_GOTOTRACK\r
+ END\r
+END\r
+\r
+\r
+#ifdef APSTUDIO_INVOKED\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// TEXTINCLUDE\r
+//\r
+\r
+1 TEXTINCLUDE \r
+BEGIN\r
+ "resource.h\0"\r
+END\r
+\r
+2 TEXTINCLUDE \r
+BEGIN\r
+ "#include ""winres.h""\r\n"\r
+ "\0"\r
+END\r
+\r
+3 TEXTINCLUDE \r
+BEGIN\r
+ "#include ""version.rc""\r\n"\r
+ "\0"\r
+END\r
+\r
+#endif // APSTUDIO_INVOKED\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Accelerator\r
+//\r
+\r
+IDR_ACCELERATOR1 ACCELERATORS \r
+BEGIN\r
+ "A", IDM_SELECT_ALL, VIRTKEY, CONTROL, NOINVERT\r
+ "A", IDM_ADOPT_COLOURS, VIRTKEY, SHIFT, CONTROL, \r
+ NOINVERT\r
+ "B", IDM_EDIT_MANIPULATEBITS, VIRTKEY, CONTROL, NOINVERT\r
+ "B", IDM_BMK_COLOR, VIRTKEY, SHIFT, CONTROL, \r
+ NOINVERT\r
+ "C", IDM_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT\r
+ "D", IDM_EDIT_ENTERDECIMALVALUE, VIRTKEY, CONTROL, NOINVERT\r
+ "D", IDM_DELETEFILE, VIRTKEY, SHIFT, CONTROL, \r
+ NOINVERT\r
+ "E", IDM_SELECT_BLOCK, VIRTKEY, CONTROL, NOINVERT\r
+ "F", IDM_FIND, VIRTKEY, CONTROL, NOINVERT\r
+ "F", IDM_FILL_WITH, VIRTKEY, SHIFT, CONTROL, \r
+ NOINVERT\r
+ "G", IDM_GO_TO, VIRTKEY, CONTROL, NOINVERT\r
+ "H", IDM_REPLACE, VIRTKEY, CONTROL, NOINVERT\r
+ "H", IDM_OPEN_HEXDUMP, VIRTKEY, SHIFT, CONTROL, \r
+ NOINVERT\r
+ "I", IDM_VIEW_SETTINGS, VIRTKEY, CONTROL, NOINVERT\r
+ "I", IDM_INSERTFILE, VIRTKEY, SHIFT, CONTROL, \r
+ NOINVERT\r
+ "J", IDM_SAVE_AS, VIRTKEY, CONTROL, NOINVERT\r
+ "K", IDM_BK_COLOR, VIRTKEY, CONTROL, NOINVERT\r
+ "K", IDM_SELBACK_COLOR, VIRTKEY, SHIFT, CONTROL, \r
+ NOINVERT\r
+ "L", IDM_READFLOAT, VIRTKEY, CONTROL, NOINVERT\r
+ "M", IDM_COMPARE, VIRTKEY, CONTROL, NOINVERT\r
+ "M", IDM_EDIT_MOVE_COPY, VIRTKEY, CONTROL, ALT, NOINVERT\r
+ "M", IDM_MAKE_BACKUPS, VIRTKEY, SHIFT, CONTROL, \r
+ NOINVERT\r
+ "N", IDM_NEW, VIRTKEY, CONTROL, NOINVERT\r
+ "O", IDM_OPEN, VIRTKEY, CONTROL, NOINVERT\r
+ "O", IDM_OLE_DRAG_DROP, VIRTKEY, CONTROL, ALT, NOINVERT\r
+ "O", IDM_SAVESELAS, VIRTKEY, SHIFT, CONTROL, \r
+ NOINVERT\r
+ "P", IDM_EDIT_APPEND, VIRTKEY, CONTROL, NOINVERT\r
+ "P", IDM_PARTIAL_OPEN, VIRTKEY, ALT, NOINVERT\r
+ "Q", IDM_SEP_COLOR, VIRTKEY, CONTROL, NOINVERT\r
+ "R", IDM_CHARACTER_SET, VIRTKEY, CONTROL, NOINVERT\r
+ "R", IDM_EDIT_READONLYMODE, VIRTKEY, ALT, NOINVERT\r
+ "R", IDM_EDIT_REVERSE, VIRTKEY, CONTROL, ALT, NOINVERT\r
+ "R", IDM_REVERT, VIRTKEY, SHIFT, CONTROL, \r
+ NOINVERT\r
+ "S", IDM_SAVE, VIRTKEY, CONTROL, NOINVERT\r
+ "S", IDM_RESET_COLORS, VIRTKEY, SHIFT, CONTROL, \r
+ NOINVERT\r
+ "T", IDM_TEXT_COLOR, VIRTKEY, CONTROL, NOINVERT\r
+ "T", IDM_APPLYTEMPLATE, VIRTKEY, ALT, NOINVERT\r
+ "T", IDM_SELTEXT_COLOR, VIRTKEY, SHIFT, CONTROL, \r
+ NOINVERT\r
+ "V", IDM_EDIT_PASTE, VIRTKEY, CONTROL, NOINVERT\r
+ "V", IDM_PASTE_WITH_DLG, VIRTKEY, SHIFT, CONTROL, \r
+ NOINVERT\r
+ VK_BACK, IDA_BACKSPACE, VIRTKEY, NOINVERT\r
+ VK_DELETE, IDA_DELETEKEY, VIRTKEY, NOINVERT\r
+ VK_DOWN, IDM_SCROLL_DOWN, VIRTKEY, CONTROL, NOINVERT\r
+ VK_F1, IDM_HELP_TOPICS, VIRTKEY, NOINVERT\r
+ VK_F2, IDM_INTERNALSTATUS, VIRTKEY, NOINVERT\r
+ VK_F3, IDM_FINDPREV, VIRTKEY, NOINVERT\r
+ VK_F4, IDM_FINDNEXT, VIRTKEY, NOINVERT\r
+ VK_F5, IDM_OPEN_TEXT, VIRTKEY, NOINVERT\r
+ VK_INSERT, IDA_INSERTMODETOGGLE, VIRTKEY, NOINVERT\r
+ VK_LEFT, IDM_SCROLL_LEFT, VIRTKEY, CONTROL, NOINVERT\r
+ VK_NEXT, IDM_SCROLL_NEXT, VIRTKEY, CONTROL, NOINVERT\r
+ VK_NEXT, ID_DISK_GOTONEXTTRACK, VIRTKEY, SHIFT, CONTROL, \r
+ NOINVERT\r
+ VK_PRIOR, IDM_SCROLL_PRIOR, VIRTKEY, CONTROL, NOINVERT\r
+ VK_PRIOR, ID_DISK_GOTOPREVIOUSTRACK, VIRTKEY, SHIFT, CONTROL, \r
+ NOINVERT\r
+ VK_RETURN, IDM_PROPERTIES, VIRTKEY, ALT, NOINVERT\r
+ VK_RIGHT, IDM_SCROLL_RIGHT, VIRTKEY, CONTROL, NOINVERT\r
+ VK_UP, IDM_SCROLL_UP, VIRTKEY, CONTROL, NOINVERT\r
+ "W", IDM_ADDBOOKMARK, VIRTKEY, CONTROL, NOINVERT\r
+ "W", IDM_REMOVE_BKM, VIRTKEY, ALT, NOINVERT\r
+ "W", IDM_CLEARALL_BMK, VIRTKEY, SHIFT, CONTROL, \r
+ NOINVERT\r
+ "X", IDM_EDIT_CUT, VIRTKEY, CONTROL, NOINVERT\r
+ "X", IDM_NEW, VIRTKEY, SHIFT, CONTROL, \r
+ NOINVERT\r
+ "Y", IDM_BINARYMODE, VIRTKEY, CONTROL, NOINVERT\r
+END\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Dialog\r
+//\r
+\r
+IDD_GOTODIALOG DIALOGEX 0, 0, 244, 66\r
+STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | \r
+ WS_SYSMENU\r
+CAPTION "heksedit.rc:332"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:335",\r
+ IDC_STATIC,7,10,139,8\r
+ LTEXT "heksedit.rc:337",\r
+ IDC_STATIC,7,19,142,8\r
+ LTEXT "heksedit.rc:339",IDC_STATIC,7,34,40,8\r
+ EDITTEXT IDC_EDIT1,7,44,149,13,ES_AUTOHSCROLL\r
+ DEFPUSHBUTTON "heksedit.rc:341",IDOK,187,20,50,14\r
+ PUSHBUTTON "heksedit.rc:342",IDCANCEL,187,38,50,14\r
+END\r
+\r
+IDD_FINDDIALOG DIALOGEX 0, 0, 279, 138\r
+STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | \r
+ WS_SYSMENU\r
+CAPTION "heksedit.rc:348"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:351",\r
+ IDC_STATIC,7,7,265,16\r
+ EDITTEXT IDC_EDIT1,7,26,265,57,ES_MULTILINE | ES_AUTOVSCROLL\r
+ CONTROL "heksedit.rc:354",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,7,87,53,10\r
+ CONTROL "heksedit.rc:356",IDC_CHECK4,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,7,100,49,8\r
+ GROUPBOX "heksedit.rc:358",IDC_STATIC,62,87,61,36\r
+ CONTROL "heksedit.rc:359",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | \r
+ WS_TABSTOP,71,98,25,10\r
+ CONTROL "heksedit.rc:361",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,71,111,35,\r
+ 10\r
+ DEFPUSHBUTTON "heksedit.rc:363",IDOK,222,100,50,14,WS_GROUP\r
+ PUSHBUTTON "heksedit.rc:364",IDCANCEL,222,117,50,14\r
+END\r
+\r
+IDD_ABOUTDIALOG DIALOGEX 0, 0, 212, 191\r
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | \r
+ WS_CAPTION\r
+CAPTION "heksedit.rc:370"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ DEFPUSHBUTTON "heksedit.rc:373",IDOK,80,171,50,14\r
+ ICON 32512,IDC_APPICON,7,9,20,20\r
+ LTEXT "",IDC_STATIC1,37,7,167,66\r
+ LTEXT "heksedit.rc:376",IDC_STATIC,5,71,20,8\r
+ EDITTEXT IDC_EDIT1,6,81,198,25,ES_MULTILINE | ES_AUTOHSCROLL | \r
+ ES_READONLY\r
+ EDITTEXT IDC_EDIT2,22,121,167,12,ES_AUTOHSCROLL | ES_READONLY\r
+ GROUPBOX "heksedit.rc:380",IDC_STATIC,6,111,198,52\r
+ PUSHBUTTON "heksedit.rc:381",IDC_BUTTON1,\r
+ 30,140,150,14\r
+END\r
+\r
+IDD_HEXDUMPDIALOG DIALOGEX 0, 0, 163, 161\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:387"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:390",IDC_STATIC,7,\r
+ 7,128,8\r
+ LTEXT "heksedit.rc:392",IDC_STATIC,7,17,72,8\r
+ EDITTEXT IDC_EDIT1,6,25,149,12,ES_AUTOHSCROLL\r
+ LTEXT "heksedit.rc:394",IDC_STATIC,7,40,\r
+ 111,8\r
+ EDITTEXT IDC_EDIT2,7,49,149,13,ES_AUTOHSCROLL\r
+ GROUPBOX "heksedit.rc:397",IDC_STATIC,7,69,88,40,WS_GROUP\r
+ CONTROL "heksedit.rc:398",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON | \r
+ WS_GROUP | WS_TABSTOP,14,80,55,10\r
+ CONTROL "heksedit.rc:400",IDC_RADIO2,"Button",\r
+ BS_AUTORADIOBUTTON | WS_TABSTOP,14,92,75,10\r
+ GROUPBOX "heksedit.rc:402",IDC_STATIC,7,110,103,45,WS_GROUP\r
+ CONTROL "heksedit.rc:403",IDC_EXPORTDISPLAY,"Button",\r
+ BS_AUTORADIOBUTTON | WS_GROUP,15,120,78,10\r
+ CONTROL "heksedit.rc:405",IDC_EXPORTDIGITS,"Button",\r
+ BS_AUTORADIOBUTTON,15,130,89,10\r
+ CONTROL "heksedit.rc:407",IDC_EXPORTRTF,"Button",\r
+ BS_AUTORADIOBUTTON,15,140,81,10\r
+ DEFPUSHBUTTON "heksedit.rc:409",IDOK,105,70,50,14,WS_GROUP\r
+ PUSHBUTTON "heksedit.rc:410",IDCANCEL,105,90,50,14\r
+END\r
+\r
+IDD_DECIMALDIALOG DIALOGEX 0, 0, 204, 111\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:415"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:418",IDC_STATIC,7,7,65,8\r
+ EDITTEXT IDC_EDIT1,7,16,97,12,ES_AUTOHSCROLL\r
+ LTEXT "heksedit.rc:420",IDC_STATIC,7,30,\r
+ 108,8\r
+ EDITTEXT IDC_EDIT2,7,38,98,12,ES_AUTOHSCROLL\r
+ LTEXT "heksedit.rc:423",IDC_STATIC,7,54,54,8\r
+ EDITTEXT IDC_EDIT3,7,62,97,12,ES_AUTOHSCROLL\r
+ GROUPBOX "heksedit.rc:425",IDC_STATIC,7,79,190,25\r
+ CONTROL "heksedit.rc:426",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON | \r
+ WS_GROUP,11,88,49,10\r
+ CONTROL "heksedit.rc:428",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,\r
+ 63,88,57,10\r
+ CONTROL "heksedit.rc:430",IDC_RADIO3,"Button",\r
+ BS_AUTORADIOBUTTON,122,88,71,10\r
+ DEFPUSHBUTTON "heksedit.rc:432",IDOK,147,39,50,14,WS_GROUP\r
+ PUSHBUTTON "heksedit.rc:433",IDCANCEL,147,56,50,14\r
+END\r
+\r
+IDD_PASTEDIALOG DIALOGEX 0, 0, 291, 145\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:438"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:441",IDC_STATIC,7,7,76,8\r
+ EDITTEXT IDC_EDIT1,7,18,277,65,ES_MULTILINE | WS_VSCROLL,\r
+ WS_EX_TRANSPARENT\r
+ GROUPBOX "heksedit.rc:444",IDC_STATIC,7,86,64,40\r
+ CONTROL "heksedit.rc:445",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON | \r
+ WS_GROUP | WS_TABSTOP,14,98,46,10\r
+ CONTROL "heksedit.rc:447",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON | \r
+ WS_TABSTOP,14,109,33,10\r
+ LTEXT "heksedit.rc:449",IDC_STATIC,80,86,89,8\r
+ EDITTEXT IDC_EDIT2,79,96,67,12,ES_AUTOHSCROLL\r
+ CONTROL "heksedit.rc:451",IDC_CHECK1,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,80,115,122,10\r
+ LTEXT "heksedit.rc:453",\r
+ IDC_STATIC,7,129,160,8\r
+ EDITTEXT IDC_EDIT3,168,126,60,12,ES_AUTOHSCROLL\r
+ DEFPUSHBUTTON "heksedit.rc:456",IDOK,234,96,50,14\r
+ PUSHBUTTON "heksedit.rc:457",IDCANCEL,234,112,50,14\r
+END\r
+\r
+IDD_CUTDIALOG DIALOGEX 0, 0, 169, 159\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:462"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:465",\r
+ IDC_STATIC,7,7,157,8\r
+ EDITTEXT IDC_EDIT1,7,16,136,12,ES_AUTOHSCROLL\r
+ GROUPBOX "heksedit.rc:468",IDC_STATIC,7,33,155,81\r
+ CONTROL "heksedit.rc:469",IDC_RADIO1,"Button",\r
+ BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,15,48,110,10\r
+ CONTROL "heksedit.rc:471",IDC_RADIO2,"Button",\r
+ BS_AUTORADIOBUTTON | WS_TABSTOP,15,80,89,10\r
+ EDITTEXT IDC_EDIT2,16,59,136,12,ES_AUTOHSCROLL | WS_GROUP\r
+ EDITTEXT IDC_EDIT3,15,91,136,12,ES_AUTOHSCROLL | WS_DISABLED | \r
+ WS_GROUP\r
+ CONTROL "heksedit.rc:476",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | \r
+ WS_TABSTOP,7,120,65,10\r
+ DEFPUSHBUTTON "heksedit.rc:478",IDOK,112,122,50,14\r
+ PUSHBUTTON "heksedit.rc:479",IDCANCEL,112,138,50,14\r
+END\r
+\r
+IDD_COPYDIALOG DIALOGEX 0, 0, 158, 154\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:484"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:487",IDC_STATIC,7,7,86,8\r
+ LTEXT "heksedit.rc:488",IDC_STATIC,7,20,72,8\r
+ EDITTEXT IDC_EDIT1,7,29,130,13,ES_AUTOHSCROLL\r
+ GROUPBOX "heksedit.rc:490",IDC_STATIC,7,51,144,73\r
+ CONTROL "heksedit.rc:491",IDC_RADIO1,"Button",\r
+ BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,14,63,115,10\r
+ CONTROL "heksedit.rc:493",IDC_RADIO2,"Button",\r
+ BS_AUTORADIOBUTTON | WS_TABSTOP,13,93,95,10\r
+ EDITTEXT IDC_EDIT2,14,73,130,13,ES_AUTOHSCROLL | WS_GROUP\r
+ EDITTEXT IDC_EDIT3,14,103,130,13,ES_AUTOHSCROLL | WS_DISABLED | \r
+ WS_GROUP\r
+ DEFPUSHBUTTON "heksedit.rc:498",IDOK,25,131,50,14\r
+ PUSHBUTTON "heksedit.rc:499",IDCANCEL,82,131,50,14\r
+END\r
+\r
+IDD_VIEWSETTINGSDIALOG DIALOGEX 0, 0, 229, 167\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:504"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:507",IDC_STATIC,7,7,\r
+ 110,8\r
+ EDITTEXT IDC_EDIT1,7,16,68,12,ES_AUTOHSCROLL\r
+ CONTROL "heksedit.rc:510",\r
+ IDC_CHECK1,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | \r
+ WS_TABSTOP,7,31,214,19\r
+ LTEXT "heksedit.rc:513",\r
+ IDC_STATIC,7,51,151,8\r
+ EDITTEXT IDC_EDIT2,7,61,68,12,ES_AUTOHSCROLL\r
+ CONTROL "heksedit.rc:516",IDC_CHECK2,\r
+ "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,80,\r
+ 61,140,12\r
+ GROUPBOX "heksedit.rc:519",IDC_STATIC,7,76,\r
+ 128,25,WS_GROUP\r
+ CONTROL "heksedit.rc:521",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON | \r
+ WS_GROUP | WS_TABSTOP,14,86,45,10\r
+ CONTROL "heksedit.rc:523",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,65,86,37,\r
+ 10\r
+ CONTROL "heksedit.rc:525",IDC_CHECK5,"Button",\r
+ BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,106,128,10\r
+ LTEXT "heksedit.rc:527",\r
+ IDC_STATIC,7,122,133,8\r
+ EDITTEXT IDC_EDIT3,7,132,214,13,ES_AUTOHSCROLL\r
+ DEFPUSHBUTTON "heksedit.rc:530",IDOK,171,80,50,14\r
+ PUSHBUTTON "heksedit.rc:531",IDCANCEL,171,97,50,14\r
+END\r
+\r
+IDD_APPENDDIALOG DIALOGEX 0, 0, 192, 46\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:536"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:539",IDC_STATIC,7,7,\r
+ 121,8\r
+ EDITTEXT IDC_EDIT1,7,17,120,12,ES_AUTOHSCROLL | ES_NUMBER\r
+ DEFPUSHBUTTON "heksedit.rc:542",IDOK,135,7,50,14\r
+ PUSHBUTTON "heksedit.rc:543",IDCANCEL,135,24,50,14\r
+END\r
+\r
+IDD_MANIPBITSDIALOG DIALOGEX 0, 0, 257, 84\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:548"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:551",IDC_STATIC1,7,7,243,8\r
+ CONTROL "heksedit.rc:552",IDC_CHECK8,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,\r
+ 7,18,30,10,WS_EX_STATICEDGE\r
+ CONTROL "heksedit.rc:554",IDC_CHECK7,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,\r
+ 38,18,30,10,WS_EX_STATICEDGE\r
+ CONTROL "heksedit.rc:556",IDC_CHECK6,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,\r
+ 69,18,30,10,WS_EX_STATICEDGE\r
+ CONTROL "heksedit.rc:558",IDC_CHECK5,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,\r
+ 100,18,30,10,WS_EX_STATICEDGE\r
+ CONTROL "heksedit.rc:560",IDC_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,\r
+ 130,18,30,10,WS_EX_STATICEDGE\r
+ CONTROL "heksedit.rc:562",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,\r
+ 160,18,30,10,WS_EX_STATICEDGE\r
+ CONTROL "heksedit.rc:564",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,\r
+ 190,18,30,10,WS_EX_STATICEDGE\r
+ CONTROL "heksedit.rc:566",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,\r
+ 220,18,30,10,WS_EX_STATICEDGE\r
+ LTEXT "heksedit.rc:568",IDC_STATIC,15,29,17,8\r
+ LTEXT "heksedit.rc:569",IDC_STATIC,48,29,13,8\r
+ LTEXT "heksedit.rc:570",IDC_STATIC,77,29,13,8\r
+ LTEXT "heksedit.rc:571",IDC_STATIC,108,29,13,8\r
+ LTEXT "heksedit.rc:572",IDC_STATIC,140,29,9,8\r
+ LTEXT "heksedit.rc:573",IDC_STATIC,171,29,9,8\r
+ LTEXT "heksedit.rc:574",IDC_STATIC,202,29,9,8\r
+ LTEXT "heksedit.rc:575",IDC_STATIC,231,29,9,8\r
+ LTEXT "heksedit.rc:576",IDC_STATIC2,7,43,243,8\r
+ DEFPUSHBUTTON "heksedit.rc:577",IDOK,75,63,50,14\r
+ PUSHBUTTON "heksedit.rc:578",IDCANCEL,132,63,50,14\r
+END\r
+\r
+IDD_CHARACTERSETDIALOG DIALOGEX 0, 0, 172, 81\r
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | \r
+ WS_SYSMENU\r
+CAPTION "heksedit.rc:584"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ GROUPBOX "heksedit.rc:587",IDC_STATIC,7,7,101,40\r
+ CONTROL "heksedit.rc:588",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON | WS_GROUP,\r
+ 25,19,33,10\r
+ CONTROL "heksedit.rc:590",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,25,32,32,10\r
+ LTEXT "heksedit.rc:591",IDC_STATIC,7,53,101,8\r
+ EDITTEXT IDC_EDIT1,7,62,65,12,ES_AUTOHSCROLL | ES_NUMBER\r
+ DEFPUSHBUTTON "heksedit.rc:593",IDOK,115,24,50,14\r
+ PUSHBUTTON "heksedit.rc:594",IDCANCEL,115,41,50,14\r
+END\r
+\r
+IDD_CHOOSEDIFFDIALOG DIALOGEX 0, 0, 258, 231\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:599"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:602",IDC_STATIC2,7,7,244,8\r
+ LTEXT "heksedit.rc:603",IDC_STATIC1,7,18,244,8\r
+ LISTBOX IDC_LIST1,7,29,244,178,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | \r
+ WS_TABSTOP\r
+ DEFPUSHBUTTON "heksedit.rc:606",IDOK,7,210,50,14\r
+ PUSHBUTTON "heksedit.rc:607",IDCANCEL,74,210,50,14\r
+ PUSHBUTTON "heksedit.rc:608",IDCOPY,187,210,64,14\r
+END\r
+\r
+IDD_BINARYMODEDIALOG DIALOGEX 0, 0, 183, 58\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:613"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ GROUPBOX "heksedit.rc:616",IDC_STATIC,7,7,104,44\r
+ CONTROL "heksedit.rc:617",IDC_RADIO1,"Button",\r
+ BS_AUTORADIOBUTTON | WS_GROUP,15,20,73,10\r
+ CONTROL "heksedit.rc:619",IDC_RADIO2,"Button",\r
+ BS_AUTORADIOBUTTON,15,34,83,10\r
+ DEFPUSHBUTTON "heksedit.rc:621",IDOK,126,12,50,14,WS_GROUP\r
+ PUSHBUTTON "heksedit.rc:622",IDCANCEL,126,29,50,14\r
+END\r
+\r
+IDD_SELECT_BLOCK_DIALOG DIALOGEX 0, 0, 207, 68\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:627"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:630",\r
+ IDC_STATIC,7,7,134,8\r
+ EDITTEXT IDC_EDIT1,7,17,134,12,ES_AUTOHSCROLL\r
+ LTEXT "heksedit.rc:633",\r
+ IDC_STATIC2,7,36,133,8\r
+ EDITTEXT IDC_EDIT2,7,48,133,13,ES_AUTOHSCROLL\r
+ DEFPUSHBUTTON "heksedit.rc:636",IDOK,150,18,50,14\r
+ PUSHBUTTON "heksedit.rc:637",IDCANCEL,150,35,50,14\r
+END\r
+\r
+IDD_ADDBMK_DIALOG DIALOGEX 0, 0, 193, 65\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:642"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:645",IDC_STATIC,7,7,\r
+ 114,8\r
+ EDITTEXT IDC_EDIT1,7,18,118,12,ES_AUTOHSCROLL\r
+ LTEXT "heksedit.rc:648",IDC_STATIC,7,36,63,8\r
+ EDITTEXT IDC_EDIT2,7,46,118,12,ES_AUTOHSCROLL\r
+ DEFPUSHBUTTON "heksedit.rc:650",IDOK,136,16,50,14\r
+ PUSHBUTTON "heksedit.rc:651",IDCANCEL,136,33,50,14\r
+END\r
+\r
+IDD_REMOVEBMK_DIALOG DIALOGEX 0, 0, 209, 167\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:656"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:659",IDC_STATIC,7,7,84,8\r
+ LISTBOX IDC_LIST1,7,17,195,123,LBS_SORT | LBS_NOINTEGRALHEIGHT | \r
+ WS_VSCROLL | WS_TABSTOP\r
+ DEFPUSHBUTTON "heksedit.rc:662",IDOK,51,146,50,14\r
+ PUSHBUTTON "heksedit.rc:663",IDCANCEL,109,146,50,14\r
+END\r
+\r
+IDD_OPEN_PARTIAL_DIALOG DIALOGEX 0, 0, 221, 135\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:668"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ GROUPBOX "heksedit.rc:671",IDC_STATIC,7,7,207,60\r
+ CONTROL "heksedit.rc:672",\r
+ IDC_RADIO1,"Button",BS_AUTORADIOBUTTON | WS_GROUP,17,21,\r
+ 179,10\r
+ CONTROL "heksedit.rc:675",IDC_RADIO2,"Button",\r
+ BS_AUTORADIOBUTTON,17,50,64,10\r
+ EDITTEXT IDC_EDIT1,28,31,134,12,ES_AUTOHSCROLL | WS_GROUP\r
+ LTEXT "heksedit.rc:678",IDC_STATIC2,7,73,207,8\r
+ EDITTEXT IDC_EDIT2,7,82,135,13,ES_AUTOHSCROLL\r
+ CONTROL "heksedit.rc:680",\r
+ IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,100,\r
+ 206,10\r
+ DEFPUSHBUTTON "heksedit.rc:683",IDOK,55,115,50,14\r
+ PUSHBUTTON "heksedit.rc:684",IDCANCEL,110,115,50,14\r
+END\r
+\r
+IDD_FASTPASTE_DIALOG DIALOGEX 0, 0, 267, 146\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:689"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ GROUPBOX "heksedit.rc:692",IDC_STATIC,7,7,64,35\r
+ CONTROL "heksedit.rc:693",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON | \r
+ WS_GROUP | WS_TABSTOP,14,18,46,10\r
+ CONTROL "heksedit.rc:695",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON | \r
+ WS_TABSTOP,14,30,33,10\r
+ LTEXT "heksedit.rc:697",IDC_STATIC,80,7,89,8\r
+ EDITTEXT IDC_EDIT2,79,17,67,12,ES_AUTOHSCROLL\r
+ CONTROL "heksedit.rc:699",IDC_CHECK1,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,80,36,122,10\r
+ LTEXT "heksedit.rc:701",\r
+ IDC_STATIC,7,49,156,12,SS_CENTERIMAGE\r
+ EDITTEXT IDC_EDIT3,170,49,35,12,ES_AUTOHSCROLL\r
+ LTEXT "heksedit.rc:704",IDC_STATIC,5,65,75,8\r
+ LISTBOX IDC_LIST,5,75,255,35,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | \r
+ WS_HSCROLL | WS_TABSTOP\r
+ LTEXT "heksedit.rc:707",\r
+ IDC_STATIC,5,115,255,25\r
+ DEFPUSHBUTTON "heksedit.rc:709",IDOK,210,11,50,14\r
+ PUSHBUTTON "heksedit.rc:710",IDCANCEL,210,28,50,14\r
+ PUSHBUTTON "heksedit.rc:711",IDC_REFRESH,210,45,50,15\r
+END\r
+\r
+IDD_TMPL_RESULT_DIALOG DIALOGEX 0, 0, 304, 175\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:716"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:719",IDC_STATIC,7,7,96,8\r
+ EDITTEXT IDC_EDIT1,7,17,290,132,ES_MULTILINE | ES_AUTOVSCROLL | \r
+ ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL | WS_HSCROLL\r
+ DEFPUSHBUTTON "heksedit.rc:722",IDOK,99,154,50,14\r
+ PUSHBUTTON "heksedit.rc:723",IDCANCEL,154,154,50,14\r
+END\r
+\r
+IDD_REPLACEDIALOG DIALOGEX 0, 0, 208, 226\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:728"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:731",IDC_STATIC,7,7,34,8\r
+ EDITTEXT IDC_TO_REPLACE_EDIT,7,16,194,62,ES_MULTILINE | \r
+ ES_AUTOHSCROLL | WS_VSCROLL\r
+ PUSHBUTTON "heksedit.rc:734",IDC_FINDNEXT_BUTTON,7,81,39,14\r
+ PUSHBUTTON "heksedit.rc:735",IDC_FINDPREVIOUS_BUTTON,51,81,54,14\r
+ CONTROL "heksedit.rc:736",IDC_MATCHCASE_CHECK,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,146,81,53,10\r
+ LTEXT "heksedit.rc:738",IDC_STATIC,7,98,44,8\r
+ EDITTEXT IDC_REPLACEWITH_EDIT,7,108,194,58,ES_AUTOHSCROLL\r
+ GROUPBOX "heksedit.rc:740",IDC_STATIC,7,169,105,50\r
+ PUSHBUTTON "heksedit.rc:741",IDC_FOLLOCC_BUTTON,13,180,90,\r
+ 14\r
+ PUSHBUTTON "heksedit.rc:743",IDC_PREVOCC_BUTTON,14,196,89,\r
+ 14\r
+ CONTROL "heksedit.rc:745",IDC_USETRANSLATION_CHECK,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,126,172,75,10\r
+ PUSHBUTTON "heksedit.rc:747",IDC_REPLACE_BUTTON,148,186,53,14\r
+ PUSHBUTTON "heksedit.rc:748",IDCANCEL,147,205,54,14\r
+END\r
+\r
+IDD_FILL_WITH DIALOGEX 0, 0, 382, 103\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:753"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:756",IDC_STATIC,5,5,56,8\r
+ COMBOBOX IDC_TYPE,65,5,35,35,CBS_DROPDOWNLIST | WS_VSCROLL | \r
+ WS_TABSTOP\r
+ LTEXT "heksedit.rc:759",IDC_FILESTAT,105,5,14,12\r
+ EDITTEXT IDC_FN,120,5,210,12,ES_AUTOHSCROLL | ES_READONLY\r
+ PUSHBUTTON "heksedit.rc:761",IDC_BROWSE,335,5,40,15\r
+ LTEXT "heksedit.rc:762",IDC_HEXSTAT,5,15,40,8\r
+ EDITTEXT IDC_HEX,5,25,370,12,ES_AUTOHSCROLL\r
+ GROUPBOX "heksedit.rc:764",IDC_STATIC,5,38,100,25\r
+ CONTROL "heksedit.rc:765",IDC_EQ,"Button",BS_AUTORADIOBUTTON | BS_LEFT | \r
+ BS_VCENTER | WS_GROUP,10,48,20,10\r
+ CONTROL "heksedit.rc:767",IDC_OR,"Button",BS_AUTORADIOBUTTON | BS_LEFT | \r
+ BS_VCENTER,30,48,21,10\r
+ CONTROL "heksedit.rc:769",IDC_AND,"Button",BS_AUTORADIOBUTTON | BS_LEFT | \r
+ BS_VCENTER,50,48,24,10\r
+ CONTROL "heksedit.rc:771",IDC_XOR,"Button",BS_AUTORADIOBUTTON | BS_LEFT | \r
+ BS_VCENTER,75,48,24,10\r
+ DEFPUSHBUTTON "heksedit.rc:773",IDOK,165,45,50,15,WS_GROUP\r
+ PUSHBUTTON "heksedit.rc:774",IDCANCEL,250,45,50,15\r
+ LTEXT "heksedit.rc:775",IDC_STATIC,5,65,13,8\r
+ LTEXT "heksedit.rc:776",IDC_STATIC,5,73,54,8\r
+ EDITTEXT IDC_STS,5,84,55,12,ES_AUTOHSCROLL | ES_READONLY\r
+ LTEXT "heksedit.rc:778",IDC_STATIC,65,73,52,8\r
+ EDITTEXT IDC_ES,65,84,55,12,ES_AUTOHSCROLL | ES_READONLY\r
+ LTEXT "heksedit.rc:780",IDC_STATIC,125,73,52,8\r
+ EDITTEXT IDC_SS,125,84,55,12,ES_AUTOHSCROLL | ES_READONLY\r
+ LTEXT "heksedit.rc:782",IDC_STATIC,185,\r
+ 65,60,18\r
+ EDITTEXT IDC_SI,185,84,55,12,ES_AUTOHSCROLL | ES_READONLY\r
+ CTEXT "heksedit.rc:785",IDC_STATIC,255,65,50,\r
+ 15\r
+ EDITTEXT IDC_IFS,245,84,75,12,ES_AUTOHSCROLL | ES_READONLY\r
+ LTEXT "heksedit.rc:788",IDC_STATIC,330,73,35,8\r
+ EDITTEXT IDC_R,325,84,50,12,ES_AUTOHSCROLL | ES_READONLY\r
+END\r
+\r
+IDD_CHANGEINST DIALOGEX 0, 0, 247, 76\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:794"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:797",IDC_STATIC,5,5,105,\r
+ 15,SS_CENTERIMAGE\r
+ EDITTEXT IDC_EDIT1,150,5,25,15,ES_AUTOHSCROLL\r
+ CONTROL "heksedit.rc:800",IDC_LINST,"msctls_updown32",UDS_SETBUDDYINT | \r
+ UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,175,5,11,\r
+ 15\r
+ LTEXT "heksedit.rc:803",\r
+ IDC_STATIC,5,25,144,15,SS_CENTERIMAGE\r
+ EDITTEXT IDC_EDIT0,150,25,25,15,ES_AUTOHSCROLL\r
+ CONTROL "heksedit.rc:806",IDC_SINST,"msctls_updown32",UDS_SETBUDDYINT | \r
+ UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,175,25,\r
+ 11,15\r
+ DEFPUSHBUTTON "heksedit.rc:809",IDOK,190,5,50,15\r
+ PUSHBUTTON "heksedit.rc:810",IDCANCEL,190,25,50,15\r
+ LTEXT "heksedit.rc:811",\r
+ IDC_STATIC,5,45,235,25\r
+END\r
+\r
+IDD_ENCODE_DECODE_DIALOG DIALOGEX 0, 0, 236, 169\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:817"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:820",IDC_STATIC,4,4,172,8\r
+ LISTBOX IDC_LIST1,4,16,172,108,LBS_SORT | LBS_NOINTEGRALHEIGHT | \r
+ WS_VSCROLL | WS_TABSTOP\r
+ LTEXT "heksedit.rc:823",IDC_STATIC,4,128,36,8\r
+ EDITTEXT IDC_EDIT1,4,140,172,12,ES_AUTOHSCROLL\r
+ CONTROL "heksedit.rc:825",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON | \r
+ WS_GROUP,4,156,76,8\r
+ CONTROL "heksedit.rc:827",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,100,156,\r
+ 76,8\r
+ DEFPUSHBUTTON "heksedit.rc:829",IDOK,180,4,50,14,WS_GROUP\r
+ PUSHBUTTON "heksedit.rc:830",IDCANCEL,180,20,50,14\r
+END\r
+\r
+IDD_OPEN_DRIVE_DIALOG DIALOGEX 0, 0, 236, 133\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:835"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LISTBOX IDC_LIST1,4,4,172,124,LBS_SORT | LBS_NOINTEGRALHEIGHT | \r
+ WS_VSCROLL | WS_TABSTOP\r
+ DEFPUSHBUTTON "heksedit.rc:840",IDOK,180,4,50,14\r
+ PUSHBUTTON "heksedit.rc:841",IDCANCEL,180,20,50,14\r
+END\r
+\r
+IDD_GOTO_TRACK_DIALOG DIALOGEX 0, 0, 244, 133\r
+STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | \r
+ WS_SYSMENU\r
+CAPTION "heksedit.rc:847"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:850",-1,4,4,168,12\r
+ EDITTEXT IDC_EDIT3,4,20,172,80,ES_MULTILINE | ES_AUTOHSCROLL | \r
+ ES_READONLY\r
+ LTEXT "heksedit.rc:853",-1,4,104,38,8\r
+ EDITTEXT IDC_EDIT1,4,114,100,13,ES_AUTOHSCROLL\r
+ DEFPUSHBUTTON "heksedit.rc:855",IDOK,184,8,50,14\r
+ PUSHBUTTON "heksedit.rc:856",IDCANCEL,184,26,50,14\r
+END\r
+\r
+IDD_SHORTCUTS DIALOGEX 0, 0, 217, 166\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:861"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:864",IDC_STATIC,5,5,86,8\r
+ CONTROL "heksedit.rc:865",IDC_LIST,"SysListView32",LVS_REPORT | \r
+ LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_TABSTOP,5,15,\r
+ 105,120,WS_EX_CLIENTEDGE\r
+ PUSHBUTTON "heksedit.rc:868",\r
+ IDC_FIND_AND_FIX,5,140,205,20,BS_CENTER | BS_VCENTER | \r
+ BS_MULTILINE\r
+ LTEXT "heksedit.rc:871",IDC_STATIC,115,5,55,8\r
+ PUSHBUTTON "heksedit.rc:872",IDC_DESKTOP,115,15,40,15,BS_CENTER | \r
+ BS_VCENTER | BS_MULTILINE\r
+ PUSHBUTTON "heksedit.rc:874",IDC_START,160,15,50,15,BS_CENTER | \r
+ BS_VCENTER | BS_MULTILINE\r
+ PUSHBUTTON "heksedit.rc:876",IDC_SENDTO,115,35,40,15,BS_CENTER | \r
+ BS_VCENTER | BS_MULTILINE\r
+ PUSHBUTTON "heksedit.rc:878",IDC_PROGRAMS,160,35,50,15,BS_CENTER | \r
+ BS_VCENTER | BS_MULTILINE\r
+ LTEXT "heksedit.rc:880",IDC_STATIC,115,55,59,8\r
+ PUSHBUTTON "heksedit.rc:881",IDC_ADD,115,65,45,20\r
+ PUSHBUTTON "heksedit.rc:882",IDC_UPDATE,165,65,45,20,BS_CENTER | \r
+ BS_VCENTER | BS_MULTILINE\r
+ PUSHBUTTON "heksedit.rc:884",IDC_DELETE,115,90,45,20\r
+ PUSHBUTTON "heksedit.rc:885",IDC_MOVE,165,90,45,20,BS_CENTER | BS_VCENTER | \r
+ BS_MULTILINE\r
+ PUSHBUTTON "heksedit.rc:887",IDC_RELOAD,115,115,45,20\r
+ DEFPUSHBUTTON "heksedit.rc:888",IDCANCEL,165,115,45,20\r
+END\r
+\r
+IDD_UPGRADE DIALOGEX 0, 0, 377, 242\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:893"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:896",IDC_STATIC,5,5,36,8\r
+ CONTROL "heksedit.rc:897",IDC_VERS,"SysListView32",LVS_REPORT | \r
+ LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | \r
+ WS_TABSTOP,5,15,115,80,WS_EX_CLIENTEDGE\r
+ LTEXT "heksedit.rc:900",IDC_STATIC,125,5,40,8\r
+ CONTROL "heksedit.rc:901",IDC_INSTS,"SysListView32",LVS_REPORT | \r
+ LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_SORTASCENDING | \r
+ LVS_NOSORTHEADER | WS_TABSTOP,125,15,85,80,\r
+ WS_EX_CLIENTEDGE\r
+ LTEXT "heksedit.rc:905",IDC_STATIC,215,5,46,8\r
+ CONTROL "heksedit.rc:906",IDC_INSTDATA,"SysListView32",LVS_REPORT | \r
+ LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_TABSTOP,215,15,\r
+ 155,80,WS_EX_CLIENTEDGE\r
+ CONTROL "heksedit.rc:909",IDC_LINKS,"SysListView32",LVS_REPORT | \r
+ LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | \r
+ WS_TABSTOP,5,100,110,90,WS_EX_CLIENTEDGE\r
+ CONTROL "",IDC_DISPLAY,"Button",BS_OWNERDRAW | WS_DISABLED | \r
+ WS_SYSMENU | WS_GROUP | WS_TABSTOP,120,100,115,90,\r
+ WS_EX_DLGMODALFRAME\r
+ CONTROL "heksedit.rc:915",IDC_MRU,"SysListView32",LVS_REPORT | \r
+ LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | \r
+ WS_TABSTOP,240,100,130,90,WS_EX_CLIENTEDGE\r
+ PUSHBUTTON "heksedit.rc:918",IDC_COPY,5,195,75,15\r
+ PUSHBUTTON "heksedit.rc:919",IDC_READ,95,195,75,15\r
+ PUSHBUTTON "heksedit.rc:920",IDC_DELETE,185,195,75,15\r
+ DEFPUSHBUTTON "heksedit.rc:921",IDCANCEL,275,195,75,15\r
+ CTEXT "heksedit.rc:922",\r
+ IDC_STATIC,45,215,270,25\r
+END\r
+\r
+IDD_MOVE_COPY DIALOGEX 0, 0, 163, 156\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:928"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:931",IDC_STATIC,5,15,97,8,\r
+ SS_CENTERIMAGE\r
+ EDITTEXT IDC_1STOFFSET,5,25,150,12,ES_AUTOHSCROLL | WS_GROUP\r
+ LTEXT "heksedit.rc:934",IDC_STATIC,5,45,62,8,SS_NOTIFY | \r
+ SS_CENTERIMAGE\r
+ CONTROL "heksedit.rc:936",IDC_OTHEREND,"Button",BS_AUTORADIOBUTTON | \r
+ WS_GROUP | WS_TABSTOP,70,45,47,10\r
+ CONTROL "heksedit.rc:938",IDC_LEN,"Button",BS_AUTORADIOBUTTON | \r
+ WS_TABSTOP,120,45,38,10\r
+ EDITTEXT IDC_2NDDELIM,5,55,150,12,ES_AUTOHSCROLL | WS_GROUP\r
+ LTEXT "heksedit.rc:941",IDC_STATIC,5,75,72,8,SS_NOTIFY | \r
+ SS_CENTERIMAGE\r
+ LTEXT "heksedit.rc:943",IDC_STATIC,5,85,28,8\r
+ CONTROL "heksedit.rc:944",IDC_FORWARD,"Button",\r
+ BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,85,75,74,10\r
+ CONTROL "heksedit.rc:946",IDC_FPOS,"Button",BS_AUTORADIOBUTTON | \r
+ WS_TABSTOP,35,85,35,10\r
+ CONTROL "heksedit.rc:948",IDC_LPOS,"Button",\r
+ BS_AUTORADIOBUTTON | WS_TABSTOP,70,85,71,10\r
+ EDITTEXT IDC_MOVEMENT,5,96,150,12,ES_AUTOHSCROLL | WS_GROUP\r
+ LTEXT "heksedit.rc:951",\r
+ IDC_STATIC,5,115,150,18\r
+ DEFPUSHBUTTON "heksedit.rc:953",IDOK,5,136,70,14\r
+ PUSHBUTTON "heksedit.rc:954",IDCANCEL,90,136,65,14\r
+ LTEXT "heksedit.rc:955",IDC_STATIC,5,5,34,8\r
+ CONTROL "heksedit.rc:956",IDC_MOVE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,\r
+ 45,5,34,10\r
+ CONTROL "heksedit.rc:958",IDC_COPY,"Button",BS_AUTORADIOBUTTON,80,5,32,10\r
+END\r
+\r
+IDD_DRAG_DROP DIALOGEX 0, 0, 202, 121\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:963"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ LTEXT "heksedit.rc:966",-1,5,5,82,8\r
+ CONTROL "heksedit.rc:967",IDC_LIST,"SysListView32",LVS_REPORT | \r
+ LVS_SHOWSELALWAYS | LVS_NOCOLUMNHEADER | WS_TABSTOP,5,15,\r
+ 135,100,WS_EX_CLIENTEDGE\r
+ DEFPUSHBUTTON "heksedit.rc:970",IDOK,145,15,50,15\r
+ PUSHBUTTON "heksedit.rc:971",IDCANCEL,145,35,50,15\r
+ PUSHBUTTON "heksedit.rc:972",IDC_UP,145,55,50,15\r
+ PUSHBUTTON "heksedit.rc:973",IDC_DOWN,145,75,50,15\r
+ CONTROL "heksedit.rc:974",IDC_MOVE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,\r
+ 145,95,34,10\r
+ CONTROL "heksedit.rc:976",IDC_COPY,"Button",BS_AUTORADIOBUTTON,145,105,32,\r
+ 10\r
+END\r
+\r
+IDD_DRAG_DROP_OPTIONS DIALOGEX 0, 0, 312, 116\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "heksedit.rc:982"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
+BEGIN\r
+ GROUPBOX "heksedit.rc:985",IDC_STATIC,5,0,145,75\r
+ CONTROL "heksedit.rc:986",IDC_ENABLE_DROP,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,10,10,71,10\r
+ CONTROL "heksedit.rc:988",IDC_ENABLE_DRAG,"Button",\r
+ BS_AUTOCHECKBOX | WS_TABSTOP,10,20,76,10\r
+ CONTROL "heksedit.rc:990",IDC_EN_SD_DD,\r
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,30,126,10\r
+ CONTROL "heksedit.rc:992",IDC_EN_SD_SEL,\r
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,40,124,10\r
+ CONTROL "heksedit.rc:994",\r
+ IDC_ALWAYS_CHOOSE,"Button",BS_AUTOCHECKBOX | BS_LEFT | \r
+ BS_VCENTER | BS_MULTILINE | WS_TABSTOP,10,50,135,20\r
+ GROUPBOX "heksedit.rc:997",IDC_STATIC,155,0,150,45\r
+ CONTROL "heksedit.rc:998",IDC_DROP_CF_HDROP,\r
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,165,10,132,10\r
+ CONTROL "heksedit.rc:1000",IDC_DROP_BIN_DATA,\r
+ "Button",BS_AUTOCHECKBOX | BS_LEFT | BS_VCENTER | \r
+ WS_TABSTOP,165,20,105,10\r
+ CONTROL "heksedit.rc:1003",IDC_DROP_CF_TEXT,"Button",\r
+ BS_AUTOCHECKBOX | BS_LEFT | BS_VCENTER | WS_TABSTOP,165,\r
+ 30,95,10\r
+ GROUPBOX "heksedit.rc:1006",IDC_STATIC,155,45,150,65\r
+ CONTROL "heksedit.rc:1007",IDC_DRAG_BIN_DATA,"Button",\r
+ BS_AUTOCHECKBOX | BS_LEFT | BS_VCENTER | WS_GROUP | \r
+ WS_TABSTOP,165,55,75,10\r
+ CONTROL "heksedit.rc:1010",IDC_DRAG_CF_TEXT,"Button",\r
+ BS_AUTOCHECKBOX | BS_LEFT | BS_VCENTER | WS_GROUP | \r
+ WS_TABSTOP,165,65,76,10\r
+ CONTROL "heksedit.rc:1013",IDC_TEXT_HEXDUMP,"Button",BS_AUTORADIOBUTTON | \r
+ BS_LEFT | BS_VCENTER | WS_GROUP,175,75,46,10\r
+ CONTROL "heksedit.rc:1015",IDC_TEXT_SPECIAL,"Button",\r
+ BS_AUTORADIOBUTTON | BS_LEFT | BS_VCENTER,175,85,95,10\r
+ CONTROL "heksedit.rc:1017",IDC_TEXT_DISPLAY,"Button",\r
+ BS_AUTOCHECKBOX | BS_LEFT | BS_VCENTER | WS_GROUP | \r
+ WS_TABSTOP,225,75,74,10\r
+ CONTROL "heksedit.rc:1020",IDC_DRAG_RTF,\r
+ "Button",BS_AUTOCHECKBOX | BS_LEFT | BS_VCENTER | \r
+ WS_GROUP | WS_TABSTOP,165,95,138,10\r
+ DEFPUSHBUTTON "heksedit.rc:1023",IDOK,15,85,55,20\r
+ PUSHBUTTON "heksedit.rc:1024",IDCANCEL,85,85,55,20\r
+END\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// DESIGNINFO\r
+//\r
+\r
+#ifdef APSTUDIO_INVOKED\r
+GUIDELINES DESIGNINFO \r
+BEGIN\r
+ IDD_GOTODIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 237\r
+ TOPMARGIN, 10\r
+ BOTTOMMARGIN, 59\r
+ END\r
+\r
+ IDD_FINDDIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 272\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 131\r
+ END\r
+\r
+ IDD_ABOUTDIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 205\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 192\r
+ END\r
+\r
+ IDD_HEXDUMPDIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 156\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 154\r
+ END\r
+\r
+ IDD_DECIMALDIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 197\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 104\r
+ END\r
+\r
+ IDD_PASTEDIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 284\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 138\r
+ END\r
+\r
+ IDD_CUTDIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 162\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 152\r
+ END\r
+\r
+ IDD_COPYDIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 151\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 147\r
+ END\r
+\r
+ IDD_VIEWSETTINGSDIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 221\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 160\r
+ END\r
+\r
+ IDD_APPENDDIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 185\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 39\r
+ END\r
+\r
+ IDD_MANIPBITSDIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 250\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 77\r
+ END\r
+\r
+ IDD_CHARACTERSETDIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 165\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 74\r
+ END\r
+\r
+ IDD_CHOOSEDIFFDIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 251\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 224\r
+ END\r
+\r
+ IDD_BINARYMODEDIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 176\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 51\r
+ END\r
+\r
+ IDD_SELECT_BLOCK_DIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 200\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 61\r
+ END\r
+\r
+ IDD_ADDBMK_DIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 186\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 58\r
+ END\r
+\r
+ IDD_REMOVEBMK_DIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 202\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 160\r
+ END\r
+\r
+ IDD_OPEN_PARTIAL_DIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 214\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 128\r
+ END\r
+\r
+ IDD_FASTPASTE_DIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 260\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 139\r
+ END\r
+\r
+ IDD_TMPL_RESULT_DIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 297\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 168\r
+ END\r
+\r
+ IDD_REPLACEDIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 201\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 219\r
+ END\r
+\r
+ IDD_FILL_WITH, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 375\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 96\r
+ END\r
+\r
+ IDD_CHANGEINST, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 240\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 69\r
+ END\r
+\r
+ IDD_ENCODE_DECODE_DIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 229\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 162\r
+ END\r
+\r
+ IDD_OPEN_DRIVE_DIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 229\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 126\r
+ END\r
+\r
+ IDD_GOTO_TRACK_DIALOG, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 237\r
+ TOPMARGIN, 10\r
+ BOTTOMMARGIN, 126\r
+ END\r
+\r
+ IDD_MOVE_COPY, DIALOG\r
+ BEGIN\r
+ BOTTOMMARGIN, 140\r
+ END\r
+\r
+ IDD_DRAG_DROP, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 195\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 114\r
+ END\r
+\r
+ IDD_DRAG_DROP_OPTIONS, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 305\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 109\r
+ END\r
+END\r
+#endif // APSTUDIO_INVOKED\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Bitmap\r
+//\r
+\r
+//IDB_TOOLBAR BITMAP "res/Toolbar.bmp"\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
+// String Table\r
+//\r
+\r
+STRINGTABLE \r
+BEGIN\r
+ IDM_OPEN "heksedit.rc:1281"\r
+ IDM_NEW "heksedit.rc:1282"\r
+END\r
+\r
+STRINGTABLE \r
+BEGIN\r
+ IDM_SAVE "heksedit.rc:1287"\r
+ IDM_FIND "heksedit.rc:1288"\r
+ IDM_EDIT_COPY "heksedit.rc:1289"\r
+ IDM_EDIT_PASTE "heksedit.rc:1290"\r
+ IDM_HELP_TOPICS "heksedit.rc:1291"\r
+ IDM_EDIT_CUT "heksedit.rc:1292"\r
+END\r
+\r
+STRINGTABLE \r
+BEGIN\r
+ IDM_REPLACE "heksedit.rc:1297"\r
+END\r
+\r
+STRINGTABLE \r
+BEGIN\r
+ ID_DISK_GOTONEXTTRACK "heksedit.rc:1302"\r
+ ID_DISK_GOTOPREVIOUSTRACK "heksedit.rc:1303"\r
+ ID_DISK_GOTOFIRSTTRACK "heksedit.rc:1304"\r
+ ID_DISK_GOTOLASTTRACK "heksedit.rc:1305"\r
+END\r
+\r
+#endif // Englisch (USA) resources\r
+/////////////////////////////////////////////////////////////////////////////\r
+\r
+\r
+\r
+#include "version.rc"\r
+en-US.pot RCDATA "en-US.pot"\r
MessageBox(hDlg, "Too many bytes to load.", "Open partially", MB_ICONERROR);\r
return FALSE;\r
}\r
- //int filehandle = _open(szFileName, _O_RDONLY|_O_BINARY, _S_IREAD|_S_IWRITE);\r
+ //int filehandle = _open(szFileName, _O_RDONLY|_O_BINARY);\r
/*if (filehandle == -1)\r
{\r
char buf[500];\r
#include "precomp.h"\r
#include "pdrive95.h"\r
+#include "DllProxies.h"\r
\r
#define SIZE_OF_ONE_BLOCK 512\r
#define SIZE_OF_ONE_BLOCKL 512L\r
} MBR;\r
\r
// RAW functions\r
-LPFNResetDisk m_ResetDisk = NULL;\r
-LPFNReadPhysicalSector m_ReadPhysicalSector = NULL;\r
-LPFNWritePhysicalSector m_WritePhysicalSector = NULL;\r
-LPFNReadDiskGeometry m_ReadDiskGeometry = NULL;\r
-LPFNEI13GetDriveParameters m_EI13GetDriveParameters = NULL;\r
-LPFNEI13ReadSector m_EI13ReadSector = NULL;\r
-LPFNEI13WriteSector m_EI13WriteSector = NULL;\r
+struct RAWIO32 *P9xPhysicalDrive::RAWIO32 = 0;\r
\r
P9xPhysicalDrive::P9xPhysicalDrive()\r
{\r
+ // Load the RAWIO32.DLL if not yet done\r
+ if (RAWIO32 == 0 && (RAWIO32 = ::RAWIO32) == 0)\r
+ {\r
+ TCHAR buf[1024];\r
+ ::RAWIO32.Proxy.FormatMessage(buf);\r
+ ::MessageBox(::GetActiveWindow(), buf, 0, MB_ICONSTOP);\r
+ }\r
m_hDevice = 0;\r
}\r
\r
BOOL P9xPhysicalDrive::Open( int iDrive )\r
{\r
Close();\r
- if( m_ResetDisk == NULL )\r
- {\r
- HINSTANCE hLibrary = (HINSTANCE)LoadLibrary( "RAWIO32.DLL" );\r
- if( !hLibrary )\r
- {\r
- printf("ERROR %s, unable to load RAWIO32.DLL.\n", (LPCSTR) GetLastErrorString() );\r
- return FALSE;\r
- }\r
-\r
- #define GETPROC(__NAME__) \\r
- m_##__NAME__ = (LPFN##__NAME__) GetProcAddress(hLibrary,#__NAME__); \\r
- if( !m_##__NAME__ ) { \\r
- printf("ERROR, missing export " #__NAME__ " IN DISKIO32.DLL\n" ); \\r
- return FALSE; \\r
- }\r
-\r
- GETPROC( ResetDisk )\r
- GETPROC( ReadPhysicalSector )\r
- GETPROC( WritePhysicalSector )\r
- GETPROC( ReadDiskGeometry )\r
- GETPROC( EI13GetDriveParameters )\r
- GETPROC( EI13ReadSector )\r
- GETPROC( EI13WriteSector )\r
- }\r
+ // Cannot open if RAWIO32.DLL is not in place\r
+ if (RAWIO32 == 0)\r
+ return FALSE;\r
\r
TRACE("About to get geometry\n");\r
m_bDriveNumber = (BYTE)(128 + iDrive);\r
ZeroMemory(&edi,sizeof(edi));\r
edi.drive = m_bDriveNumber;\r
\r
- if( m_EI13GetDriveParameters(&edi) > 0 )\r
+ if (RAWIO32->EI13GetDriveParameters(&edi) > 0)\r
{\r
lpDG->Cylinders.QuadPart = *(INT64*)&(edi.sectorsLo);\r
lpDG->TracksPerCylinder = 1; //edi.heads;\r
ZeroMemory(&si,sizeof(si));\r
si.bDrive = m_bDriveNumber;\r
\r
- if( m_ReadDiskGeometry(&si) > 0 )\r
+ if (RAWIO32->ReadDiskGeometry(&si) > 0)\r
{\r
lpDG->Cylinders.QuadPart = si.wCylinder;\r
lpDG->TracksPerCylinder = si.bHead;\r
*((INT64*)&(bi.scheiss[0])) = Sector;\r
bi.count = (WORD) (dwSize / SIZE_OF_ONE_BLOCK);\r
\r
- if( m_EI13ReadSector (&bi, lpbMemory, dwSize) > 0 )\r
+ if (RAWIO32->EI13ReadSector(&bi, lpbMemory, dwSize) > 0)\r
return TRUE;\r
\r
/* ***** NOT SUPPORTED *******\r
return FALSE;\r
}\r
\r
-BOOL P9xPhysicalDrive::GetDriveGeometryEx( DISK_GEOMETRY_EX* lpDG, DWORD dwSize )\r
+BOOL P9xPhysicalDrive::GetDriveGeometryEx(DISK_GEOMETRY_EX *, DWORD)\r
{\r
- UNREFERENCED_PARAMETER( lpDG );\r
- UNREFERENCED_PARAMETER( dwSize );\r
return FALSE;\r
}\r
\r
-BOOL P9xPhysicalDrive::GetDriveLayoutEx( LPBYTE lpbMemory, DWORD dwSize )\r
+BOOL P9xPhysicalDrive::GetDriveLayoutEx(LPBYTE, DWORD)\r
{\r
- UNREFERENCED_PARAMETER( lpbMemory );\r
- UNREFERENCED_PARAMETER( dwSize );\r
return FALSE;\r
}\r
\r
BOOL P9xPhysicalDrive::GetDriveLayout( LPBYTE lpbMemory, DWORD dwSize )\r
{\r
- DWORD dwBytesRequired = sizeof(DRIVE_LAYOUT_INFORMATION) + sizeof(PARTITION_INFORMATION)*(m_PartitionInfo.m_lCount-1);\r
+ DWORD dwBytesRequired = sizeof(DRIVE_LAYOUT_INFORMATION) + sizeof(PARTITION_INFORMATION) * (m_PartitionInfo.Count - 1);\r
\r
- if( dwSize < dwBytesRequired )\r
+ if (dwSize < dwBytesRequired)\r
return FALSE;\r
\r
PDRIVE_LAYOUT_INFORMATION pli = (PDRIVE_LAYOUT_INFORMATION) lpbMemory;\r
- pli->PartitionCount = m_PartitionInfo.m_lCount;\r
+ pli->PartitionCount = m_PartitionInfo.Count;\r
pli->Signature = 0;\r
int index = 0;\r
- ENUMERATE( &m_PartitionInfo, P9xPartitionInfo, pI )\r
+ LIST_ENTRY *Flink = &m_PartitionInfo;\r
+ while ((Flink = Flink->Flink) != &m_PartitionInfo)\r
{\r
- pli->PartitionEntry[index++] = pI->m_pi;\r
+ P9xPartitionInfo *pi = static_cast<P9xPartitionInfo *>(Flink);\r
+ pli->PartitionEntry[index++] = pi->m_pi;\r
}\r
return TRUE;\r
}\r
-\r
-\r
\r
class P9xPartitionInfo : public PNode\r
{\r
- public:\r
- P9xPartitionInfo(PARTITION_INFORMATION* pi):m_pi(*pi){}\r
+public:\r
+ P9xPartitionInfo(PARTITION_INFORMATION* pi):m_pi(*pi){}\r
\r
- PARTITION_INFORMATION m_pi;\r
+ PARTITION_INFORMATION m_pi;\r
};\r
\r
class P9xPhysicalDrive : public IPhysicalDrive\r
{\r
- public:\r
- P9xPhysicalDrive();\r
- virtual ~P9xPhysicalDrive();\r
-\r
- //Path must look like this: "\\.\PhysicalDrive0" (of course, \ maps to \\, and \\ to \\\\)\r
- BOOL Open( int iDrive );\r
- void Close();\r
- BOOL GetDriveGeometry( DISK_GEOMETRY* lpDG );\r
- BOOL GetDriveGeometryEx( DISK_GEOMETRY_EX* lpDG, DWORD dwSize );\r
- BOOL GetDriveLayout( LPBYTE lpbMemory, DWORD dwSize );\r
- BOOL GetDriveLayoutEx( LPBYTE lpbMemory, DWORD dwSize );\r
- BOOL ReadAbsolute( LPBYTE lpbMemory, DWORD dwSize, INT64 Sector );\r
- BOOL IsOpen();\r
- BOOL ReadPartitionInfoRecursive(DWORD dwSector,INT64 TotalOffset,int depth = 0);\r
-\r
- HANDLE m_hDevice;\r
- BYTE m_bDriveNumber;\r
- PList m_PartitionInfo;\r
+public:\r
+ P9xPhysicalDrive();\r
+ virtual ~P9xPhysicalDrive();\r
+\r
+ //Path must look like this: "\\.\PhysicalDrive0" (of course, \ maps to \\, and \\ to \\\\)\r
+ BOOL Open( int iDrive );\r
+ void Close();\r
+ BOOL GetDriveGeometry( DISK_GEOMETRY* lpDG );\r
+ BOOL GetDriveGeometryEx( DISK_GEOMETRY_EX* lpDG, DWORD dwSize );\r
+ BOOL GetDriveLayout( LPBYTE lpbMemory, DWORD dwSize );\r
+ BOOL GetDriveLayoutEx( LPBYTE lpbMemory, DWORD dwSize );\r
+ BOOL ReadAbsolute( LPBYTE lpbMemory, DWORD dwSize, INT64 Sector );\r
+ BOOL IsOpen();\r
+ BOOL ReadPartitionInfoRecursive(DWORD dwSector,INT64 TotalOffset,int depth = 0);\r
+\r
+ HANDLE m_hDevice;\r
+ BYTE m_bDriveNumber;\r
+ PList m_PartitionInfo;\r
+private:\r
+ static struct RAWIO32 *RAWIO32;\r
};\r
\r
#endif // PDrive95_h\r
#include "precomp.h"\r
#include "physicaldrive.h"\r
#include "PDriveNT.h"\r
-#include <assert.h>\r
\r
BOOL PNtPhysicalDrive::GetDriveLayout( LPBYTE lpbMemory, DWORD dwSize )\r
{\r
#include "precomp.h"\r
#include "physicaldrive.h"\r
-#include <assert.h>\r
#include "pdrive95.h"\r
#include "pdrivent.h"\r
\r
return 0;\r
}\r
\r
-PString PartitionInfo::GetNameAsString()\r
+LPTSTR PartitionInfo::GetNameAsString(LPTSTR szFormat)\r
{\r
- CHAR szFormat[80];\r
-\r
- if( m_bIsPartition )\r
- sprintf( szFormat, "Drive %d, Partition %d (%s)", (m_dwDrive+1), (m_dwPartition+1), (LPCSTR) GetSizeAsString() );\r
+ if (m_bIsPartition)\r
+ _stprintf(szFormat, _T("Drive %d, Partition %d (%s)"), m_dwDrive + 1, m_dwPartition + 1, GetSizeAsString());\r
else\r
- sprintf( szFormat, "Drive %d (%s)", (m_dwDrive+1), (LPCSTR) GetSizeAsString() );\r
- return PString(szFormat);\r
+ _stprintf(szFormat, _T("Drive %d (%s)"), m_dwDrive + 1, GetSizeAsString());\r
+ return szFormat;\r
}\r
\r
-PString PartitionInfo::GetSizeAsString()\r
+LPTSTR PartitionInfo::GetSizeAsString(LPTSTR szFormat)\r
{\r
double SizeInMB = (double) m_PartitionLength;\r
SizeInMB /= (1000*1000);\r
double SizeInGB = SizeInMB;\r
SizeInGB /= (1000);\r
- if( SizeInGB > 1.0 )\r
- return PString( 0, "%.2f GB", SizeInGB );\r
- return PString( 0, "%.2f MB", SizeInMB );\r
+ if( SizeInGB >= 1.0 )\r
+ _stprintf(szFormat, _T("%.2f GB"), SizeInGB);\r
+ else\r
+ _stprintf(szFormat, _T("%.2f MB"), SizeInMB);\r
+ return szFormat;\r
}\r
\r
void IPhysicalDrive::GetPartitionInfo(PList* lpList)\r
INT64 m_StartingSector;\r
INT64 m_PartitionLength;\r
\r
- PString GetNameAsString();\r
- PString GetSizeAsString();\r
+ LPTSTR GetNameAsString(LPTSTR = PString<80>());\r
+ LPTSTR GetSizeAsString(LPTSTR = PString<80>());\r
};\r
\r
\r
--- /dev/null
+cd\r
+echo %0\r
+echo $(IntDir) = %1\r
+echo $(TargetPath) = %2\r
+cd Languages\r
+cscript CreateMasterPotFile.vbs\r
+cscript UpdatePoFilesFromPotFile.vbs\r
+cd ..\r
+rc /fo%1\lang.res /i.. Languages\heksedit.rc\r
+mkdir %2\..\heksedit.lng\r
+link /DLL /NOENTRY /MACHINE:IX86 /OUT:%2\..\heksedit.lng\heksedit.lng %1\lang.res\r
+copy Languages\*.po %2\..\heksedit.lng\r
#include "precomp.h"\r
-#include <shlwapi.h>\r
#include "shtools.h"\r
#include "resource.h"\r
#include "hexwnd.h"\r
#include "simparr.h"\r
\r
//-------------------------------------------------------------------\r
-int SimpleString::AppendString( char* ps )\r
+int SimpleString::AppendString( const char* ps )\r
{\r
if( m_nUpperBound == -1 )\r
return SetToString( ps );\r
}\r
\r
//-------------------------------------------------------------------\r
-int SimpleString::SetToString( char* ps )\r
+int SimpleString::SetToString( const char* ps )\r
{\r
Clear();\r
return AppendString( ps );\r
}\r
\r
//-------------------------------------------------------------------\r
-char* SimpleString::operator=( char* ps )\r
+SimpleString& SimpleString::operator=( const char* ps )\r
{\r
SetToString( ps );\r
- return ps;\r
+ return *this;\r
}\r
\r
//-------------------------------------------------------------------\r
-SimpleString& SimpleString::operator=( SimpleString str )\r
+SimpleString& SimpleString::operator=( const SimpleString &str )\r
{\r
SetToString( &str[0] );\r
return *this;\r
}\r
\r
//-------------------------------------------------------------------\r
-char* SimpleString::operator+=( char* ps )\r
+SimpleString& SimpleString::operator+=( const char* ps )\r
{\r
if( m_nUpperBound == -1 )\r
SetToString( ps );\r
{\r
InsertAtGrow( m_nUpperBound, ps, 0, strlen( ps ) );\r
}\r
- return ps;\r
+ return *this;\r
}\r
\r
//-------------------------------------------------------------------\r
}\r
\r
//-------------------------------------------------------------------\r
-SimpleString::SimpleString( char* ps )\r
+SimpleString::SimpleString( const char* ps )\r
{\r
// Create a SimpleString from a normal char array-string.\r
m_nGrowBy = 64;\r
}\r
\r
//-------------------------------------------------------------------\r
-SimpleString SimpleString::operator+( SimpleString& str1 )\r
+SimpleString SimpleString::operator+( const SimpleString& str1 )\r
{\r
SimpleString t1;\r
t1.SetToString( m_pT );\r
}\r
\r
//-------------------------------------------------------------------\r
-SimpleString operator+( SimpleString ps1, char* ps2 )\r
+SimpleString operator+( const SimpleString &ps1, const char* ps2 )\r
{\r
SimpleString s1;\r
s1 += ps1;\r
}\r
\r
//-------------------------------------------------------------------\r
-SimpleString operator+( char* ps1, SimpleString ps2 )\r
+SimpleString operator+( const char* ps1, const SimpleString &ps2 )\r
{\r
SimpleString s1;\r
s1 += ps1;\r
{\r
return m_pT;\r
}\r
+ operator const T*() const\r
+ {\r
+ return m_pT;\r
+ }\r
int InsertAt(int nIndex, T argT, int nCount = 1);\r
- void InsertAtRef(int nIndex, T& argT, int nCount = 1);\r
+ void InsertAtRef(int nIndex, const T& argT, int nCount = 1);\r
int InsertAtGrow(int nIndex, T argT, int nCount = 1);\r
- void InsertAtGrowRef(int nIndex, T& argT, int nCount = 1);\r
- int InsertAtGrow (int nIndex, T* pT, int nSrcIndex, int nCount);\r
+ void InsertAtGrowRef(int nIndex, const T& argT, int nCount = 1);\r
+ int InsertAtGrow (int nIndex, const T* pT, int nSrcIndex, int nCount);\r
int RemoveAt(int nIndex, int nCount = 1);\r
void SetAtGrow(int nIndex, T argT);\r
- int SetAtGrowRef(int nIndex, T& argT);\r
+ int SetAtGrowRef(int nIndex, const T& argT);\r
void SetAt(int nIndex, T argT);\r
- void SetAtRef(int nIndex, T& argT);\r
+ void SetAtRef(int nIndex, const T& argT);\r
T GetAt(int nIndex);\r
T& GetRefAt(int nIndex);\r
int GetSize();\r
T& operator[](int nIndex) {return m_pT[nIndex];}\r
SimpleArray<T>& operator=(SimpleArray<T>& spa);\r
void ClearAll();\r
- int blContainsRef(T& argT);\r
+ int blContainsRef(const T& argT);\r
int blContains(T argT);\r
int nContainsAt(T argT);\r
int blIsEmpty();\r
- void AppendRef(T& argT);\r
+ void AppendRef(const T& argT);\r
void Append(T argT);\r
void Exchange(int nIndex1, int nIndex2);\r
int blCompare(SimpleArray<T>& spa);\r
void SetUpperBound(int upbnd);\r
int AppendArray( T* pSrc, int srclen );\r
int ExpandToSize();\r
- int CopyFrom( int index, T* pSrc, int srclen );\r
- int Replace( int ToReplaceIndex, int ToReplaceLength, T* pReplaceWith, int ReplaceWithLength );\r
+ int CopyFrom( int index, const T* pSrc, int srclen );\r
+ int Replace( int ToReplaceIndex, int ToReplaceLength, const T* pReplaceWith, int ReplaceWithLength );\r
\r
protected:\r
int AddSpace (int nExtend);\r
}\r
\r
//-------------------------------------------------------------------\r
-template<class T> inline int SimpleArray<T>::InsertAtGrow (int nIndex, T* pT, int nSrcIndex, int nCount)\r
+template<class T> inline int SimpleArray<T>::InsertAtGrow (int nIndex, const T* pT, int nSrcIndex, int nCount)\r
{\r
if(nIndex<0 || nCount<1)\r
return FALSE;\r
}\r
\r
//-------------------------------------------------------------------\r
-template<class T> inline void SimpleArray<T>::InsertAtGrowRef(int nIndex, T& argT, int nCount)\r
+template<class T> inline void SimpleArray<T>::InsertAtGrowRef(int nIndex, const T& argT, int nCount)\r
{\r
if(nIndex<0 || nCount<1) return;\r
int i;\r
}\r
\r
//-------------------------------------------------------------------\r
-template<class T> inline void SimpleArray<T>::InsertAtRef(int nIndex, T& argT, int nCount)\r
+template<class T> inline void SimpleArray<T>::InsertAtRef(int nIndex, const T& argT, int nCount)\r
{\r
if(nIndex < 0 || nIndex > m_nUpperBound)\r
return;\r
}\r
\r
//-------------------------------------------------------------------\r
-template<class T> inline int SimpleArray<T>::SetAtGrowRef(int nIndex, T& argT)\r
+template<class T> inline int SimpleArray<T>::SetAtGrowRef(int nIndex, const T& argT)\r
{\r
if(nIndex < 0)\r
return FALSE;\r
}\r
\r
//-------------------------------------------------------------------\r
-template<class T> inline void SimpleArray<T>::SetAtRef(int nIndex, T& argT)\r
+template<class T> inline void SimpleArray<T>::SetAtRef(int nIndex, const T& argT)\r
{\r
if(nIndex >= 0 && nIndex < m_nSize)\r
{\r
}\r
\r
//-------------------------------------------------------------------\r
-template<class T> inline int SimpleArray<T>::blContainsRef(T& argT)\r
+template<class T> inline int SimpleArray<T>::blContainsRef(const T& argT)\r
{\r
int i;\r
for(i = 0; i <= m_nUpperBound; i++)\r
// If this array is not empty then delete it.\r
ClearAll();\r
// Allocate memory.\r
- m_pT = new T[ m_nSize ];\r
+ int nSize = spa.m_nUpperBound + 1;\r
+ m_pT = new T[ nSize ];\r
// Copy the valid elements.\r
if( m_pT != NULL )\r
{\r
// This array now is just large enough to contain the valid elements of spa.\r
m_nUpperBound = spa.m_nUpperBound;\r
- m_nSize = m_nUpperBound + 1;\r
+ m_nSize = nSize;\r
// GrowBy rate is also copied.\r
m_nGrowBy = spa.m_nGrowBy;\r
int k;\r
}\r
\r
//-------------------------------------------------------------------\r
-template<class T> inline void SimpleArray<T>::AppendRef(T& argT)\r
+template<class T> inline void SimpleArray<T>::AppendRef(const T& argT)\r
{\r
SetAt(m_nUpperBound+1, argT);\r
}\r
}\r
\r
//-------------------------------------------------------------------\r
-template<class T> inline int SimpleArray<T>::CopyFrom( int index, T* pSrc, int srclen )\r
+template<class T> inline int SimpleArray<T>::CopyFrom( int index, const T* pSrc, int srclen )\r
{\r
if( m_nSize - index >= srclen )\r
{\r
}\r
\r
//-------------------------------------------------------------------\r
-template<class T> inline int SimpleArray<T>::Replace( int ToReplaceIndex, int ToReplaceLength, T* pReplaceWith, int ReplaceWithLength )\r
+template<class T> inline int SimpleArray<T>::Replace( int ToReplaceIndex, int ToReplaceLength, const T* pReplaceWith, int ReplaceWithLength )\r
{\r
if( m_pT != NULL && ToReplaceLength > 0 )\r
{\r
{\r
public:\r
int IsEmpty();\r
- SimpleString operator+( SimpleString& str1 );\r
+ SimpleString operator+( const SimpleString& str1 );\r
SimpleString();\r
- SimpleString( char* ps );\r
- int AppendString( char* ps );\r
- int SetToString( char* ps );\r
- char* operator=( char* ps );\r
- SimpleString& operator=( SimpleString str );\r
- char* operator+=( char* ps );\r
+ SimpleString( const char* ps );\r
+ int AppendString( const char* ps );\r
+ int SetToString( const char* ps );\r
+ SimpleString& operator=( const char* ps );\r
+ SimpleString& operator=( const SimpleString &str );\r
+ SimpleString& operator+=( const char* ps );\r
int StrLen();\r
void Clear();\r
};\r
\r
-SimpleString operator+( SimpleString ps1, char* ps2 );\r
-SimpleString operator+( char* ps1, SimpleString ps2 );\r
+SimpleString operator+( const SimpleString &ps1, const char* ps2 );\r
+SimpleString operator+( const char* ps1, const SimpleString &ps2 );\r
\r
#endif // simplearr_h\r
#include "precomp.h"\r
#include "resource.h"\r
-#include <shlwapi.h>\r
#include "regtools.h"\r
#include "hexwnd.h"\r
#include "hexwdlg.h"\r
{\r
int i;\r
HKEY hk;\r
- //LONG res;\r
char subkeynam[_MAX_PATH+1];\r
LVITEM item;\r
ZeroMemory(&item,sizeof(LVITEM));\r
--- /dev/null
+/*/VersionData.h\r
+This code has been released into the public domain and may be used\r
+for any purposes whatsoever without acknowledgment.\r
+*/\r
+\r
+class CVersionData\r
+{\r
+private:\r
+ // Disallow construction\r
+ CVersionData();\r
+public:\r
+ WORD wLength;\r
+ WORD wValueLength;\r
+ WORD wType;\r
+ WCHAR szKey[1];\r
+ const WCHAR *Data() const\r
+ {\r
+ if (this)\r
+ {\r
+ const WCHAR *p = szKey + lstrlenW(szKey) + 1;\r
+ return (const WCHAR *)((UINT_PTR) p + 3U & ~3U);\r
+ }\r
+ return 0;\r
+ }\r
+ const CVersionData *First() const\r
+ {\r
+ if (this)\r
+ {\r
+ return (const CVersionData *)((UINT_PTR)Data() + wValueLength + 3U & ~3U);\r
+ }\r
+ return 0;\r
+ }\r
+ const CVersionData *Next() const\r
+ {\r
+ if (this)\r
+ {\r
+ return (const CVersionData *)((UINT_PTR)this + wLength + 3U & ~3U);\r
+ }\r
+ return 0;\r
+ }\r
+ const CVersionData *Find(LPCWSTR szKey) const\r
+ {\r
+ const CVersionData *p = First();\r
+ while (p < Next())\r
+ {\r
+ if (szKey == 0 || StrCmpW(szKey, p->szKey) == 0)\r
+ return p;\r
+ p = p->Next();\r
+ }\r
+ return 0;\r
+ }\r
+ static const CVersionData *Load(HMODULE hModule = 0, LPCTSTR lpszRes = MAKEINTRESOURCE(VS_VERSION_INFO))\r
+ {\r
+ HRSRC hRes = FindResource(hModule, lpszRes, RT_VERSION);\r
+ return (const CVersionData *)LoadResource(hModule, hRes);\r
+ }\r
+};\r
#include "hexwnd.h"\r
\r
HINSTANCE hMainInstance;\r
-LRESULT CALLBACK HexWndProc (HWND, UINT, WPARAM, LPARAM);\r
+LRESULT CALLBACK HexWndProc(HWND, UINT, WPARAM, LPARAM);\r
+\r
+static const char szHexClassA[] = "hekseditA_"\r
+ SHARPEN(A,FRHED_MAJOR_VERSION) "."\r
+ SHARPEN(A,FRHED_MINOR_VERSION) "."\r
+ SHARPEN(A,FRHED_SUB_RELEASE_NO);\r
+\r
+static const WCHAR szHexClassW[] = L"hekseditW_"\r
+ SHARPEN(W,FRHED_MAJOR_VERSION) L"."\r
+ SHARPEN(W,FRHED_MINOR_VERSION) L"."\r
+ SHARPEN(W,FRHED_SUB_RELEASE_NO);\r
\r
-static const char szHexClass[] = "frhed hexclass";\r
//--------------------------------------------------------------------------------------------\r
// WinMain: the starting point.\r
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID)\r
if (dwReason == DLL_PROCESS_ATTACH)\r
{\r
hMainInstance = hInstance;\r
- WNDCLASSEX wndclass;\r
- Zero(wndclass);\r
- wndclass.cbSize = sizeof(wndclass);\r
- wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS;\r
- wndclass.lpfnWndProc = HexWndProc;\r
- wndclass.hInstance = hInstance;\r
- wndclass.hCursor = 0;\r
- wndclass.lpszClassName = szHexClass;\r
- RegisterClassEx(&wndclass);\r
+ union\r
+ {\r
+ WNDCLASSEXA a;\r
+ WNDCLASSEXW w;\r
+ } wndclass;\r
+ ZeroMemory(&wndclass, sizeof wndclass);\r
+ wndclass.a.cbSize = sizeof wndclass;\r
+ wndclass.a.style = CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS;\r
+ wndclass.a.lpfnWndProc = HexWndProc;\r
+ wndclass.a.hInstance = hInstance;\r
+ wndclass.a.hCursor = 0;\r
+ wndclass.a.lpszClassName = szHexClassA;\r
+ RegisterClassExA(&wndclass.a);\r
+ wndclass.w.lpszClassName = szHexClassW;\r
+ RegisterClassExW(&wndclass.w);\r
return TRUE;\r
}\r
return FALSE;\r
if (iMsg == WM_NCCREATE)\r
SetWindowLong(hwnd, GWL_USERDATA, (LONG)new HexEditorWindow);\r
HexEditorWindow *pHexWnd = (HexEditorWindow *)GetWindowLong(hwnd, GWL_USERDATA);\r
- LRESULT lResult = pHexWnd->OnWndMsg( hwnd, iMsg, wParam, lParam );\r
+ LRESULT lResult = pHexWnd->OnWndMsg(hwnd, iMsg, wParam, lParam);\r
if (iMsg == WM_NCDESTROY)\r
delete pHexWnd;\r
return lResult;\r
# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
# Begin Source File\r
\r
-SOURCE=.\BinTrans.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\gktools.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\gtools.h\r
+SOURCE=.\heksedit.h\r
# End Source File\r
# Begin Source File\r
\r
# End Source File\r
# Begin Source File\r
\r
-SOURCE=.\ido.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ids.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\idt.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\ntdiskspec.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\PDrive95.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\PDriveNT.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\PhysicalDrive.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\PMemoryBlock.h\r
-# End Source File\r
-# Begin Source File\r
-\r
SOURCE=.\precomp.h\r
# End Source File\r
# Begin Source File\r
\r
-SOURCE=..\RAWIO32\RAWIO32.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\Simparr.h\r
-# End Source File\r
-# Begin Source File\r
-\r
SOURCE=.\toolbar.h\r
# End Source File\r
# Begin Source File\r
# End Source File\r
# Begin Source File\r
\r
-SOURCE=.\icon1.ico\r
+SOURCE=.\res\icon1.ico\r
# End Source File\r
# Begin Source File\r
\r
SOURCE=.\resource.h\r
# End Source File\r
# End Group\r
-# Begin Group "Text Files"\r
-\r
-# PROP Default_Filter "txt"\r
-# Begin Source File\r
-\r
-SOURCE=.\Bugs.txt\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\History.txt\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\Readme.txt\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=.\Todo.txt\r
-# End Source File\r
-# End Group\r
# End Target\r
# End Project\r
#undef APSTUDIO_READONLY_SYMBOLS\r
\r
/////////////////////////////////////////////////////////////////////////////\r
-// Deutsch (Deutschland) resources\r
+// Englisch (USA) resources\r
\r
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)\r
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r
#ifdef _WIN32\r
-LANGUAGE LANG_GERMAN, SUBLANG_GERMAN\r
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US\r
#pragma code_page(1252)\r
#endif //_WIN32\r
\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Menu\r
-//\r
-\r
#ifdef APSTUDIO_INVOKED\r
/////////////////////////////////////////////////////////////////////////////\r
//\r
\r
3 TEXTINCLUDE DISCARDABLE \r
BEGIN\r
- "\r\n"\r
+ "#include ""version.rc""\r\n"\r
"\0"\r
END\r
\r
#endif // APSTUDIO_INVOKED\r
\r
-#ifndef _MAC\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Version\r
-//\r
-\r
-VS_VERSION_INFO VERSIONINFO\r
- FILEVERSION 1,0,0,0\r
- PRODUCTVERSION 1,0,0,0\r
- FILEFLAGSMASK 0x3fL\r
-#ifdef _DEBUG\r
- FILEFLAGS 0x21L\r
-#else\r
- FILEFLAGS 0x20L\r
-#endif\r
- FILEOS 0x40004L\r
- FILETYPE 0x1L\r
- FILESUBTYPE 0x0L\r
-BEGIN\r
- BLOCK "StringFileInfo"\r
- BEGIN\r
- BLOCK "040704b0"\r
- BEGIN\r
- VALUE "Comments", "Homepage: http://www.kibria.de, http://zip.to/pabs3\0"\r
- VALUE "CompanyName", "(c) Raihan Kibria 2000\0"\r
- VALUE "FileDescription", "frhed - free hex editor 1.1.0\0"\r
- VALUE "FileVersion", "1, 1, 0\0"\r
- VALUE "InternalName", "frhed\0"\r
- VALUE "LegalCopyright", "GNU General Public License v2.0\0"\r
- VALUE "LegalTrademarks", "\0"\r
- VALUE "OriginalFilename", "frhed.exe\0"\r
- VALUE "PrivateBuild", "\0"\r
- VALUE "ProductName", "frhed\0"\r
- VALUE "ProductVersion", "1, 1, 0\0"\r
- VALUE "SpecialBuild", "\0"\r
- END\r
- END\r
- BLOCK "VarFileInfo"\r
- BEGIN\r
- VALUE "Translation", 0x407, 1200\r
- END\r
-END\r
-\r
-#endif // !_MAC\r
-\r
\r
/////////////////////////////////////////////////////////////////////////////\r
//\r
\r
// Icon with lowest ID value placed first to ensure application icon\r
// remains consistent on all systems.\r
-IDI_ICON1 ICON DISCARDABLE "icon1.ico"\r
-\r
-#endif // Deutsch (Deutschland) resources\r
+IDI_ICON1 ICON DISCARDABLE "res/icon1.ico"\r
+#endif // Englisch (USA) resources\r
/////////////////////////////////////////////////////////////////////////////\r
\r
\r
//\r
// Generated from the TEXTINCLUDE 3 resource.\r
//\r
-\r
+#include "version.rc"\r
\r
/////////////////////////////////////////////////////////////////////////////\r
#endif // not APSTUDIO_INVOKED\r
<Configurations>\r
<Configuration\r
Name="Release|Win32"\r
- OutputDirectory=".\../../Build/MergeRelease"\r
- IntermediateDirectory=".\../../BuildTmp/frhed/Release"\r
+ OutputDirectory=".\..\..\Build\heksedit\$(ConfigurationName)"\r
+ IntermediateDirectory=".\..\..\BuildTmp\frhed\$(ConfigurationName)"\r
ConfigurationType="1"\r
UseOfMFC="0"\r
ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
+ StringPooling="TRUE"\r
+ ExceptionHandling="FALSE"\r
RuntimeLibrary="2"\r
UsePrecompiledHeader="3"\r
PrecompiledHeaderThrough="precomp.h"\r
- PrecompiledHeaderFile=".\../../BuildTmp/frhed/Release/frhed.pch"\r
- AssemblerListingLocation=".\../../BuildTmp/frhed/Release/"\r
- ObjectFile=".\../../BuildTmp/frhed/Release/"\r
- ProgramDataBaseFileName=".\../../BuildTmp/frhed/Release/"\r
+ PrecompiledHeaderFile=".\..\..\BuildTmp\frhed\$(ConfigurationName)\frhed.pch"\r
+ AssemblerListingLocation=".\..\..\BuildTmp\frhed\$(ConfigurationName)\"\r
+ ObjectFile=".\..\..\BuildTmp\frhed\$(ConfigurationName)\"\r
+ ProgramDataBaseFileName=".\..\..\BuildTmp\frhed\$(ConfigurationName)\"\r
BrowseInformation="1"\r
WarningLevel="3"\r
SuppressStartupBanner="TRUE"/>\r
<Tool\r
Name="VCLinkerTool"\r
AdditionalDependencies="version.lib comctl32.lib wininet.lib odbc32.lib odbccp32.lib shlwapi.lib"\r
- OutputFile="../../Build/heksedit/Release/frhed.exe"\r
+ OutputFile="..\..\Build\heksedit\$(ConfigurationName)\frhed.exe"\r
LinkIncremental="1"\r
SuppressStartupBanner="TRUE"\r
- ProgramDatabaseFile="../../Build/heksedit/Release/frhed.pdb"\r
+ ProgramDatabaseFile="..\..\Build\heksedit\$(ConfigurationName)\frhed.pdb"\r
SubSystem="2"\r
TargetMachine="1"/>\r
<Tool\r
MkTypLibCompatible="TRUE"\r
SuppressStartupBanner="TRUE"\r
TargetEnvironment="1"\r
- TypeLibraryName=".\../../Build/MergeRelease/frhed.tlb"\r
+ TypeLibraryName=".\..\..\Build\heksedit\$(ConfigurationName)\frhed.tlb"\r
HeaderFileName=""/>\r
<Tool\r
Name="VCPostBuildEventTool"/>\r
</Configuration>\r
<Configuration\r
Name="Debug|Win32"\r
- OutputDirectory=".\../../Build/MergeDebug"\r
- IntermediateDirectory=".\../../BuildTmp/frhed/Debug"\r
+ OutputDirectory=".\..\..\Build\heksedit\$(ConfigurationName)"\r
+ IntermediateDirectory=".\..\..\BuildTmp\frhed\$(ConfigurationName)"\r
ConfigurationType="1"\r
UseOfMFC="0"\r
ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
+ StringPooling="TRUE"\r
+ ExceptionHandling="FALSE"\r
RuntimeLibrary="3"\r
UsePrecompiledHeader="3"\r
PrecompiledHeaderThrough="precomp.h"\r
- PrecompiledHeaderFile=".\../../BuildTmp/frhed/Debug/frhed.pch"\r
- AssemblerListingLocation=".\../../BuildTmp/frhed/Debug/"\r
- ObjectFile=".\../../BuildTmp/frhed/Debug/"\r
- ProgramDataBaseFileName=".\../../BuildTmp/frhed/Debug/"\r
+ PrecompiledHeaderFile=".\..\..\BuildTmp\frhed\$(ConfigurationName)\frhed.pch"\r
+ AssemblerListingLocation=".\..\..\BuildTmp\frhed\$(ConfigurationName)\"\r
+ ObjectFile=".\..\..\BuildTmp\frhed\$(ConfigurationName)\"\r
+ ProgramDataBaseFileName=".\..\..\BuildTmp\frhed\$(ConfigurationName)\"\r
BrowseInformation="1"\r
WarningLevel="3"\r
SuppressStartupBanner="TRUE"\r
<Tool\r
Name="VCLinkerTool"\r
AdditionalDependencies="imagehlp.lib version.lib comctl32.lib wininet.lib odbc32.lib odbccp32.lib shlwapi.lib"\r
- OutputFile="../../Build/heksedit/Debug/frhed.exe"\r
+ OutputFile="..\..\Build\heksedit\$(ConfigurationName)\frhed.exe"\r
LinkIncremental="1"\r
SuppressStartupBanner="TRUE"\r
GenerateDebugInformation="TRUE"\r
- ProgramDatabaseFile="../../Build/heksedit/Debug/frhed.pdb"\r
+ ProgramDatabaseFile="..\..\Build\heksedit\$(ConfigurationName)\frhed.pdb"\r
SubSystem="2"\r
TargetMachine="1"/>\r
<Tool\r
MkTypLibCompatible="TRUE"\r
SuppressStartupBanner="TRUE"\r
TargetEnvironment="1"\r
- TypeLibraryName=".\../../Build/MergeDebug/frhed.tlb"\r
+ TypeLibraryName=".\..\..\Build\heksedit\$(ConfigurationName)\frhed.tlb"\r
HeaderFileName=""/>\r
<Tool\r
Name="VCPostBuildEventTool"/>\r
Name="Header Files"\r
Filter="h;hpp;hxx;hm;inl">\r
<File\r
- RelativePath="BinTrans.h">\r
- </File>\r
- <File\r
- RelativePath="gktools.h">\r
- </File>\r
- <File\r
- RelativePath="gtools.h">\r
- </File>\r
- <File\r
RelativePath="hexwnd.h">\r
</File>\r
<File\r
- RelativePath="ido.h">\r
- </File>\r
- <File\r
- RelativePath="ids.h">\r
- </File>\r
- <File\r
- RelativePath="idt.h">\r
- </File>\r
- <File\r
- RelativePath="ntdiskspec.h">\r
- </File>\r
- <File\r
- RelativePath="PDrive95.h">\r
- </File>\r
- <File\r
- RelativePath="PDriveNT.h">\r
- </File>\r
- <File\r
- RelativePath="PhysicalDrive.h">\r
- </File>\r
- <File\r
- RelativePath="PMemoryBlock.h">\r
- </File>\r
- <File\r
RelativePath="precomp.h">\r
</File>\r
<File\r
- RelativePath="..\RAWIO32\RAWIO32.h">\r
- </File>\r
- <File\r
- RelativePath="Simparr.h">\r
- </File>\r
- <File\r
RelativePath="toolbar.h">\r
</File>\r
<File\r
RelativePath="resource.h">\r
</File>\r
</Filter>\r
- <Filter\r
- Name="Text Files"\r
- Filter="txt">\r
- <File\r
- RelativePath="Bugs.txt">\r
- </File>\r
- <File\r
- RelativePath="History.txt">\r
- </File>\r
- <File\r
- RelativePath="Readme.txt">\r
- </File>\r
- <File\r
- RelativePath="Todo.txt">\r
- </File>\r
- </Filter>\r
</Files>\r
<Globals>\r
</Globals>\r
#include "precomp.h"\r
+#include "DllProxies.h"\r
#include <imagehlp.h>\r
#include <ctype.h>\r
#include "resource.h"\r
\r
static PList PartitionInfoList;\r
\r
-typedef BOOL (__stdcall* LPFNUnMapAndLoad)( PLOADED_IMAGE LoadedImage );\r
-typedef PVOID (__stdcall* LPFNImageRvaToVa)(\r
- IN PIMAGE_NT_HEADERS NtHeaders,\r
- IN PVOID Base,\r
- IN ULONG Rva,\r
- IN OUT PIMAGE_SECTION_HEADER *LastRvaSection\r
-);\r
-\r
-typedef BOOL (__stdcall* LPFNMapAndLoad)(\r
- PSTR ImageName,\r
- PSTR DllPath,\r
- PLOADED_IMAGE LoadedImage,\r
- BOOL DotDll,\r
- BOOL ReadOnly\r
-);\r
-\r
-LPFNMapAndLoad fMapAndLoad = 0;\r
-LPFNImageRvaToVa fImageRvaToVa = 0;\r
-LPFNUnMapAndLoad fUnMapAndLoad = 0;\r
-\r
-BOOL CanUseImagehelpDll()\r
-{\r
- if( fUnMapAndLoad && fMapAndLoad && fImageRvaToVa )\r
- return TRUE;\r
-\r
- HMODULE hModule = LoadLibrary( "IMAGEHLP.DLL" );\r
- if( hModule )\r
- {\r
- fMapAndLoad = (LPFNMapAndLoad) GetProcAddress( hModule, "MapAndLoad" );\r
- fImageRvaToVa = (LPFNImageRvaToVa) GetProcAddress( hModule, "ImageRvaToVa" );\r
- fUnMapAndLoad = (LPFNUnMapAndLoad) GetProcAddress( hModule, "UnMapAndLoad" );\r
-\r
- return fUnMapAndLoad && fMapAndLoad && fImageRvaToVa;\r
- }\r
- return FALSE;\r
-}\r
-\r
-#define IRTV(x) fImageRvaToVa( li.FileHeader, li.MappedAddress, (DWORD)x, 0 )\r
-\r
BOOL WINAPI GetDllExportNames( LPCSTR pszFilename, ULONG* lpulOffset, ULONG* lpulSize )\r
{\r
- if( !CanUseImagehelpDll() )\r
+ struct IMAGEHLP *IMAGEHLP = ::IMAGEHLP;\r
+ if (IMAGEHLP == 0)\r
return FALSE;\r
\r
LOADED_IMAGE li;\r
- if( !fMapAndLoad( (LPSTR) pszFilename, NULL, &li, TRUE, TRUE ) )\r
- return FALSE;\r
-\r
- PIMAGE_EXPORT_DIRECTORY pExpDir = (PIMAGE_EXPORT_DIRECTORY)(li.FileHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress);\r
- if( !pExpDir )\r
+ if (!IMAGEHLP->MapAndLoad((LPSTR)pszFilename, NULL, &li, TRUE, TRUE))\r
return FALSE;\r
\r
- pExpDir = (PIMAGE_EXPORT_DIRECTORY)IRTV(pExpDir);\r
- if( !pExpDir->NumberOfNames )\r
- return FALSE;\r
-\r
- PDWORD* pExpNames = (LPDWORD*) pExpDir->AddressOfNames;\r
- pExpNames = (LPDWORD*)IRTV(pExpNames);\r
- ULONG ulStart = (ULONG) IRTV(*pExpNames);\r
- *lpulOffset = ulStart - (ULONG) li.MappedAddress;\r
- pExpNames += pExpDir->NumberOfNames-1;\r
- ULONG ulStop = (ULONG) IRTV(*pExpNames);\r
- *lpulSize = ulStop - ulStart + strlen((LPCSTR)ulStop); // hihi\r
-\r
- fUnMapAndLoad( &li );\r
- return TRUE;\r
+ BOOL bDone = FALSE;\r
+ if (DWORD dw = li.FileHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress)\r
+ {\r
+ PIMAGE_EXPORT_DIRECTORY pExpDir = (PIMAGE_EXPORT_DIRECTORY)\r
+ IMAGEHLP->ImageRvaToVa(li.FileHeader, li.MappedAddress, dw, 0);\r
+ DWORD firstName = pExpDir->Name;\r
+ DWORD lastName = pExpDir->Name;\r
+ if (pExpDir->NumberOfNames)\r
+ {\r
+ DWORD *pExpNames = (DWORD *)\r
+ IMAGEHLP->ImageRvaToVa(li.FileHeader, li.MappedAddress, pExpDir->AddressOfNames, 0);\r
+ pExpNames += pExpDir->NumberOfNames - 1;\r
+ lastName = *pExpNames;\r
+ }\r
+ *lpulOffset = firstName;\r
+ char *name = (char *)\r
+ IMAGEHLP->ImageRvaToVa(li.FileHeader, li.MappedAddress, lastName, 0);\r
+ *lpulSize = lastName + strlen(name) + 1 - firstName;\r
+ bDone = TRUE;\r
+ }\r
+ IMAGEHLP->UnMapAndLoad(&li);\r
+ return bDone;\r
}\r
\r
-// structures are undocumented\r
-typedef struct\r
-{\r
- // Addr +0 = start of import declaration\r
- // Addr +1,+2 are -1 always\r
- // Addr +3 = virtual name-of-dll\r
- // Addr +4 = ???\r
- ULONG Addr[5];\r
-} IMPS0;\r
-\r
BOOL WINAPI GetDllImportNames( LPCSTR pszFilename, ULONG* lpulOffset, ULONG* lpulSize )\r
{\r
- if( !CanUseImagehelpDll() )\r
+ struct IMAGEHLP *IMAGEHLP = ::IMAGEHLP;\r
+ if (IMAGEHLP == 0)\r
return FALSE;\r
\r
LOADED_IMAGE li;\r
- if( !fMapAndLoad( (LPSTR) pszFilename, NULL, &li, TRUE, TRUE ) )\r
+ if (!IMAGEHLP->MapAndLoad((LPSTR)pszFilename, NULL, &li, TRUE, TRUE))\r
return FALSE;\r
\r
- PVOID pExpDir = (LPVOID)(li.FileHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);\r
- if( !pExpDir )\r
- return FALSE;\r
-\r
- IMPS0* p = (IMPS0*)IRTV(pExpDir);\r
- pExpDir = (PVOID)IRTV(p->Addr[0]);\r
- pExpDir = (PVOID)IRTV(*(ULONG*)pExpDir);\r
- *lpulOffset = (ULONG)pExpDir - (ULONG) li.MappedAddress;\r
-\r
- LPBYTE lpbEnd = (LPBYTE) pExpDir;\r
- while(!( !lpbEnd[0] && !lpbEnd[1] && !lpbEnd[2] && !lpbEnd[3] ))\r
+ BOOL bDone = FALSE;\r
+ if (DWORD dw = li.FileHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress)\r
{\r
- lpbEnd++;\r
+ IMAGE_IMPORT_DESCRIPTOR *pDescriptor = (IMAGE_IMPORT_DESCRIPTOR *)\r
+ IMAGEHLP->ImageRvaToVa(li.FileHeader, li.MappedAddress, dw, 0);\r
+ DWORD lower = ULONG_MAX;\r
+ DWORD upper = 0;\r
+ while (pDescriptor->FirstThunk)\r
+ {\r
+ if (lower > pDescriptor->Name) //OriginalFirstThunk)\r
+ lower = pDescriptor->Name; //OriginalFirstThunk;\r
+ char *name = (char *)\r
+ IMAGEHLP->ImageRvaToVa(li.FileHeader, li.MappedAddress, pDescriptor->Name, 0);\r
+ DWORD end = pDescriptor->Name + strlen(name) + 1;\r
+ if (upper < end)\r
+ upper = end;\r
+ DWORD *pEntry = (DWORD *)\r
+ IMAGEHLP->ImageRvaToVa(li.FileHeader, li.MappedAddress, pDescriptor->FirstThunk, 0);\r
+ IMAGE_THUNK_DATA *pThunk = (IMAGE_THUNK_DATA *)\r
+ IMAGEHLP->ImageRvaToVa(li.FileHeader, li.MappedAddress, pDescriptor->OriginalFirstThunk, 0);\r
+ while (pThunk->u1.Function)\r
+ {\r
+ if ((*pEntry & 0x80000000) == 0)\r
+ {\r
+ IMAGE_IMPORT_BY_NAME *pImport = (IMAGE_IMPORT_BY_NAME *)\r
+ IMAGEHLP->ImageRvaToVa(li.FileHeader, li.MappedAddress, *pEntry, 0);\r
+ DWORD end = *pEntry + sizeof(IMAGE_IMPORT_BY_NAME) + strlen((char *)pImport->Name);\r
+ if (lower > *pEntry)\r
+ lower = *pEntry;\r
+ if (upper < end)\r
+ upper = end;\r
+ }\r
+ ++pThunk;\r
+ ++pEntry;\r
+ }\r
+ ++pDescriptor;\r
+ }\r
+ if (lower < upper)\r
+ {\r
+ *lpulOffset = lower;\r
+ *lpulSize = upper - lower;\r
+ bDone = TRUE;\r
+ }\r
}\r
- *lpulSize = (ULONG)lpbEnd - (ULONG) pExpDir;\r
-\r
- fUnMapAndLoad( &li );\r
- return TRUE;\r
+ IMAGEHLP->UnMapAndLoad(&li);\r
+ return bDone;\r
}\r
\r
void WINAPI XorEncoder( MEMORY_CODING* p )\r
{\r
case WM_INITDIALOG:\r
{\r
- HWND hListbox = GetDlgItem(hDlg, IDC_LIST1);\r
+ ShowWindow(hDlg, SW_SHOW);\r
if (PartitionInfoList.IsEmpty())\r
{\r
if (IPhysicalDrive *Drive = CreatePhysicalDriveInstance())\r
delete Drive;\r
}\r
}\r
- ENUMERATE(&PartitionInfoList, PartitionInfo, pi)\r
+ HWND hListbox = GetDlgItem(hDlg, IDC_LIST1);\r
+ LIST_ENTRY *Flink = &PartitionInfoList;\r
+ while ((Flink = Flink->Flink) != &PartitionInfoList)\r
{\r
+ PartitionInfo *pi = static_cast<PartitionInfo *>(Flink);\r
int i = SendMessage(hListbox, LB_ADDSTRING, 0, (LPARAM)(LPCSTR)pi->GetNameAsString());\r
SendMessage(hListbox, LB_SETITEMDATA, i, (LPARAM)pi);\r
}\r
#include "precomp.h"\r
-#include <stdarg.h>\r
-#include <ctype.h>\r
\r
PList::PList()\r
+: Count(0)\r
{\r
- m_pHead = m_pTail = 0;\r
- m_lCount = 0;\r
}\r
\r
PList::~PList()\r
DeleteContents();\r
}\r
\r
-bool PList::DeleteContents()\r
+void PList::DeleteContents()\r
{\r
- while( m_pHead )\r
- {\r
- PNode* pNext = m_pHead->m_pNext;\r
- m_pHead->m_pNext = 0;\r
- delete m_pHead;\r
- m_pHead = pNext;\r
- }\r
- m_pHead = m_pTail = 0;\r
- m_lCount = 0;\r
- return true;\r
-}\r
-\r
-bool PList::RemoveContents()\r
-{\r
- while( m_pHead )\r
- {\r
- PNode* pNext = m_pHead->m_pNext;\r
- m_pHead->m_pNext = m_pHead->m_pPrevious = 0;\r
- m_pHead = pNext;\r
- }\r
- m_pHead = m_pTail = 0;\r
- m_lCount = 0;\r
- return true;\r
-}\r
-\r
-bool PList::Contains( PNode* p )\r
-{\r
- bool bSuccess = false;\r
- if( p != 0 )\r
- {\r
- for( PNode* q = m_pHead; q; q = q->m_pNext )\r
- {\r
- if( q == p )\r
- {\r
- bSuccess = true;\r
- break;\r
- }\r
- }\r
- }\r
- return bSuccess;\r
-}\r
-\r
-bool PList::AddHead( PNode* p )\r
-{\r
- p->m_pPrevious = 0;\r
- m_lCount++;\r
-\r
- if( !m_pHead )\r
- {\r
- m_pHead = m_pTail = p;\r
- p->m_pNext = 0;\r
- }\r
- else\r
- {\r
- p->m_pNext = m_pHead;\r
- m_pHead->m_pPrevious = p;\r
- m_pHead = p;\r
- }\r
- return true;\r
-}\r
-\r
-bool PList::AddTail( PNode* p )\r
-{\r
- if( !m_pTail )\r
- {\r
- m_pHead = m_pTail = p;\r
- p->m_pNext = 0;\r
- m_lCount = 1;\r
- }\r
- else\r
- {\r
- m_lCount++;\r
- p->m_pNext = 0;\r
- p->m_pPrevious = m_pTail;\r
- m_pTail->m_pNext = p;\r
- m_pTail = p;\r
- }\r
- return true;\r
-}\r
-\r
-bool PList::InsertBefore( PNode* p, PNode* q )\r
-{\r
- if( !q )\r
- return AddTail( p );\r
-\r
- if( !q->m_pPrevious )\r
- return AddHead( p );\r
-\r
- ++m_lCount;\r
- p->m_pPrevious = q->m_pPrevious;\r
- p->m_pPrevious->m_pNext = p;\r
- q->m_pPrevious = p;\r
- p->m_pNext = q;\r
- return true;\r
-}\r
-\r
-bool PList::InsertAfter( PNode* p, PNode* q )\r
-{\r
- if( !q )\r
- return AddHead( p );\r
-\r
- if( !q->m_pNext )\r
- return AddTail( p );\r
-\r
- return InsertBefore( p, q->m_pNext );\r
-}\r
-\r
-void PList::Delete( PNode* p )\r
-{\r
- Remove( p );\r
- delete p;\r
-}\r
-\r
-void PList::Remove( PNode* p )\r
-{\r
- m_lCount--;\r
-\r
- if( m_pHead == p )\r
- m_pHead = p->m_pNext;\r
-\r
- if( m_pTail == p )\r
- m_pTail = p->m_pPrevious;\r
-\r
- if( p->m_pNext )\r
- p->m_pNext->m_pPrevious = p->m_pPrevious;\r
-\r
- if( p->m_pPrevious )\r
- p->m_pPrevious->m_pNext = p->m_pNext;\r
-\r
- p->m_pNext = p->m_pPrevious = 0;\r
-}\r
-\r
-bool PList::IsEmpty()\r
-{\r
- return m_pHead ? false : true;\r
-}\r
-\r
-PNode* PList::Find( long lZeroBasedIndex )\r
-{\r
- long lIndex = 0;\r
- for( PNode* p = m_pHead; p; p = p->m_pNext )\r
- if( lIndex++ == lZeroBasedIndex )\r
- return p;\r
-\r
- return 0;\r
-}\r
-\r
-bool PList::Merge( PList& s )\r
-{\r
- while( s.m_pHead )\r
- {\r
- PNode* pNode = s.m_pHead;\r
- s.Remove( s.m_pHead );\r
- AddTail( pNode );\r
- }\r
- return true;\r
-}\r
-\r
-//Reduce if your crap OS cannot handle tit - it ;(\r
-#define BUFFERSIZE_FOR_SPRINTF 10480\r
-\r
-PString::PString()\r
-{\r
- m_iStringLength = 0;\r
- m_lpszData = 0;\r
-}\r
-\r
-inline void PString::CopyStringData(const char* lpszFrom)\r
-{\r
- if( lpszFrom )\r
- {\r
- m_iStringLength = strlen( lpszFrom )+1;\r
- if( m_iStringLength < sizeof(m_szFixedBuffer) )\r
- {\r
- m_lpszData = m_szFixedBuffer;\r
- strcpy( m_lpszData, lpszFrom );\r
- }\r
- else if( m_iStringLength > 0 )\r
- {\r
- m_lpszData = new char[ m_iStringLength ];\r
- if( m_lpszData != 0 )\r
- strcpy( m_lpszData, lpszFrom );\r
- else m_iStringLength = 0;\r
- }\r
- else m_lpszData = 0;\r
- }\r
- else\r
- {\r
- m_lpszData = 0;\r
- m_iStringLength = 0;\r
- }\r
-}\r
-\r
-inline void PString::DeleteStringData()\r
-{\r
- if( (m_lpszData != m_szFixedBuffer) && m_lpszData )\r
- delete m_lpszData;\r
- m_lpszData = 0;\r
- m_iStringLength = 0;\r
+ while (Flink != this)\r
+ delete static_cast<PNode *>(Flink);\r
+ Count = 0;\r
}\r
\r
-\r
-void PString::Append( LPCSTR pString, DWORD dwSize )\r
+void PList::AddTail(PNode *p)\r
{\r
- // *NOT* optimized\r
-\r
- DWORD dwCombinedLength = m_iStringLength + dwSize;\r
- if( dwCombinedLength && dwSize )\r
- {\r
- char* lpszData = new char[ dwCombinedLength + 2 ];\r
- if( m_lpszData && m_iStringLength )\r
- strcpy( lpszData, m_lpszData );\r
- strncpy( lpszData+m_iStringLength, pString, dwSize );\r
- lpszData[dwCombinedLength] = 0;\r
- DeleteStringData();\r
- CopyStringData(lpszData);\r
- delete lpszData;\r
-\r
- }\r
-}\r
-\r
-\r
-PString::PString( const char* lpszArgument )\r
-{\r
- CopyStringData( lpszArgument );\r
-}\r
-\r
-PString::PString( const PString& objectSrc )\r
-{\r
- CopyStringData( objectSrc.m_lpszData );\r
-}\r
-\r
-PString::PString( int, const char* szFormat, ... )\r
-{\r
- if( szFormat )\r
- {\r
- char buffer[BUFFERSIZE_FOR_SPRINTF];\r
- va_list argptr;\r
- va_start( argptr, szFormat );\r
- ::vsprintf(buffer,szFormat,argptr);\r
- buffer[BUFFERSIZE_FOR_SPRINTF-1]=0;\r
- CopyStringData( buffer );\r
- }\r
- else\r
- {\r
- m_iStringLength = 0;\r
- m_lpszData = 0;\r
- }\r
-}\r
-\r
-PString::~PString()\r
-{\r
- DeleteStringData();\r
-}\r
-\r
-void PString::sprintf( const char* szFormat, ... )\r
-{\r
- DeleteStringData();\r
- m_lpszData = 0;\r
- m_iStringLength = 0;\r
- if( szFormat )\r
- {\r
- char buffer[BUFFERSIZE_FOR_SPRINTF];\r
- va_list argptr;\r
- va_start( argptr, szFormat );\r
- ::vsprintf(buffer,szFormat,argptr);\r
- buffer[BUFFERSIZE_FOR_SPRINTF-1]=0;\r
- CopyStringData( buffer );\r
- }\r
-}\r
-\r
-void PString::vsprintf( const char* szFormat, va_list args )\r
-{\r
- DeleteStringData();\r
- m_lpszData = 0;\r
- m_iStringLength = 0;\r
- if( szFormat )\r
- {\r
- char buffer[BUFFERSIZE_FOR_SPRINTF];\r
- ::vsprintf(buffer,szFormat,args);\r
- buffer[BUFFERSIZE_FOR_SPRINTF-1]=0;\r
- CopyStringData( buffer );\r
- }\r
-}\r
-\r
-PString& PString::operator=( const char* objectSrc )\r
-{\r
- if( objectSrc != m_lpszData )\r
- {\r
- DeleteStringData();\r
- CopyStringData( objectSrc );\r
- }\r
- return *this;\r
-}\r
-\r
-PString& PString::operator=( PString& objectSrc )\r
-{\r
- if( this != &objectSrc )\r
- {\r
- DeleteStringData();\r
- CopyStringData( objectSrc.m_lpszData );\r
- }\r
- return *this;\r
-}\r
-\r
-PString GetLastErrorString()\r
-{\r
- PString strResult;\r
- LPVOID lpMsgBuf = NULL;\r
-\r
- if( FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,\r
- GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ) && lpMsgBuf )\r
- {\r
- strResult = (LPCSTR) lpMsgBuf;\r
- LocalFree( lpMsgBuf );\r
- LPSTR p = strResult;\r
- while( isspace(p[strlen(p)-1]) )\r
- p[strlen(p)-1] = 0;\r
- }\r
- return strResult;\r
+ p->Flink = Blink->Flink;\r
+ p->Blink = Blink;\r
+ Blink->Flink = p;\r
+ Blink = p;\r
+ ++Count;\r
}\r
\r
void TRACE(const char* pszFormat,...)\r
#ifndef gtools_h\r
#define gtools_h\r
\r
-#define THIS_BASED_ADDRESS(__MEMBERVARIABLE__) \\r
- (LPBYTE)(((LPBYTE)(&(__MEMBERVARIABLE__)))-((LPBYTE)this))\r
-\r
-#define ENUMERATE(l,c,o) for(c* o=(c*)((PList*)(l))->m_pHead;o;o=(c*)((PNode*)o)->m_pNext)\r
-#define ENUMERATE_BACKWARDS(l,c,o) for(c* o=(c*)((PList*)(l))->m_pTail;o;o=(c*)((PNode*)o)->m_pPrevious )\r
-#define ENUMERATE_POINTER(l,c,o) for(o=(c*)((PList*)(l))->m_pHead;o;o=(c*)((PNode*)o)->m_pNext)\r
-#define ENUMERATE_POINTER_BACKWARDS(l,c,o) for(o=(c*)((PList*)(l))->m_pTail;o;o=(c*)((PNode*)o)->m_pPrevious)\r
-\r
-class PNode\r
+class PNode : public LIST_ENTRY\r
{\r
public:\r
- PNode(): m_pNext(0), m_pPrevious(0) { }\r
-\r
- virtual ~PNode() { }\r
-\r
- PNode* m_pNext;\r
- PNode* m_pPrevious;\r
+ PNode()\r
+ {\r
+ Flink = Blink = this;\r
+ }\r
+ virtual ~PNode()\r
+ {\r
+ Blink->Flink = Flink;\r
+ Flink->Blink = Blink;\r
+ }\r
+private:\r
+ PNode(const PNode &); // disallow copy construction\r
+ void operator=(const PNode &); // disallow assignment\r
};\r
\r
-typedef unsigned long ULONG;\r
-\r
class PList : public PNode\r
{\r
public:\r
PList();\r
virtual ~PList();\r
- virtual bool DeleteContents();\r
- virtual bool RemoveContents();\r
- PNode* Find( long lZeroBasedIndex );\r
- bool Contains(PNode* pNode);\r
- bool AddHead(PNode* pNode);\r
- bool AddTail(PNode* pNode);\r
- void Remove(PNode* pNode);\r
- void Delete(PNode* pNode);\r
- bool InsertBefore(PNode *pInsert,PNode* pBeforeThis);\r
- bool InsertAfter(PNode* pInsert, PNode* pAfterThis);\r
- bool Swap(PNode* pNodeA,PNode* pNodeB);\r
- bool Move(PNode* pNodeA,PNode* pNodeB);\r
- bool IsEmpty();\r
- bool Merge( PList& objectSource );\r
-\r
- PNode* m_pHead;\r
- PNode* m_pTail;\r
- long m_lCount;\r
+ void AddTail(PNode *);\r
+ bool IsEmpty()\r
+ {\r
+ return Flink == this;\r
+ }\r
+ void DeleteContents();\r
+ long Count;\r
};\r
\r
-class PString : public PNode\r
+template<size_t n>\r
+class PString\r
{\r
+ TCHAR buffer[n];\r
public:\r
- PString();\r
- PString( const char* szFormat );\r
- PString( int, const char* szFormat, ... );\r
- PString( const PString& objectSrc );\r
- virtual ~PString();\r
- void sprintf( const char* szFormat, ... );\r
- void vsprintf( const char* szFormat, va_list args );\r
- PString& operator=( const char* objectSrc );\r
- PString& operator=( PString& objectSrc );\r
-\r
- void Append( LPCSTR pString, DWORD dwSize );\r
-\r
- inline operator char*()\r
- {\r
- return m_lpszData;\r
- }\r
-\r
- /*inline operator const char*() const\r
- {\r
- return m_lpszData;\r
- }*/\r
-\r
- inline int GetLength()\r
- {\r
- return m_iStringLength;\r
- }\r
-\r
-protected:\r
- void DeleteStringData();\r
- void CopyStringData(const char* lpszFrom);\r
-\r
- int m_iStringLength;\r
- char* m_lpszData;\r
- char m_szFixedBuffer[256];\r
+ operator LPTSTR() { return buffer; }\r
};\r
\r
-#define IsEmptyString(x) (!(x)||!*(x))\r
-PString GetLastErrorString();\r
-\r
-\r
void TRACE(const char* pszFormat,...);\r
\r
-\r
#endif // gtools_h\r
-\r
\r
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
\r
-CFG=heksedit - Win32 Release\r
+CFG=heksedit - Win32 Debug\r
!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE\r
!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl\r
!MESSAGE \r
!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben\r
!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel:\r
!MESSAGE \r
-!MESSAGE NMAKE /f "heksedit.mak" CFG="heksedit - Win32 Release"\r
+!MESSAGE NMAKE /f "heksedit.mak" CFG="heksedit - Win32 Debug"\r
!MESSAGE \r
!MESSAGE Für die Konfiguration stehen zur Auswahl:\r
!MESSAGE \r
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386\r
# ADD LINK32 version.lib comctl32.lib wininet.lib shlwapi.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386\r
# SUBTRACT LINK32 /pdb:none\r
+# Begin Special Build Tool\r
+IntDir=.\../../BuildTmp/heksedit/Release\r
+TargetPath=\svnroot2\trunk\Build\heksedit\Release\heksedit.dll\r
+SOURCE="$(InputPath)"\r
+PreLink_Cmds=PreLink.bat $(IntDir) $(TargetPath)\r
+# End Special Build Tool\r
\r
!ELSEIF "$(CFG)" == "heksedit - Win32 Debug"\r
\r
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept\r
# ADD LINK32 imagehlp.lib version.lib comctl32.lib wininet.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib shlwapi.lib /nologo /subsystem:windows /dll /incremental:no /debug /machine:I386 /pdbtype:sept\r
# SUBTRACT LINK32 /nodefaultlib\r
+# Begin Special Build Tool\r
+IntDir=.\../../BuildTmp/heksedit/Debug\r
+TargetPath=\svnroot2\trunk\Build\heksedit\Debug\heksedit.dll\r
+SOURCE="$(InputPath)"\r
+PreLink_Cmds=PreLink.bat $(IntDir) $(TargetPath)\r
+# End Special Build Tool\r
\r
!ENDIF \r
\r
# End Source File\r
# Begin Source File\r
\r
+SOURCE=.\DllProxies.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
SOURCE=.\EnterDecimalValueDlg.cpp\r
# End Source File\r
# Begin Source File\r
# End Source File\r
# Begin Source File\r
\r
+SOURCE=.\LangArray.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
SOURCE=.\LoadHexFile.cpp\r
# End Source File\r
# Begin Source File\r
# End Source File\r
# Begin Source File\r
\r
+SOURCE=.\DllProxies.h\r
+# End Source File\r
+# Begin Source File\r
+\r
SOURCE=.\gktools.h\r
# End Source File\r
# Begin Source File\r
# End Source File\r
# Begin Source File\r
\r
+SOURCE=.\LangArray.h\r
+# End Source File\r
+# Begin Source File\r
+\r
SOURCE=.\LoadHexFile.h\r
# End Source File\r
# Begin Source File\r
\r
SOURCE=.\version.h\r
# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\VersionData.h\r
+# End Source File\r
# End Group\r
# Begin Group "Resource Files"\r
\r
+// This is frhed vCURRENT_VERSION.SUB_RELEASE_NO\r
+#include "version.h"\r
+\r
class IHexEditorWindow\r
{\r
public:\r
virtual void STDMETHODCALLTYPE CMD_edit_clear() = 0;\r
virtual BOOL STDMETHODCALLTYPE select_next_diff(BOOL bFromStart) = 0;\r
virtual BOOL STDMETHODCALLTYPE select_prev_diff(BOOL bFromEnd) = 0;\r
+ virtual BOOL STDMETHODCALLTYPE load_lang(LANGID) = 0;\r
};\r
-//Microsoft Developer Studio generated resource script.\r
+// Microsoft Visual C++ generated resource script.\r
//\r
#include "resource.h"\r
\r
#undef APSTUDIO_READONLY_SYMBOLS\r
\r
/////////////////////////////////////////////////////////////////////////////\r
-// Deutsch (Deutschland) resources\r
+// English (U.S.) resources\r
\r
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)\r
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r
#ifdef _WIN32\r
-LANGUAGE LANG_GERMAN, SUBLANG_GERMAN\r
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US\r
#pragma code_page(1252)\r
#endif //_WIN32\r
\r
// Menu\r
//\r
\r
-IDR_MAINMENU MENU DISCARDABLE \r
+IDR_MAINMENU MENU \r
BEGIN\r
POPUP "&File"\r
BEGIN\r
BEGIN\r
MENUITEM "&Help topics...\tF1", IDM_HELP_TOPICS\r
MENUITEM SEPARATOR\r
- MENUITEM "&About heksedit...", IDM_ABOUT\r
+ MENUITEM "&About frhed...", IDM_ABOUT\r
END\r
END\r
\r
-IDR_CONTEXTMENU MENU DISCARDABLE \r
+IDR_CONTEXTMENU MENU \r
BEGIN\r
POPUP "0"\r
BEGIN\r
// TEXTINCLUDE\r
//\r
\r
-1 TEXTINCLUDE DISCARDABLE \r
+1 TEXTINCLUDE \r
BEGIN\r
"resource.h\0"\r
END\r
\r
-2 TEXTINCLUDE DISCARDABLE \r
+2 TEXTINCLUDE \r
BEGIN\r
"#include ""winres.h""\r\n"\r
"\0"\r
END\r
\r
-3 TEXTINCLUDE DISCARDABLE \r
+3 TEXTINCLUDE \r
BEGIN\r
- "\r\n"\r
+ "#include ""version.rc""\r\n"\r
"\0"\r
END\r
\r
// Accelerator\r
//\r
\r
-IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE \r
+IDR_ACCELERATOR1 ACCELERATORS \r
BEGIN\r
"A", IDM_SELECT_ALL, VIRTKEY, CONTROL, NOINVERT\r
"A", IDM_ADOPT_COLOURS, VIRTKEY, SHIFT, CONTROL, \r
// Dialog\r
//\r
\r
-IDD_GOTODIALOG DIALOG DISCARDABLE 0, 0, 244, 66\r
-STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_GOTODIALOG DIALOGEX 0, 0, 244, 66\r
+STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | \r
+ WS_SYSMENU\r
CAPTION "Go to"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Start with ""+"" or ""-"" (minus) for relative jump.",\r
IDC_STATIC,7,10,139,8\r
PUSHBUTTON "Cancel",IDCANCEL,187,38,50,14\r
END\r
\r
-IDD_FINDDIALOG DIALOG DISCARDABLE 0, 0, 279, 138\r
-STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_FINDDIALOG DIALOGEX 0, 0, 279, 138\r
+STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | \r
+ WS_SYSMENU\r
CAPTION "Find"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Find what: (please refer to the online help's Using the Special Syntax section for searching for binary values)",\r
IDC_STATIC,7,7,265,16\r
PUSHBUTTON "Cancel",IDCANCEL,222,117,50,14\r
END\r
\r
-IDD_ABOUTDIALOG DIALOG DISCARDABLE 0, 0, 212, 229\r
-STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION\r
-CAPTION "About heksedit"\r
-FONT 8, "MS Sans Serif"\r
+IDD_ABOUTDIALOG DIALOGEX 0, 0, 212, 191\r
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | \r
+ WS_CAPTION\r
+CAPTION "About frhed"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
- DEFPUSHBUTTON "OK",IDOK,80,212,50,14\r
- CTEXT "heksedit 0.00",IDC_ST_VERSION,6,6,198,8\r
- CTEXT "A humble effort by Jochen Neubeck\nto create a dll version of Raihan Kibria's frhed\nfor use as a control in other applications",\r
- IDC_STATIC,6,20,198,24\r
- CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,6,54,198,1\r
- ICON 109,IDC_STATIC,7,66,20,20\r
- LTEXT "frhed - free hex editor for 32-bit Windows\nVersion 1.1.xxx\n(c) Raihan Kibria 2002\nFill with by Pabs Dec 1999\r\nDisk-Access, Code/Decode Extension and some other bits by Gerson Kurz.",\r
- IDC_STATIC1,36,64,167,53\r
- LTEXT "eMail:",IDC_STATIC,5,112,20,8\r
- EDITTEXT IDC_EDIT1,6,122,198,25,ES_MULTILINE | ES_AUTOHSCROLL | \r
+ DEFPUSHBUTTON "OK",IDOK,80,171,50,14\r
+ ICON 32512,IDC_APPICON,7,9,20,20\r
+ LTEXT "",IDC_STATIC1,37,7,167,66\r
+ LTEXT "eMail:",IDC_STATIC,5,71,20,8\r
+ EDITTEXT IDC_EDIT1,6,81,198,25,ES_MULTILINE | ES_AUTOHSCROLL | \r
ES_READONLY\r
- GROUPBOX "Homepage",IDC_STATIC,6,152,198,52\r
- EDITTEXT IDC_EDIT2,22,162,167,12,ES_AUTOHSCROLL | ES_READONLY\r
+ EDITTEXT IDC_EDIT2,22,121,167,12,ES_AUTOHSCROLL | ES_READONLY\r
+ GROUPBOX "Homepage",IDC_STATIC,6,111,198,52\r
PUSHBUTTON "Open frhed's homepage in Internet browser",IDC_BUTTON1,\r
- 30,181,150,14\r
+ 30,140,150,14\r
END\r
\r
-IDD_HEXDUMPDIALOG DIALOG DISCARDABLE 0, 0, 163, 161\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_HEXDUMPDIALOG DIALOGEX 0, 0, 163, 161\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Export hexdump"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Use hexadecimal notation without prefix.",IDC_STATIC,7,\r
7,128,8\r
PUSHBUTTON "Cancel",IDCANCEL,105,90,50,14\r
END\r
\r
-IDD_DECIMALDIALOG DIALOG DISCARDABLE 0, 0, 204, 111\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_DECIMALDIALOG DIALOGEX 0, 0, 204, 111\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Enter decimal value"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Enter decimal value:",IDC_STATIC,7,7,65,8\r
EDITTEXT IDC_EDIT1,7,16,97,12,ES_AUTOHSCROLL\r
END\r
\r
IDD_PASTEDIALOG DIALOGEX 0, 0, 291, 145\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Paste with dialogue"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Clipboard content (text):",IDC_STATIC,7,7,76,8\r
EDITTEXT IDC_EDIT1,7,18,277,65,ES_MULTILINE | WS_VSCROLL,\r
PUSHBUTTON "Cancel",IDCANCEL,234,112,50,14\r
END\r
\r
-IDD_CUTDIALOG DIALOG DISCARDABLE 0, 0, 169, 159\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_CUTDIALOG DIALOGEX 0, 0, 169, 159\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Cut"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Start cutting at offset: (prefix offsets with x for hex)",\r
IDC_STATIC,7,7,157,8\r
PUSHBUTTON "Cancel",IDCANCEL,112,138,50,14\r
END\r
\r
-IDD_COPYDIALOG DIALOG DISCARDABLE 0, 0, 158, 154\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_COPYDIALOG DIALOGEX 0, 0, 158, 154\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Copy"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Prefix offsets with x for hex.",IDC_STATIC,7,7,86,8\r
LTEXT "Start copying at offset:",IDC_STATIC,7,20,72,8\r
PUSHBUTTON "Cancel",IDCANCEL,82,131,50,14\r
END\r
\r
-IDD_VIEWSETTINGSDIALOG DIALOG DISCARDABLE 0, 0, 229, 167\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_VIEWSETTINGSDIALOG DIALOGEX 0, 0, 229, 167\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "View Settings"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Number of bytes to display per line:",IDC_STATIC,7,7,\r
110,8\r
PUSHBUTTON "Cancel",IDCANCEL,171,97,50,14\r
END\r
\r
-IDD_APPENDDIALOG DIALOG DISCARDABLE 0, 0, 192, 46\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_APPENDDIALOG DIALOGEX 0, 0, 192, 46\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Append"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Append how many bytes to end of file:",IDC_STATIC,7,7,\r
121,8\r
END\r
\r
IDD_MANIPBITSDIALOG DIALOGEX 0, 0, 257, 84\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Manipulate bits"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "statictext",IDC_STATIC1,7,7,243,8\r
CONTROL "Bit 7",IDC_CHECK8,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,\r
PUSHBUTTON "Cancel",IDCANCEL,132,63,50,14\r
END\r
\r
-IDD_CHARACTERSETDIALOG DIALOG DISCARDABLE 0, 0, 172, 81\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_CHARACTERSETDIALOG DIALOGEX 0, 0, 172, 81\r
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | \r
+ WS_SYSMENU\r
CAPTION "Character Set"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
GROUPBOX "Choose character set",IDC_STATIC,7,7,101,40\r
CONTROL "ANSI",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON | WS_GROUP,\r
25,19,33,10\r
CONTROL "OEM",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,25,32,32,10\r
- LTEXT "Font size in points:",IDC_STATIC,7,53,59,8\r
+ LTEXT "Font size in points:",IDC_STATIC,7,53,101,8\r
EDITTEXT IDC_EDIT1,7,62,65,12,ES_AUTOHSCROLL | ES_NUMBER\r
DEFPUSHBUTTON "OK",IDOK,115,24,50,14\r
PUSHBUTTON "Cancel",IDCANCEL,115,41,50,14\r
END\r
\r
-IDD_CHOOSEDIFFDIALOG DIALOG DISCARDABLE 0, 0, 258, 231\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_CHOOSEDIFFDIALOG DIALOGEX 0, 0, 258, 231\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Choose area of difference to display"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "file_sizes",IDC_STATIC2,7,7,244,8\r
LTEXT "number_of_diffs",IDC_STATIC1,7,18,244,8\r
PUSHBUTTON "Copy above list",IDCOPY,187,210,64,14\r
END\r
\r
-IDD_BINARYMODEDIALOG DIALOG DISCARDABLE 0, 0, 183, 58\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_BINARYMODEDIALOG DIALOGEX 0, 0, 183, 58\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Binary mode setting"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
GROUPBOX "Choose binary mode",IDC_STATIC,7,7,104,44\r
CONTROL "Little-endian (Intel)",IDC_RADIO1,"Button",\r
PUSHBUTTON "Cancel",IDCANCEL,126,29,50,14\r
END\r
\r
-IDD_SELECT_BLOCK_DIALOG DIALOG DISCARDABLE 0, 0, 207, 68\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_SELECT_BLOCK_DIALOG DIALOGEX 0, 0, 207, 68\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Select block"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Offset of start of selection: (prefix x for hex)",\r
IDC_STATIC,7,7,134,8\r
PUSHBUTTON "Cancel",IDCANCEL,150,35,50,14\r
END\r
\r
-IDD_ADDBMK_DIALOG DIALOG DISCARDABLE 0, 0, 193, 65\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_ADDBMK_DIALOG DIALOGEX 0, 0, 193, 65\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Add bookmark"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Offset of bookmark: (prefix x for hex)",IDC_STATIC,7,7,\r
114,8\r
PUSHBUTTON "Cancel",IDCANCEL,136,33,50,14\r
END\r
\r
-IDD_REMOVEBMK_DIALOG DIALOG DISCARDABLE 0, 0, 209, 167\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_REMOVEBMK_DIALOG DIALOGEX 0, 0, 209, 167\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Remove bookmark"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Remove which bookmark:",IDC_STATIC,7,7,84,8\r
LISTBOX IDC_LIST1,7,17,195,123,LBS_SORT | LBS_NOINTEGRALHEIGHT | \r
PUSHBUTTON "Cancel",IDCANCEL,109,146,50,14\r
END\r
\r
-IDD_OPEN_PARTIAL_DIALOG DIALOG DISCARDABLE 0, 0, 221, 135\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_OPEN_PARTIAL_DIALOG DIALOGEX 0, 0, 221, 135\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Open partially"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
GROUPBOX "Start opening partially...",IDC_STATIC,7,7,207,60\r
CONTROL "At offset relative to beginning of file: (prefix x for hex)",\r
PUSHBUTTON "Cancel",IDCANCEL,110,115,50,14\r
END\r
\r
-IDD_FASTPASTE_DIALOG DIALOG DISCARDABLE 0, 0, 267, 146\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_FASTPASTE_DIALOG DIALOGEX 0, 0, 267, 146\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Paste"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
GROUPBOX "Paste mode",IDC_STATIC,7,7,64,35\r
CONTROL "Overwrite",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON | \r
PUSHBUTTON "Refresh",IDC_REFRESH,210,45,50,15\r
END\r
\r
-IDD_TMPL_RESULT_DIALOG DIALOG DISCARDABLE 0, 0, 304, 175\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_TMPL_RESULT_DIALOG DIALOGEX 0, 0, 304, 175\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Template"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Result of template application:",IDC_STATIC,7,7,96,8\r
EDITTEXT IDC_EDIT1,7,17,290,132,ES_MULTILINE | ES_AUTOVSCROLL | \r
PUSHBUTTON "Cancel",IDCANCEL,154,154,50,14\r
END\r
\r
-IDD_REPLACEDIALOG DIALOG DISCARDABLE 0, 0, 208, 226\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_REPLACEDIALOG DIALOGEX 0, 0, 208, 226\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Replace"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Find what:",IDC_STATIC,7,7,34,8\r
EDITTEXT IDC_TO_REPLACE_EDIT,7,16,194,62,ES_MULTILINE | \r
PUSHBUTTON "Cancel",IDCANCEL,147,205,54,14\r
END\r
\r
-IDD_FILL_WITH DIALOG DISCARDABLE 0, 0, 382, 103\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_FILL_WITH DIALOGEX 0, 0, 382, 103\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Dialog"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Fill selection with:",IDC_STATIC,5,5,56,8\r
COMBOBOX IDC_TYPE,65,5,35,35,CBS_DROPDOWNLIST | WS_VSCROLL | \r
EDITTEXT IDC_R,325,84,50,12,ES_AUTOHSCROLL | ES_READONLY\r
END\r
\r
-IDD_CHANGEINST DIALOG DISCARDABLE 0, 0, 247, 76\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_CHANGEINST DIALOGEX 0, 0, 247, 76\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Change Instance"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Load the following instance data:",IDC_STATIC,5,5,105,\r
15,SS_CENTERIMAGE\r
IDC_STATIC,5,45,235,25\r
END\r
\r
-IDD_ENCODE_DECODE_DIALOG DIALOG DISCARDABLE 0, 0, 236, 169\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_ENCODE_DECODE_DIALOG DIALOGEX 0, 0, 236, 169\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Encode / Decode Data"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Algorithms:",IDC_STATIC,4,4,172,8\r
LISTBOX IDC_LIST1,4,16,172,108,LBS_SORT | LBS_NOINTEGRALHEIGHT | \r
PUSHBUTTON "Cancel",IDCANCEL,180,20,50,14\r
END\r
\r
-IDD_OPEN_DRIVE_DIALOG DIALOG DISCARDABLE 0, 0, 236, 133\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_OPEN_DRIVE_DIALOG DIALOGEX 0, 0, 236, 133\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Open Drive"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LISTBOX IDC_LIST1,4,4,172,124,LBS_SORT | LBS_NOINTEGRALHEIGHT | \r
WS_VSCROLL | WS_TABSTOP\r
PUSHBUTTON "Cancel",IDCANCEL,180,20,50,14\r
END\r
\r
-IDD_GOTO_TRACK_DIALOG DIALOG DISCARDABLE 0, 0, 244, 133\r
-STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_GOTO_TRACK_DIALOG DIALOGEX 0, 0, 244, 133\r
+STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | \r
+ WS_SYSMENU\r
CAPTION "Go to Track"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Drive Information:",-1,4,4,168,12\r
EDITTEXT IDC_EDIT3,4,20,172,80,ES_MULTILINE | ES_AUTOHSCROLL | \r
END\r
\r
IDD_SHORTCUTS DIALOGEX 0, 0, 217, 166\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Shortcuts"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Paths of shortcuts to frhed:",IDC_STATIC,5,5,86,8\r
CONTROL "Links to frhed",IDC_LIST,"SysListView32",LVS_REPORT | \r
END\r
\r
IDD_UPGRADE DIALOGEX 0, 0, 377, 242\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Upgrade"\r
-FONT 8, "MS Sans Serif", 0, 0, 0x1\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Version list:",IDC_STATIC,5,5,36,8\r
CONTROL "Versions",IDC_VERS,"SysListView32",LVS_REPORT | \r
IDC_STATIC,45,215,270,25\r
END\r
\r
-IDD_MOVE_COPY DIALOG DISCARDABLE 0, 0, 163, 156\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_MOVE_COPY DIALOGEX 0, 0, 163, 156\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Move/Copy bytes"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Offset of one end of the block:",IDC_STATIC,5,15,97,8,\r
SS_CENTERIMAGE\r
END\r
\r
IDD_DRAG_DROP DIALOGEX 0, 0, 202, 121\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "Drag-drop"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
LTEXT "Clipboard format[s] to use:",-1,5,5,82,8\r
CONTROL "List1",IDC_LIST,"SysListView32",LVS_REPORT | \r
10\r
END\r
\r
-IDD_DRAG_DROP_OPTIONS DIALOG DISCARDABLE 0, 0, 312, 116\r
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+IDD_DRAG_DROP_OPTIONS DIALOGEX 0, 0, 312, 116\r
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
CAPTION "OLE Drag-drop options"\r
-FONT 8, "MS Sans Serif"\r
+FONT 8, "MS Shell Dlg", 0, 0, 0x0\r
BEGIN\r
GROUPBOX "General",IDC_STATIC,5,0,145,75\r
CONTROL "Enable drop input",IDC_ENABLE_DROP,"Button",\r
//\r
\r
#ifdef APSTUDIO_INVOKED\r
-GUIDELINES DESIGNINFO DISCARDABLE \r
+GUIDELINES DESIGNINFO \r
BEGIN\r
IDD_GOTODIALOG, DIALOG\r
BEGIN\r
LEFTMARGIN, 7\r
RIGHTMARGIN, 205\r
TOPMARGIN, 7\r
- BOTTOMMARGIN, 222\r
+ BOTTOMMARGIN, 192\r
END\r
\r
IDD_HEXDUMPDIALOG, DIALOG\r
END\r
#endif // APSTUDIO_INVOKED\r
\r
-\r
-#ifndef _MAC\r
-/////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Version\r
-//\r
-\r
-VS_VERSION_INFO VERSIONINFO\r
- FILEVERSION 1,1,0,0\r
- PRODUCTVERSION 1,1,0,0\r
- FILEFLAGSMASK 0x3fL\r
-#ifdef _DEBUG\r
- FILEFLAGS 0x23L\r
-#else\r
- FILEFLAGS 0x22L\r
-#endif\r
- FILEOS 0x40004L\r
- FILETYPE 0x1L\r
- FILESUBTYPE 0x0L\r
-BEGIN\r
- BLOCK "StringFileInfo"\r
- BEGIN\r
- BLOCK "040704b0"\r
- BEGIN\r
- VALUE "Comments", "Homepage: http://www.kibria.de, http://zip.to/pabs3\0"\r
- VALUE "CompanyName", "(c) Raihan Kibria 2000\0"\r
- VALUE "FileDescription", "heksedit - free hex editor dll 1.1.0\0"\r
- VALUE "FileVersion", "1, 1, 0\0"\r
- VALUE "InternalName", "heksedit\0"\r
- VALUE "LegalCopyright", "GNU General Public License v2.0\0"\r
- VALUE "LegalTrademarks", "\0"\r
- VALUE "OriginalFilename", "heksedit.dll\0"\r
- VALUE "PrivateBuild", "\0"\r
- VALUE "ProductName", "frhed\0"\r
- VALUE "ProductVersion", "1, 1, 0\0"\r
- VALUE "SpecialBuild", "\0"\r
- END\r
- END\r
- BLOCK "VarFileInfo"\r
- BEGIN\r
- VALUE "Translation", 0x407, 1200\r
- END\r
-END\r
-\r
-#endif // !_MAC\r
-\r
-\r
/////////////////////////////////////////////////////////////////////////////\r
//\r
// Bitmap\r
//\r
\r
-IDB_TOOLBAR BITMAP DISCARDABLE "Toolbar.bmp"\r
+IDB_TOOLBAR BITMAP "res/Toolbar.bmp"\r
\r
/////////////////////////////////////////////////////////////////////////////\r
//\r
// String Table\r
//\r
\r
-STRINGTABLE DISCARDABLE \r
+STRINGTABLE \r
BEGIN\r
IDM_OPEN "Open"\r
IDM_NEW "New"\r
END\r
\r
-STRINGTABLE DISCARDABLE \r
+STRINGTABLE \r
BEGIN\r
IDM_SAVE "Save"\r
IDM_FIND "Find"\r
IDM_EDIT_CUT "Cut"\r
END\r
\r
-STRINGTABLE DISCARDABLE \r
+STRINGTABLE \r
BEGIN\r
IDM_REPLACE "Replace"\r
END\r
\r
-STRINGTABLE DISCARDABLE \r
+STRINGTABLE \r
BEGIN\r
ID_DISK_GOTONEXTTRACK "Goto next sector"\r
ID_DISK_GOTOPREVIOUSTRACK "Goto previous sector"\r
ID_DISK_GOTOLASTTRACK "Goto last sector"\r
END\r
\r
-#endif // Deutsch (Deutschland) resources\r
+#endif // Englisch (USA) resources\r
/////////////////////////////////////////////////////////////////////////////\r
\r
\r
//\r
// Generated from the TEXTINCLUDE 3 resource.\r
//\r
-\r
+#include "version.rc"\r
\r
/////////////////////////////////////////////////////////////////////////////\r
#endif // not APSTUDIO_INVOKED\r
<Configurations>\r
<Configuration\r
Name="Debug|Win32"\r
- OutputDirectory="..\..\Build\Heksedit\Debug"\r
- IntermediateDirectory="..\..\BuildTmp\heksedit\Debug"\r
+ OutputDirectory=".\..\..\Build\heksedit\$(ConfigurationName)"\r
+ IntermediateDirectory=".\..\..\BuildTmp\heksedit\$(ConfigurationName)"\r
ConfigurationType="2"\r
UseOfMFC="0"\r
ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
+ StringPooling="TRUE"\r
+ ExceptionHandling="FALSE"\r
RuntimeLibrary="3"\r
UsePrecompiledHeader="3"\r
PrecompiledHeaderThrough="precomp.h"\r
- PrecompiledHeaderFile=".\../../BuildTmp/heksedit/Debug/heksedit.pch"\r
- AssemblerListingLocation=".\../../BuildTmp/heksedit/Debug/"\r
- ObjectFile=".\../../BuildTmp/heksedit/Debug/"\r
- ProgramDataBaseFileName=".\../../BuildTmp/heksedit/Debug/"\r
+ PrecompiledHeaderFile=".\..\..\BuildTmp\heksedit\$(ConfigurationName)\heksedit.pch"\r
+ AssemblerListingLocation=".\..\..\BuildTmp\heksedit\$(ConfigurationName)\"\r
+ ObjectFile=".\..\..\BuildTmp\heksedit\$(ConfigurationName)\"\r
+ ProgramDataBaseFileName=".\..\..\BuildTmp\heksedit\$(ConfigurationName)\"\r
BrowseInformation="1"\r
WarningLevel="3"\r
SuppressStartupBanner="TRUE"\r
<Tool\r
Name="VCLinkerTool"\r
AdditionalDependencies="imagehlp.lib version.lib comctl32.lib wininet.lib odbc32.lib odbccp32.lib shlwapi.lib"\r
- OutputFile="../../Build/heksedit/Debug/heksedit.dll"\r
+ OutputFile="..\..\Build\heksedit\$(ConfigurationName)\heksedit.dll"\r
LinkIncremental="1"\r
SuppressStartupBanner="TRUE"\r
GenerateDebugInformation="TRUE"\r
- ProgramDatabaseFile="../../Build/heksedit/Debug/heksedit.pdb"\r
+ ProgramDatabaseFile="..\..\Build\heksedit\$(ConfigurationName)\heksedit.pdb"\r
SubSystem="2"\r
- ImportLibrary=".\../../Build/MergeDebug/heksedit.lib"\r
+ ImportLibrary=".\..\..\Build\heksedit\$(ConfigurationName)\heksedit.lib"\r
TargetMachine="1"/>\r
<Tool\r
Name="VCMIDLTool"\r
MkTypLibCompatible="TRUE"\r
SuppressStartupBanner="TRUE"\r
TargetEnvironment="1"\r
- TypeLibraryName=".\../../Build/MergeDebug/heksedit.tlb"\r
+ TypeLibraryName=".\..\..\Build\heksedit\$(ConfigurationName)\heksedit.tlb"\r
HeaderFileName=""/>\r
<Tool\r
Name="VCPostBuildEventTool"\r
<Tool\r
Name="VCPreBuildEventTool"/>\r
<Tool\r
- Name="VCPreLinkEventTool"/>\r
+ Name="VCPreLinkEventTool"\r
+ CommandLine="PreLink.bat $(IntDir) $(TargetPath)"/>\r
<Tool\r
Name="VCResourceCompilerTool"\r
PreprocessorDefinitions="_DEBUG"\r
</Configuration>\r
<Configuration\r
Name="Release|Win32"\r
- OutputDirectory="..\..\Build\Heksedit\Release"\r
- IntermediateDirectory="..\..\BuildTmp\heksedit\Release"\r
+ OutputDirectory=".\..\..\Build\heksedit\$(ConfigurationName)"\r
+ IntermediateDirectory=".\..\..\BuildTmp\heksedit\$(ConfigurationName)"\r
ConfigurationType="2"\r
UseOfMFC="0"\r
ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
+ StringPooling="TRUE"\r
+ ExceptionHandling="FALSE"\r
RuntimeLibrary="2"\r
UsePrecompiledHeader="3"\r
PrecompiledHeaderThrough="precomp.h"\r
- PrecompiledHeaderFile=".\../../BuildTmp/heksedit/Release/heksedit.pch"\r
- AssemblerListingLocation=".\../../BuildTmp/heksedit/Release/"\r
- ObjectFile=".\../../BuildTmp/heksedit/Release/"\r
- ProgramDataBaseFileName=".\../../BuildTmp/heksedit/Release/"\r
+ PrecompiledHeaderFile=".\..\..\BuildTmp\heksedit\$(ConfigurationName)\heksedit.pch"\r
+ AssemblerListingLocation=".\..\..\BuildTmp\heksedit\$(ConfigurationName)\"\r
+ ObjectFile=".\..\..\BuildTmp\heksedit\$(ConfigurationName)\"\r
+ ProgramDataBaseFileName=".\..\..\BuildTmp\heksedit\$(ConfigurationName)\"\r
BrowseInformation="1"\r
WarningLevel="3"\r
SuppressStartupBanner="TRUE"/>\r
<Tool\r
Name="VCLinkerTool"\r
AdditionalDependencies="version.lib comctl32.lib wininet.lib shlwapi.lib odbc32.lib odbccp32.lib"\r
- OutputFile="../../Build/heksedit/Release/heksedit.dll"\r
+ OutputFile="..\..\Build\heksedit\$(ConfigurationName)\heksedit.dll"\r
LinkIncremental="1"\r
SuppressStartupBanner="TRUE"\r
- ProgramDatabaseFile="../../Build/heksedit/Release/heksedit.pdb"\r
+ ProgramDatabaseFile="..\..\Build\heksedit\$(ConfigurationName)\heksedit.pdb"\r
SubSystem="2"\r
- ImportLibrary=".\../../Build/MergeRelease/heksedit.lib"\r
+ ImportLibrary=".\..\..\Build\heksedit\$(ConfigurationName)\heksedit.lib"\r
TargetMachine="1"/>\r
<Tool\r
Name="VCMIDLTool"\r
MkTypLibCompatible="TRUE"\r
SuppressStartupBanner="TRUE"\r
TargetEnvironment="1"\r
- TypeLibraryName=".\../../Build/MergeRelease/heksedit.tlb"\r
+ TypeLibraryName=".\..\..\Build\heksedit\$(ConfigurationName)\heksedit.tlb"\r
HeaderFileName=""/>\r
<Tool\r
Name="VCPostBuildEventTool"\r
<Tool\r
Name="VCPreBuildEventTool"/>\r
<Tool\r
- Name="VCPreLinkEventTool"/>\r
+ Name="VCPreLinkEventTool"\r
+ CommandLine="PreLink.bat $(IntDir) $(TargetPath)"/>\r
<Tool\r
Name="VCResourceCompilerTool"\r
PreprocessorDefinitions="NDEBUG"\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<File\r
+ RelativePath=".\DllProxies.cpp">\r
+ </File>\r
+ <File\r
RelativePath="EnterDecimalValueDlg.cpp">\r
<FileConfiguration\r
Name="Debug|Win32">\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<File\r
+ RelativePath=".\LangArray.cpp">\r
+ </File>\r
+ <File\r
RelativePath="LoadHexFile.cpp">\r
<FileConfiguration\r
Name="Debug|Win32">\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
UsePrecompiledHeader="1"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
UsePrecompiledHeader="1"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
<FileConfiguration\r
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;$(NoInherit)"\r
+ PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS"\r
BrowseInformation="1"/>\r
</FileConfiguration>\r
</File>\r
RelativePath="clipboard.h">\r
</File>\r
<File\r
+ RelativePath=".\DllProxies.h">\r
+ </File>\r
+ <File\r
RelativePath="gktools.h">\r
</File>\r
<File\r
RelativePath="idt.h">\r
</File>\r
<File\r
- RelativePath="LoadHexFile.h">\r
+ RelativePath=".\LangArray.h">\r
</File>\r
<File\r
- RelativePath="ntdiskspec.h">\r
+ RelativePath="LoadHexFile.h">\r
</File>\r
<File\r
RelativePath="PDrive95.h">\r
<File\r
RelativePath="version.h">\r
</File>\r
+ <File\r
+ RelativePath=".\VersionData.h">\r
+ </File>\r
</Filter>\r
<Filter\r
Name="Resource Files"\r
// Frhed main definition file.\r
#include "precomp.h"\r
#include "resource.h"\r
-#include <shlwapi.h>\r
-#include <assert.h>\r
-#include <ctype.h>\r
-#include "toolbar.h"\r
+#include "VersionData.h"\r
#include "hexwnd.h"\r
#include "hexwdlg.h"\r
#include "shtools.h"\r
#include "clipboard.h"\r
#include "BinTrans.h"\r
#include "LoadHexFile.h"\r
+#include "LangArray.h"\r
\r
/*In the following headers:\r
ULONG m_cRefCount; //The reference count that all objects based on IUnknown must have\r
#include "ids.h"\r
#include "ido.h"\r
\r
-static const char appname[] = "heksedit";\r
+static const char appname[] = "frhed";\r
\r
//CF_RTF defined in Richedit.h, but we don't include it cause that would be overkill\r
#ifndef CF_RTF\r
\r
BOOL ShowHtmlHelp(UINT uCommand, DWORD dwData, HWND hParentWindow);\r
\r
-//unsigned int iStartPL, iNumBytesPl, iPLFileLen, bShowFileStatsPL;\r
+int HexEditorWindow::MouseOpDist = GetProfileInt("Windows", "DragMinDist", DD_DEFDRAGMINDIST);\r
+int HexEditorWindow::MouseOpDelay = GetProfileInt("Windows", "DragDelay", DD_DEFDRAGDELAY);\r
+//We use the size of the font instead\r
+//int HexEditorWindow::ScrollInset = GetProfileInt("Windows", "DragScrollInset", DD_DEFSCROLLINSET);\r
+int HexEditorWindow::ScrollDelay = GetProfileInt("Windows", "DragScrollDelay", DD_DEFSCROLLDELAY);\r
+int HexEditorWindow::ScrollInterval = GetProfileInt("Windows", "DragScrollInterval", DD_DEFSCROLLINTERVAL);\r
\r
int HexEditorWindow::iPasteAsText = 0;\r
int HexEditorWindow::iPasteTimes = 1;\r
bCenterCaret = FALSE;\r
bMakeBackups = 0;\r
\r
- MouseOpDist = GetProfileInt( "Windows", "DragMinDist", DD_DEFDRAGMINDIST );\r
- MouseOpDelay = GetProfileInt( "Windows", "DragDelay", DD_DEFDRAGDELAY );\r
- //We use the size of the font instead\r
- //ScrollInset = GetProfileInt( "Windows", "DragScrollInset", DD_DEFSCROLLINSET );\r
- ScrollDelay = GetProfileInt( "Windows", "DragScrollDelay", DD_DEFSCROLLDELAY );\r
- ScrollInterval = GetProfileInt( "Windows", "DragScrollInterval", DD_DEFSCROLLINTERVAL );\r
-\r
enable_drop = TRUE;\r
enable_drag = TRUE;\r
enable_scroll_delay_dd = TRUE;\r
return TranslateAccelerator(hwnd, hAccel, pMsg);\r
}\r
\r
+static LangArray langArray;\r
+\r
+BOOL HexEditorWindow::load_lang(LANGID langid)\r
+{\r
+ return langArray.Load(hMainInstance, langid);\r
+}\r
+\r
//--------------------------------------------------------------------------------------------\r
int HexEditorWindow::load_file(const char *fname)\r
{\r
WaitCursor wc;\r
int bLoaded = FALSE;\r
- if (file_is_loadable(fname))\r
+ int filehandle = _open(fname, _O_RDONLY|_O_BINARY);\r
+ if (filehandle != -1)\r
{\r
- int filehandle = _open (fname,_O_RDONLY|_O_BINARY,_S_IREAD|_S_IWRITE);\r
- if (filehandle != -1)\r
+ int filelen = _filelength(filehandle);\r
+ DataArray.ClearAll();\r
+ // Try to allocate memory for the file.\r
+ if (DataArray.SetSize(filelen))\r
{\r
- int filelen = _filelength(filehandle);\r
- DataArray.ClearAll();\r
- // Try to allocate memory for the file.\r
- if (DataArray.SetSize(filelen))\r
+ DataArray.ExpandToSize();\r
+ // If read-only mode on opening is enabled or the file is read only:\r
+ bReadOnly = bOpenReadOnly || -1 == _access(fname, 02); //Pabs added call to _access\r
+ // Load the file.\r
+ if (filelen == 0 || _read(filehandle, DataArray, filelen) != -1)\r
{\r
- DataArray.ExpandToSize();\r
- // If read-only mode on opening is enabled or the file is read only:\r
- bReadOnly = bOpenReadOnly || -1 == _access(fname, 02); //Pabs added call to _access\r
- // Load the file.\r
- if (filelen == 0 || _read(filehandle, DataArray, filelen) != -1)\r
- {\r
- // This is an empty file. Don't need to read anything.\r
- GetLongPathNameWin32(fname, filename);\r
- bLoaded = TRUE;\r
- }\r
- else\r
- {\r
- MessageBox(hwnd, "Error while reading from file.", "Load error", MB_ICONERROR);\r
- }\r
+ // This is an empty file. Don't need to read anything.\r
+ GetLongPathNameWin32(fname, filename);\r
+ bLoaded = TRUE;\r
}\r
else\r
{\r
- MessageBox(hwnd, "Not enough memory to load file.", "Load error", MB_ICONERROR);\r
+ MessageBox(hwnd, "Error while reading from file.", "Load error", MB_ICONERROR);\r
}\r
- _close(filehandle);\r
}\r
else\r
{\r
- char buf[500];\r
- sprintf(buf, "Error code 0x%x occured while opening file %s.", errno, fname);\r
- MessageBox(hwnd, buf, "Load error", MB_ICONERROR);\r
+ MessageBox(hwnd, "Not enough memory to load file.", "Load error", MB_ICONERROR);\r
}\r
+ _close(filehandle);\r
+ }\r
+ else\r
+ {\r
+ char buf[500];\r
+ sprintf(buf, "Error code 0x%x occured while opening file %s.", errno, fname);\r
+ MessageBox(hwnd, buf, "Load error", MB_ICONERROR);\r
}\r
if (bLoaded)\r
{\r
}\r
\r
//--------------------------------------------------------------------------------------------\r
-int HexEditorWindow::file_is_loadable (const char* fname)\r
+int HexEditorWindow::file_is_loadable(const char *fname)\r
{\r
- int filehandle;\r
- if ((filehandle = _open (fname,_O_RDONLY|_O_BINARY,_S_IREAD|_S_IWRITE)) != -1)\r
- {\r
- _close (filehandle);\r
- return TRUE;\r
- }\r
- else\r
+ int filehandle = _open(fname, _O_RDONLY|_O_BINARY);\r
+ if (filehandle == -1)\r
return FALSE;\r
+ _close(filehandle);\r
+ return TRUE;\r
}\r
\r
//--------------------------------------------------------------------------------------------\r
-int HexEditorWindow::at_window_create (HWND hw, HINSTANCE hI)\r
+int HexEditorWindow::at_window_create(HWND hw, HINSTANCE hI)\r
{\r
hwnd = hw;\r
hInstance = hI;\r
iCurNibble = 0;\r
\r
target = new CDropTarget(*this);\r
- if( target )\r
+ if (target)\r
{\r
- CoLockObjectExternal( target, TRUE, FALSE );\r
- if( enable_drop )\r
- RegisterDragDrop( hwnd, target );\r
+ CoLockObjectExternal(target, TRUE, FALSE);\r
+ if (enable_drop)\r
+ RegisterDragDrop(hwnd, target);\r
}\r
- if( !target || !enable_drop || ( enable_drop && prefer_CF_HDROP ) )\r
- DragAcceptFiles( hwnd, TRUE ); // Accept files dragged into window.\r
return TRUE;\r
}\r
\r
int adjusth = 0;\r
int adjustv = 0;\r
\r
- int column;\r
-\r
+ int col = iMaxOffsetLen + iByteSpace;\r
if (bSelecting ? area == AREA_BYTES : iEnteringMode == BYTES)\r
- column = BYTES_LOGICAL_COLUMN;\r
+ col += (iCurByte % iBytesPerLine) * 3 + iCurNibble; //BYTES_LOGICAL_COLUMN;\r
else\r
- column = CHARS_LOGICAL_COLUMN;\r
+ col += iBytesPerLine * 3 + iCharSpace + iCurByte % iBytesPerLine; //CHARS_LOGICAL_COLUMN;\r
\r
- if (column >= iHscrollPos + cxBuffer)\r
+ if (col >= iHscrollPos + cxBuffer)\r
{\r
- iHscrollPos = column - (cxBuffer - 1);\r
+ iHscrollPos = col - (cxBuffer - 1);\r
adjusth = 1;\r
}\r
- else if (column < iHscrollPos)\r
+ else if (col < iHscrollPos)\r
{\r
iHscrollPos = column;\r
adjusth = 1;\r
repall = 1;\r
}\r
\r
- int line = iCurByte / iBytesPerLine;\r
- if (line < iVscrollPos)\r
+ int row = iCurByte / iBytesPerLine;\r
+ if (row < iVscrollPos)\r
{\r
- iVscrollPos = line;\r
+ iVscrollPos = row;\r
adjustv = 1;\r
}\r
- else if (line >= iVscrollPos + cyBuffer)\r
+ else if (row >= iVscrollPos + cyBuffer)\r
{\r
- iVscrollPos = line - (cyBuffer - 1);\r
+ iVscrollPos = row - (cyBuffer - 1);\r
if (iVscrollPos < 0)\r
iVscrollPos = 0;\r
adjustv = 1;\r
int HexEditorWindow::paint()\r
{\r
PAINTSTRUCT ps;\r
- HDC hdc = BeginPaint (hwnd, &ps);\r
+ HDC hdc = BeginPaint(hwnd, &ps);\r
//-------------------------------------------------------\r
HideCaret (hwnd);\r
// Delete remains of last position.\r
int b = iVscrollPos + ps.rcPaint.bottom / cyChar;\r
if (b >= iNumlines)\r
b = iNumlines - 1;\r
- int iBkColor = PALETTERGB (GetRValue(iBkColorValue),GetGValue(iBkColorValue),GetBValue(iBkColorValue));\r
+ int iBkColor = PALETTERGB(GetRValue(iBkColorValue), GetGValue(iBkColorValue), GetBValue(iBkColorValue));\r
RECT rc;\r
HBRUSH hbr = CreateSolidBrush(iBkColor);\r
// Delete lower border if there are empty lines on screen.\r
SelectObject(hdc, oldpen);\r
DeleteObject(sep_pen);\r
SelectObject(hdc, oldfont);\r
- ShowCaret (hwnd);\r
- EndPaint (hwnd, &ps);\r
+ ShowCaret(hwnd);\r
+ EndPaint(hwnd, &ps);\r
return 0;\r
}\r
\r
//--------------------------------------------------------------------------------------------\r
// Receives WM_COMMAND messages and passes either them to their handler functions or\r
// processes them here.\r
-int HexEditorWindow::command(int cmd)\r
+void HexEditorWindow::command(int cmd)\r
{\r
if (!queryCommandEnabled(cmd))\r
- return 0;\r
+ return;\r
HMENU hMenu = GetMenu(hwndMain);\r
switch (cmd)\r
{\r
int res,r,r0;r=r0=0;//r&r0 used to determine if the user has removed all frhed data\r
res = MessageBox(hwnd, "Are you sure you want to remove frhed ?", "Remove frhed", MB_YESNO);\r
if (res != IDYES)\r
- return 0;\r
+ return;\r
//Can assume registry data exists\r
res = linkspresent();\r
if (res)\r
static_cast<dialog<ChangeInstDlg>*>(this)->DoModal(hwnd);\r
break;\r
case IDM_CONTEXT:\r
- if(MF_CHECKED==GetMenuState(hMenu,IDM_CONTEXT,0)){\r
- RegDeleteKey( HKEY_CLASSES_ROOT, "*\\shell\\Open in frhed\\command" ); //WinNT requires the key to have no subkeys\r
- RegDeleteKey( HKEY_CLASSES_ROOT, "*\\shell\\Open in frhed" );\r
+ if (MF_CHECKED == GetMenuState(hMenu, IDM_CONTEXT, 0))\r
+ {\r
+ RegDeleteKey(HKEY_CLASSES_ROOT, "*\\shell\\Open in frhed\\command"); //WinNT requires the key to have no subkeys\r
+ RegDeleteKey(HKEY_CLASSES_ROOT, "*\\shell\\Open in frhed");\r
}\r
- else{\r
+ else\r
+ {\r
HKEY key1;\r
- LONG res = RegCreateKey( HKEY_CLASSES_ROOT,\r
+ LONG res = RegCreateKey(HKEY_CLASSES_ROOT,\r
"*\\shell\\Open in frhed\\command",\r
- &key1 );\r
- if( res == ERROR_SUCCESS ){\r
- char cmd[_MAX_PATH];\r
- strcpy(cmd, _pgmptr );\r
- strcat(cmd," %1");\r
- RegSetValue( key1, NULL, REG_SZ, cmd, strlen(cmd));\r
+ &key1);\r
+ if (res == ERROR_SUCCESS)\r
+ {\r
+ char cmd[MAX_PATH];\r
+ int len = sprintf(cmd, "%s %%1", _pgmptr);\r
+ RegSetValue(key1, NULL, REG_SZ, cmd, len);\r
}\r
}\r
break;\r
case IDM_UNKNOWN:\r
- if(MF_CHECKED==GetMenuState(hMenu,IDM_UNKNOWN,0)){\r
+ if (MF_CHECKED == GetMenuState(hMenu, IDM_UNKNOWN, 0))\r
+ {\r
HKEY hk;\r
- RegDeleteKey( HKEY_CLASSES_ROOT, "Unknown\\shell\\Open in frhed\\command" ); //WinNT requires the key to have no subkeys\r
- RegDeleteKey( HKEY_CLASSES_ROOT, "Unknown\\shell\\Open in frhed" );\r
- if(ERROR_SUCCESS==RegOpenKey(HKEY_CLASSES_ROOT,"Unknown\\shell",&hk)){\r
- RegDeleteValue(hk,NULL);\r
+ RegDeleteKey(HKEY_CLASSES_ROOT, "Unknown\\shell\\Open in frhed\\command"); //WinNT requires the key to have no subkeys\r
+ RegDeleteKey(HKEY_CLASSES_ROOT, "Unknown\\shell\\Open in frhed");\r
+ if (ERROR_SUCCESS == RegOpenKey(HKEY_CLASSES_ROOT, "Unknown\\shell", &hk))\r
+ {\r
+ RegDeleteValue(hk, NULL);\r
RegCloseKey(hk);\r
}\r
}\r
- else{\r
+ else\r
+ {\r
HKEY key1;\r
- LONG res = RegCreateKey( HKEY_CLASSES_ROOT,\r
+ LONG res = RegCreateKey(HKEY_CLASSES_ROOT,\r
"Unknown\\shell\\Open in frhed\\command",\r
- &key1 );\r
- if( res == ERROR_SUCCESS ){\r
- char cmd[_MAX_PATH];\r
- strcpy(cmd, _pgmptr );\r
- strcat(cmd," %1");\r
- RegSetValue( key1, NULL, REG_SZ, cmd, strlen(cmd));\r
+ &key1);\r
+ if (res == ERROR_SUCCESS)\r
+ {\r
+ char cmd[MAX_PATH];\r
+ int len = sprintf(cmd, "%s %%1", _pgmptr);\r
+ RegSetValue(key1, NULL, REG_SZ, cmd, len);\r
}\r
}\r
break;\r
case IDM_DEFAULT:\r
- if(MF_CHECKED==GetMenuState(hMenu,IDM_DEFAULT,0)){\r
+ if (MF_CHECKED == GetMenuState(hMenu, IDM_DEFAULT, 0))\r
+ {\r
HKEY hk;\r
- if(ERROR_SUCCESS==RegOpenKey(HKEY_CLASSES_ROOT,"Unknown\\shell",&hk)){\r
- RegDeleteValue(hk,NULL);\r
+ if (ERROR_SUCCESS == RegOpenKey(HKEY_CLASSES_ROOT, "Unknown\\shell", &hk))\r
+ {\r
+ RegDeleteValue(hk, NULL);\r
RegCloseKey(hk);\r
}\r
}\r
else\r
- RegSetValue( HKEY_CLASSES_ROOT, "Unknown\\shell", REG_SZ, "Open in frhed", 13);\r
+ {\r
+ RegSetValue(HKEY_CLASSES_ROOT, "Unknown\\shell", REG_SZ, "Open in frhed", 13);\r
+ }\r
break;\r
//end\r
case IDM_REPLACE:\r
break;\r
\r
case IDM_BMK_COLOR:\r
- CMD_color_settings( &iBmkColor );\r
+ CMD_color_settings(&iBmkColor);\r
break;\r
\r
case IDM_RESET_COLORS:\r
break;\r
\r
case IDM_EDIT_READONLYMODE:\r
- if( bReadOnly == FALSE )\r
- bReadOnly = TRUE;\r
- else\r
- bReadOnly = FALSE;\r
- resize_window();\r
+ bReadOnly = !bReadOnly;\r
+ set_wnd_title();\r
break;\r
\r
case IDM_APPLYTEMPLATE:\r
\r
case IDM_READFLOAT:\r
{\r
-//Pabs optimized - since sprintf returns the string len we can use a pointer, save 46 bytes & not call strcat so many times\r
- char buf[500],* buf2 = buf;\r
- buf[0] = 0;\r
- float floatval;//Pabs replaced 4 with sizeof(floatval)\r
- if (DataArray.GetLength()-iCurByte >= sizeof(floatval))\r
+ char buf[500];\r
+ char *buf2 = buf;\r
+ buf[0] = '\0';\r
+ union\r
+ {\r
+ float fval;\r
+ double dval;\r
+ BYTE bytes[1];\r
+ } u;\r
+ int iBytesAhead = DataArray.GetLength() - iCurByte;\r
+ if (iBytesAhead >= sizeof u.fval)\r
{\r
// Space enough for float.\r
- if (iBinaryMode == LITTLEENDIAN_MODE)\r
- {\r
- floatval = *((float*)&(DataArray[iCurByte]));\r
- }\r
- else // BIGENDIAN_MODE\r
- {\r
- char* pf = (char*) &floatval;\r
- int i;//Pabs replaced 4 with sizeof(floatval)\r
- for (i=0; i<sizeof(floatval); i++)//Pabs replaced 3 with sizeof(floatval)-1\r
- pf[i] = DataArray[iCurByte+(int)sizeof(floatval)-1-i];\r
- }\r
- buf2 += sprintf (buf2, "float size value:\n%f\n", floatval);\r
+ memcpy(&u, &DataArray[iCurByte], sizeof u.fval);\r
+ if (iBinaryMode != LITTLEENDIAN_MODE) // BIGENDIAN_MODE\r
+ reverse_bytes(u.bytes, u.bytes + sizeof u.fval - 1);\r
+ buf2 += sprintf(buf2, "float size value:\n%g\n", u.fval);\r
}\r
else\r
- buf2 += sprintf (buf2, "Not enough space for float size value.\n");\r
- double dval;//Pabs replaced 8 with sizeof(dval) - portability\r
- if (DataArray.GetLength()-iCurByte >= sizeof(dval))\r
+ {\r
+ buf2 += sprintf(buf2, "Not enough space for float size value.\n");\r
+ }\r
+ if (iBytesAhead >= sizeof u.dval)\r
{\r
// Space enough for double.\r
- if (iBinaryMode == LITTLEENDIAN_MODE)\r
- {\r
- dval = *((double*)&(DataArray[iCurByte]));\r
- }\r
- else // BIGENDIAN_MODE\r
- {\r
- char* pd = (char*) &dval;\r
- int i;//Pabs replaced 8 with sizeof(dval) - portability\r
- for (i=0; i<sizeof(dval); i++)//Pabs replaced 7 with (int)sizeof(dval)-1 - portability\r
- pd[i] = DataArray[iCurByte+(int)sizeof(dval)-1-i];\r
- }\r
- buf2 += sprintf (buf2, "\ndouble size value:\n%g\n", dval);\r
+ memcpy(&u, &DataArray[iCurByte], sizeof u.dval);\r
+ if (iBinaryMode != LITTLEENDIAN_MODE) // BIGENDIAN_MODE\r
+ reverse_bytes(u.bytes, u.bytes + sizeof u.dval - 1);\r
+ buf2 += sprintf(buf2, "\ndouble size value:\n%g\n", u.dval);\r
}\r
else\r
{\r
- buf2 += sprintf (buf2, "\nNot enough space for double size value.\n");\r
-//end\r
- }//Pabs replaced NULL w hwnd\r
+ buf2 += sprintf(buf2, "\nNot enough space for double size value.\n");\r
+ }\r
MessageCopyBox(hwnd, buf, "Floating point values", MB_ICONINFORMATION);\r
- break;//end\r
}\r
+ break;\r
\r
case IDM_PROPERTIES:\r
CMD_properties();\r
break;\r
\r
case IDA_INSERTMODETOGGLE:\r
- CMD_toggle_insertmode ();\r
+ CMD_toggle_insertmode();\r
break;\r
\r
case IDA_DELETEKEY:\r
break;\r
\r
case IDM_CHARACTER_SET:\r
- CMD_character_set ();\r
+ CMD_character_set();\r
break;\r
\r
case IDM_EDIT_MANIPULATEBITS:\r
break;\r
\r
case IDM_SELTEXT_COLOR:\r
- CMD_color_settings( &iSelTextColorValue );\r
+ CMD_color_settings(&iSelTextColorValue);\r
break;\r
\r
case IDM_SELBACK_COLOR:\r
- CMD_color_settings( &iSelBkColorValue );\r
+ CMD_color_settings(&iSelBkColorValue);\r
break;\r
\r
case IDM_SEP_COLOR:\r
- CMD_color_settings (&iSepColorValue);\r
+ CMD_color_settings(&iSepColorValue);\r
break;\r
\r
case IDM_TEXT_COLOR:\r
- CMD_color_settings (&iTextColorValue);\r
+ CMD_color_settings(&iTextColorValue);\r
break;\r
\r
case IDM_BK_COLOR:\r
- CMD_color_settings (&iBkColorValue);\r
+ CMD_color_settings(&iBkColorValue);\r
break;\r
\r
case IDM_VIEW_SETTINGS:\r
- CMD_view_settings ();\r
+ CMD_view_settings();\r
break;\r
\r
+#ifdef _DEBUG\r
case IDM_INTERNALSTATUS:\r
{\r
- // Remove break for internal information on F2.\r
-//Pabs inserted\r
-#ifndef _DEBUG\r
- break;\r
-#endif\r
-//end\r
-//Pabs optimized - since sprintf returns the string len we can use a pointer, save 296 bytes & not call strcat so many times\r
- /*Used to do this\r
- char buf[4000], buf2[300];\r
- for each bit of status info{\r
- sprintf (buf2, "<status string>\n", <status data>);\r
- strcat(buf,buf2);\r
- }*/\r
- char buf[4000],* buf2 = buf;\r
- buf2 += sprintf (buf2, "Data length: %d\n", DataArray.GetLength ());\r
- buf2 += sprintf (buf2, "Upper Bound: %d\n", DataArray.GetUpperBound ());\r
- buf2 += sprintf (buf2, "Data size: %d\n", DataArray.GetSize ());\r
- buf2 += sprintf (buf2, "cxChar: %d\n", cxChar );\r
- buf2 += sprintf (buf2, "cyChar: %d\n", cyChar );\r
- buf2 += sprintf (buf2, "iNumlines: %d\n", iNumlines);\r
- buf2 += sprintf (buf2, "iVscrollPos: %d\n", iVscrollPos);\r
- buf2 += sprintf (buf2, "iCurByte: %d\n", iCurByte);\r
- buf2 += sprintf (buf2, "cyBuffer: %d\n", cyBuffer );\r
-//Pabs inserted\r
- buf2 += sprintf (buf2, "cxBuffer: %d\n", cxBuffer );\r
-//end\r
- buf2 += sprintf (buf2, "iMRU_count: %d\n", iMRU_count);\r
+ char buf[4000];\r
+ char *buf2 = buf;\r
+ buf2 += sprintf(buf2, "Data length: %d\n", DataArray.GetLength());\r
+ buf2 += sprintf(buf2, "Upper Bound: %d\n", DataArray.GetUpperBound());\r
+ buf2 += sprintf(buf2, "Data size: %d\n", DataArray.GetSize());\r
+ buf2 += sprintf(buf2, "cxChar: %d\n", cxChar);\r
+ buf2 += sprintf(buf2, "cyChar: %d\n", cyChar);\r
+ buf2 += sprintf(buf2, "iNumlines: %d\n", iNumlines);\r
+ buf2 += sprintf(buf2, "iVscrollPos: %d\n", iVscrollPos);\r
+ buf2 += sprintf(buf2, "iCurByte: %d\n", iCurByte);\r
+ buf2 += sprintf(buf2, "cyBuffer: %d\n", cyBuffer);\r
+ buf2 += sprintf(buf2, "cxBuffer: %d\n", cxBuffer);\r
+ buf2 += sprintf(buf2, "iMRU_count: %d\n", iMRU_count);\r
int i;\r
- for (i=0; i<MRUMAX; i++)\r
+ for (i = 0 ; i < MRUMAX ; i++)\r
{\r
- buf2 += sprintf (buf2, "MRU %d=%s\n", i, &(strMRU[i][0]));\r
-//end\r
- }//Pabs replaced NULL w hwnd\r
- MessageBox (hwnd, buf, "Internal status", MB_OK);\r
- break;//end\r
+ buf2 += sprintf(buf2, "MRU %d=%s\n", i + 1, strMRU[i]);\r
+ }\r
+ MessageBox(hwnd, buf, "Internal status", MB_OK);\r
}\r
+ break;\r
+#endif\r
\r
case IDM_EDIT_CUT:\r
CMD_edit_cut();\r
break;\r
\r
case IDM_HELP_TOPICS:\r
- ShowHtmlHelp ( HELP_CONTENTS, 0, hwnd);\r
+ ShowHtmlHelp(HELP_CONTENTS, 0, hwnd);\r
break;\r
\r
case IDM_EDIT_ENTERDECIMALVALUE:\r
- CMD_edit_enterdecimalvalue ();\r
+ CMD_edit_enterdecimalvalue();\r
break;\r
\r
case IDM_COPY_HEXDUMP:\r
break;\r
\r
case IDM_ABOUT:\r
- DialogBox(hInstance, MAKEINTRESOURCE(IDD_ABOUTDIALOG), hwnd, AboutDlgProc);\r
+ ShowModalDialog(IDD_ABOUTDIALOG, hwnd, AboutDlgProc, this);\r
break;\r
\r
case IDM_FIND:\r
CMD_save();\r
break;\r
\r
- case IDM_EXIT:\r
- SendMessage (hwnd, WM_CLOSE, 0, 0);\r
+ case IDM_SCROLL_PRIOR:\r
+ vscroll(SB_PAGEUP);\r
break;\r
\r
- case IDM_SCROLL_PRIOR:{\r
- int icl = iVscrollPos;\r
- iVscrollPos-=cyBuffer;\r
- if (iVscrollPos < 0)\r
- iVscrollPos = 0;\r
- if (icl != iVscrollPos){\r
- adjust_vscrollbar ();\r
- repaint ();\r
- }\r
- }\r
- break;\r
-\r
- case IDM_SCROLL_NEXT:{\r
- int icl = iVscrollPos;\r
- iVscrollPos+=cyBuffer;\r
- if (iVscrollPos > iNumlines-cyBuffer)\r
- iVscrollPos=iNumlines-cyBuffer;\r
- if (iVscrollPos < 0)\r
- iVscrollPos=0;\r
- if (icl != iVscrollPos){\r
- adjust_vscrollbar();\r
- repaint();\r
- }\r
- }\r
- break;\r
+ case IDM_SCROLL_NEXT:\r
+ vscroll(SB_PAGEDOWN);\r
+ break;\r
\r
case IDM_SCROLL_UP:\r
- if (iVscrollPos > 0)\r
- {\r
- iVscrollPos--;\r
- adjust_vscrollbar ();\r
- repaint ();\r
- }\r
+ vscroll(SB_LINEUP);\r
break;\r
\r
case IDM_SCROLL_DOWN:\r
- if (iVscrollPos < iNumlines-cyBuffer)\r
- {\r
- iVscrollPos++;\r
- adjust_vscrollbar ();\r
- repaint ();\r
- }\r
+ vscroll(SB_LINEDOWN);\r
break;\r
\r
case IDM_SCROLL_LEFT:\r
- if (iHscrollPos > 0)\r
- {\r
- iHscrollPos--;\r
- adjust_hscrollbar ();\r
- repaint ();\r
- }\r
+ hscroll(SB_LINELEFT);\r
break;\r
\r
case IDM_SCROLL_RIGHT:\r
- if (iHscrollPos < iGetCharsPerLine() - cxBuffer)\r
- {\r
- iHscrollPos++;\r
- adjust_hscrollbar ();\r
- repaint();\r
- }\r
+ hscroll(SB_LINERIGHT);\r
break;\r
\r
case IDM_OPEN:\r
break;\r
\r
default:\r
- {//Pabs replaced NULL w hwnd\r
+ {\r
char buf[500];\r
- sprintf (buf, "Unknown COMMAND-ID %d.", cmd);\r
- MessageBox (hwnd, buf, "frhed ERROR", MB_OK);\r
- }//end\r
+ sprintf(buf, "Unknown COMMAND-ID %d.", cmd);\r
+ MessageBox(hwnd, buf, "frhed ERROR", MB_OK);\r
+ }\r
break;\r
}\r
- return 0;\r
}\r
\r
-\r
//--------------------------------------------------------------------------------------------\r
-int HexEditorWindow::destroy_window ()\r
+int HexEditorWindow::destroy_window()\r
{\r
- DragAcceptFiles(hwnd,FALSE);\r
RevokeDragDrop(hwnd);\r
- if (target) CoLockObjectExternal(target, FALSE, TRUE);\r
+ if (target)\r
+ CoLockObjectExternal(target, FALSE, TRUE);\r
return 0;\r
}\r
\r
int i = sprintf(linbuf, "%*.*x", iMinOffsetLen, iMinOffsetLen, bPartialStats ? startpos + iPartialOffset : startpos);\r
memset(linbuf + i, ' ', m - i);\r
\r
- SetTextColor (hdc, iTextColor);\r
- SetBkColor (hdc, iBkColor);\r
+ SetTextColor(hdc, iTextColor);\r
+ SetBkColor(hdc, iBkColor);\r
print_text(hdc, x, y, linbuf, m);\r
\r
+ RECT r;\r
+\r
x += m;\r
int z = x + (iByteSpace + 1) * iBytesPerLine + iCharSpace;\r
\r
u = '.';\r
}\r
}\r
- else if (i > length)\r
- {\r
- linbuf[0] = linbuf[1] = ' ';\r
- }\r
else\r
{\r
- linbuf[0] = linbuf[1] = '_';\r
+ linbuf[0] = linbuf[1] = i == length ? '_' : ' ';\r
}\r
bool bDiff = i < length && i < sibling_length && buffer[i] != sibling_buffer[i];\r
if (bSelected && i >= iSelLower && i <= iSelUpper)\r
{\r
- SetTextColor (hdc, bDiff ? iSelDiffTextColor : iSelTextColor);\r
- SetBkColor (hdc, bDiff ? iSelDiffBkColor : iSelBkColor);\r
+ SetTextColor(hdc, bDiff ? iSelDiffTextColor : iSelTextColor);\r
+ SetBkColor(hdc, bDiff ? iSelDiffBkColor : iSelBkColor);\r
}\r
else\r
{\r
- SetTextColor (hdc, bDiff ? iDiffTextColor : iTextColor);\r
- SetBkColor (hdc, bDiff ? iDiffBkColor : iBkColor);\r
+ SetTextColor(hdc, bDiff ? iDiffTextColor : iTextColor);\r
+ SetBkColor(hdc, bDiff ? iDiffBkColor : iBkColor);\r
}\r
m = iByteSpace;\r
if (i < endpos)\r
\r
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r
// Separators.\r
- for (i = 0; i <= iBytesPerLine / 4 ; i++)\r
+ r.top = (line - iVscrollPos) * cyChar;\r
+ r.bottom = r.top + cyChar;\r
+ for (i = 0 ; i <= iBytesPerLine ; i += 4)\r
{\r
-//Pabs replaced "iOffsetLen" with "iMaxOffsetLen"\r
- m = (iMaxOffsetLen+iByteSpace)*cxChar - cxChar/2 + 3*cxChar*4*i - cxChar*iHscrollPos;\r
-//end\r
- MoveToEx (hdc, m, (line-iVscrollPos)*cyChar, NULL);\r
- LineTo (hdc, m, (line-iVscrollPos+1)*cyChar);\r
+ r.left = r.right = (iMaxOffsetLen + iByteSpace - iHscrollPos + i * 3) * cxChar - cxChar / 2;\r
+ Polyline(hdc, (LPPOINT)&r, 2);\r
}\r
// Separator for chars.\r
- m = CHARSTART*cxChar - cxChar*iHscrollPos - 2;\r
- MoveToEx (hdc, m, (line-iVscrollPos)*cyChar, NULL);\r
- LineTo (hdc, m, (line-iVscrollPos+1)*cyChar);\r
+ r.left = r.right = (iMaxOffsetLen + iByteSpace - iHscrollPos + iBytesPerLine * 3 + iCharSpace) * cxChar - cxChar / 2 - 1;\r
+ Polyline(hdc, (LPPOINT)&r, 2);\r
// Second separator.\r
- MoveToEx (hdc, m+2, (line-iVscrollPos)*cyChar, NULL);\r
- LineTo (hdc, m+2, (line-iVscrollPos+1)*cyChar);\r
+ OffsetRect(&r, 2, 0);\r
+ Polyline(hdc, (LPPOINT)&r, 2);\r
\r
// Print bookmark indicators.\r
// Are there bookmarks in this line?\r
int el = startpos + iBytesPerLine - 1;\r
int chpos;\r
- RECT r;\r
// Brush for bookmark borders.\r
for( i = 0; i < iBmkCount; i++ )\r
{\r
\r
//--------------------------------------------------------------------------------------------\r
// Set horizontal scroll position so that caret is visible.\r
-void HexEditorWindow::adjust_view_for_caret ()\r
+void HexEditorWindow::adjust_view_for_caret()\r
{\r
- int log_column;\r
+ int col = iMaxOffsetLen + iByteSpace;\r
if (iEnteringMode == BYTES)\r
- log_column = BYTES_LOGICAL_COLUMN;\r
+ col += (iCurByte % iBytesPerLine) * 3 + iCurNibble; //BYTES_LOGICAL_COLUMN;\r
else\r
- log_column = CHARS_LOGICAL_COLUMN;\r
+ col += iBytesPerLine * 3 + iCharSpace + iCurByte % iBytesPerLine; //CHARS_LOGICAL_COLUMN;\r
\r
//Pabs changed to put cursor in center of screen\r
- if ( log_column >= iHscrollPos + cxBuffer\r
- || log_column < iHscrollPos )\r
- iHscrollPos = log_column - cxBuffer/2;\r
+ if ( col < iHscrollPos\r
+ || col >= iHscrollPos + cxBuffer )\r
+ iHscrollPos = col - cxBuffer / 2;\r
if( iHscrollPos > iHscrollMax - cxBuffer + 1 )\r
iHscrollPos = iHscrollMax - cxBuffer + 1;\r
- if( iHscrollPos < 0 ) iHscrollPos = 0;\r
- adjust_hscrollbar ();\r
- if( BYTELINE < iVscrollPos\r
- || BYTELINE > iVscrollPos + cyBuffer - 1 )\r
- iVscrollPos = BYTELINE - cyBuffer/2;\r
+ if( iHscrollPos < 0 )\r
+ iHscrollPos = 0;\r
+ adjust_hscrollbar();\r
+ int row = iCurByte / iBytesPerLine;\r
+ if( row < iVscrollPos\r
+ || row >= iVscrollPos + cyBuffer )\r
+ iVscrollPos = row - cyBuffer / 2;\r
if( iVscrollPos > iVscrollMax - cyBuffer + 1 )\r
iVscrollPos = iVscrollMax - cyBuffer + 1;\r
- if( iVscrollPos < 0 ) iVscrollPos = 0;\r
- adjust_vscrollbar ();\r
+ if( iVscrollPos < 0 )\r
+ iVscrollPos = 0;\r
+ adjust_vscrollbar();\r
//end\r
}\r
\r
// Handler on window closing.\r
int HexEditorWindow::close(const char *caption)\r
{\r
-//Pabs changed - restructured so that help file is always closed on exit & the user can save&exit, exit | not exit if file changed\r
if (iFileChanged)\r
{\r
int res = MessageBox(hwnd, "Do you want to save your changes?",\r
//User doesn't want to quit or User wants to save and the save was unsuccessful\r
return 0;//Don't exit\r
}\r
-// else\r
-// {\r
- // If help was open close it.\r
-// ShowHtmlHelp(HELP_QUIT, 0, hwnd);\r
-// }\r
-//end\r
-\r
- // Destroy window.\r
-// DestroyWindow( hwnd );\r
return 1;\r
}\r
\r
switch (iMsg)\r
{\r
case WM_INITDIALOG:\r
- if (HRSRC hRes = ::FindResource(hMainInstance, MAKEINTRESOURCE(VS_VERSION_INFO), RT_VERSION))\r
- {\r
- struct VersionData\r
- { \r
- WORD wLength; \r
- WORD wValueLength; \r
- WORD wType;\r
- WCHAR szKey[sizeof"VS_VERSION_INFO"];\r
- VS_FIXEDFILEINFO FixedFileInfo;\r
- };\r
- C_ASSERT(sizeof(struct VersionData) % sizeof(int) == 0);\r
- if (struct VersionData *pRes = (struct VersionData *)::LoadResource(hMainInstance, hRes))\r
- {\r
- TCHAR szVersion[40];\r
- int cch = wsprintf(szVersion, TEXT("heksedit %u.%02u"), UINT HIWORD(pRes->FixedFileInfo.dwFileVersionMS), UINT LOWORD(pRes->FixedFileInfo.dwFileVersionMS));\r
- if (pRes->FixedFileInfo.dwFileFlags & VS_FF_PRERELEASE)\r
- szVersion[cch++] = 'b';\r
- if (pRes->FixedFileInfo.dwFileFlags & VS_FF_DEBUG)\r
- szVersion[cch++] = 'D';\r
- szVersion[cch] = '\0';\r
- ::SetDlgItemText(hDlg, IDC_ST_VERSION, szVersion);\r
- }\r
- }\r
+ TranslateDialog(hDlg);\r
// Set the version information.\r
SetDlgItemText(hDlg, IDC_STATIC1,\r
"frhed - free hex editor for 32-bit Windows\nVersion "CURRENT_VERSION"."\r
- SUB_RELEASE_NO "\n(c) Raihan Kibria 2000"\r
+ SUB_RELEASE_NO"\n(c) Raihan Kibria 2000"\r
"\nFill with by Pabs Dec 1999"\r
- "\nDisk-Access, Code/Decode Extension and some other bits by Gerson Kurz.");\r
+ "\nDisk-Access, Code/Decode Extension and some other bits by Gerson Kurz."\r
+ "\nDLL interface by Jochen Neubeck.");\r
// Set the email-addresses.\r
SetDlgItemText(hDlg, IDC_EDIT1,\r
"rkibria@hrz1.hrz.tu-darmstadt.de"\r
"\r\nPabs: pabs3@zip.to");\r
// Set the homepage URL.\r
SetDlgItemText(hDlg, IDC_EDIT2, "http://www.kibria.de");\r
+ // Set the icon.\r
+ if (HWND hwndParent = GetParent(hDlg))\r
+ if (DWORD dwIcon = GetClassLong(hwndParent, GCL_HICON))\r
+ SendDlgItemMessage(hDlg, IDC_APPICON, STM_SETICON, dwIcon, 0);\r
return TRUE;\r
\r
case WM_COMMAND:\r
case IDC_BUTTON1:\r
{\r
HINSTANCE hi = ShellExecute(hDlg, "open", "http://www.kibria.de", 0, NULL, SW_SHOWNORMAL);\r
- if ((UINT)hi <= 32)\r
+ if ((UINT)hi <= HINSTANCE_ERROR)\r
MessageBox(hDlg, "Could not call browser.", "Go to homepage", MB_ICONERROR);\r
}\r
}\r
\r
if (bLButtonDown)\r
{\r
-\r
if (bSelecting)\r
{\r
fix_scroll_timers(xPos, yPos);\r
\r
int lastbyte = DataArray.GetUpperBound();\r
- if( new_pos > lastbyte ) new_pos = lastbyte;\r
- if( iEndOfSelection != new_pos )\r
+ if (new_pos > lastbyte)\r
+ new_pos = lastbyte;\r
+ if (iEndOfSelection != new_pos)\r
{\r
bSelected = TRUE;\r
int oeos = iEndOfSelection;\r
iEndOfSelection = new_pos;\r
- repaint(oeos/iBytesPerLine,new_pos/iBytesPerLine);\r
+ repaint(oeos / iBytesPerLine, new_pos / iBytesPerLine);\r
}\r
}\r
/*else if (bPullScrolling)\r
else\r
{\r
SetCursor(LoadCursor(NULL,\r
- enable_drag && bSelected && IN_BOUNDS(new_pos, iStartOfSelection, iEndOfSelection) ?\r
+ enable_drag && bSelected &&\r
+ new_pos >= iGetStartOfSelection() &&\r
+ new_pos <= iGetEndOfSelection() ?\r
IDC_ARROW : IDC_IBEAM));\r
}\r
\r
}\r
else\r
return 0;\r
- if(mem)\r
+ if (mem)\r
return 1;\r
if (iCopyHexdumpMode == 0)\r
{\r
// to file.\r
char szFileName[_MAX_PATH];\r
- char szTitleName[_MAX_FNAME + _MAX_EXT];\r
- strcpy (szFileName, "hexdump.txt");\r
+ strcpy(szFileName, "hexdump.txt");\r
HGLOBAL hg = NULL;\r
if( iCopyHexdumpType == IDC_EXPORTRTF ){\r
hg = (HGLOBAL)pMem;\r
\r
// to file.\r
OPENFILENAME ofn;\r
- ofn.lStructSize = sizeof (OPENFILENAME);\r
+ ZeroMemory(&ofn, sizeof ofn);\r
+ ofn.lStructSize = sizeof ofn;\r
ofn.hwndOwner = hwnd;\r
- ofn.hInstance = NULL;\r
ofn.lpstrFilter = "All Files (*.*)\0*.*\0\0";\r
- ofn.lpstrCustomFilter = NULL;\r
- ofn.nMaxCustFilter = 0;\r
- ofn.nFilterIndex = 0;\r
ofn.lpstrFile = szFileName;\r
ofn.nMaxFile = _MAX_PATH;\r
- ofn.lpstrFileTitle = szTitleName;\r
- ofn.nMaxFileTitle = _MAX_FNAME + _MAX_EXT;\r
- ofn.lpstrInitialDir = NULL;\r
- ofn.lpstrTitle = NULL;\r
ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT;\r
- ofn.nFileOffset = 0;\r
- ofn.nFileExtension = 0;\r
- ofn.lpstrDefExt = NULL;\r
- ofn.lCustData = 0L;\r
- ofn.lpfnHook = NULL;\r
- ofn.lpTemplateName = NULL;\r
- if (GetSaveFileName (&ofn))\r
+ if (GetSaveFileName(&ofn))\r
{\r
- int filehandle;\r
- if ((filehandle = _open (szFileName, _O_RDWR|_O_CREAT|_O_TRUNC|_O_BINARY,_S_IREAD|_S_IWRITE)) != -1)\r
+ int filehandle = _open(szFileName, _O_RDWR|_O_CREAT|_O_TRUNC|_O_BINARY, _S_IREAD|_S_IWRITE);\r
+ if (filehandle != -1)\r
{\r
// Write file.\r
- if ((_write (filehandle, pMem, buflen-1)) != -1)\r
- {//Pabs replaced NULL w hwnd\r
- MessageBox (hwnd, "Hexdump saved.", "Export hexdump", MB_ICONINFORMATION);\r
- }\r
+ if (_write(filehandle, pMem, buflen - 1) != -1)\r
+ MessageBox(hwnd, "Hexdump saved.", "Export hexdump", MB_ICONINFORMATION);\r
else\r
- MessageBox (hwnd, "Could not save Hexdump.", "Export hexdump", MB_ICONERROR);\r
- _close (filehandle);\r
+ MessageBox(hwnd, "Could not save Hexdump.", "Export hexdump", MB_ICONERROR);\r
+ _close(filehandle);\r
}\r
else\r
- MessageBox (hwnd, "Could not save Hexdump.", "Export hexdump", MB_ICONERROR);\r
+ MessageBox(hwnd, "Could not save Hexdump.", "Export hexdump", MB_ICONERROR);\r
}//end\r
if (iCopyHexdumpType == IDC_EXPORTRTF)\r
{\r
// Return: Length of resulting string.\r
// ppd = pointer to pointer to result, must be delete[]-ed later.\r
// If the input string was empty, no translated array is created and zero is returned.\r
-int HexEditorWindow::create_bc_translation (char** ppd, char* src, int srclen)\r
+int HexEditorWindow::create_bc_translation(char **ppd, char *src, int srclen)\r
{\r
int destlen = Text2BinTranslator::iLengthOfTransToBin(src, srclen);\r
if (destlen > 0)\r
//-------------------------------------------------------------------\r
int HexEditorWindow::CMD_save_as()\r
{\r
- char szFileName[_MAX_PATH] = "";\r
- char szTitleName[_MAX_FNAME + _MAX_EXT] = "";\r
+ char szFileName[_MAX_PATH];\r
+ szFileName[0] = '\0';\r
if (Drive == 0)\r
strcpy(szFileName, filename);\r
OPENFILENAME ofn;\r
- ofn.lStructSize = sizeof (OPENFILENAME);\r
+ ZeroMemory(&ofn, sizeof ofn);\r
+ ofn.lStructSize = sizeof ofn;\r
ofn.hwndOwner = hwnd;\r
- ofn.hInstance = NULL;\r
ofn.lpstrFilter = "All Files (*.*)\0*.*\0\0";\r
- ofn.lpstrCustomFilter = NULL;\r
- ofn.nMaxCustFilter = 0;\r
- ofn.nFilterIndex = 0;\r
ofn.lpstrFile = szFileName;\r
ofn.nMaxFile = _MAX_PATH;\r
- ofn.lpstrFileTitle = szTitleName;\r
- ofn.nMaxFileTitle = _MAX_FNAME + _MAX_EXT;\r
- ofn.lpstrInitialDir = NULL;\r
- ofn.lpstrTitle = NULL;\r
ofn.Flags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;\r
- ofn.nFileOffset = 0;\r
- ofn.nFileExtension = 0;\r
- ofn.lpstrDefExt = NULL;\r
- ofn.lCustData = 0L;\r
- ofn.lpfnHook = NULL;\r
- ofn.lpTemplateName = NULL;\r
if (!GetSaveFileName(&ofn))\r
return 0;\r
WaitCursor w1;\r
- int filehandle = _open(szFileName, _O_RDWR|_O_CREAT|_O_TRUNC|_O_BINARY,_S_IREAD|_S_IWRITE);\r
+ int filehandle = _open(szFileName, _O_RDWR|_O_CREAT|_O_TRUNC|_O_BINARY, _S_IREAD|_S_IWRITE);\r
if (filehandle == -1)\r
{\r
MessageBox(hwnd, "Could not save file.", "Save as", MB_ICONERROR);\r
// File is partially loaded => must be saved partially or saved as.\r
if (bPartialOpen)\r
{\r
- int filehandle = _open (filename, _O_RDWR|_O_BINARY,_S_IREAD|_S_IWRITE);\r
+ int filehandle = _open(filename, _O_RDWR|_O_BINARY);\r
if (filehandle == -1)\r
{\r
MessageBox(hwnd, "Could not save partially opened file.", "Save", MB_ICONERROR);\r
return done;\r
}\r
\r
- int filehandle = _open(filename, _O_RDWR|_O_CREAT|_O_TRUNC|_O_BINARY,_S_IREAD|_S_IWRITE);\r
+ int filehandle = _open(filename, _O_RDWR|_O_CREAT|_O_TRUNC|_O_BINARY, _S_IREAD|_S_IWRITE);\r
if (filehandle == -1)\r
{\r
- MessageBox (hwnd, "Could not save file.", "Save", MB_ICONERROR);\r
+ MessageBox(hwnd, "Could not save file.", "Save", MB_ICONERROR);\r
return 0;\r
}\r
if (_write(filehandle, DataArray, DataArray.GetLength()) == -1)\r
{\r
- MessageBox (hwnd, "Could not write data to file.", "Save", MB_ICONERROR);\r
+ MessageBox(hwnd, "Could not write data to file.", "Save", MB_ICONERROR);\r
}\r
else\r
{\r
if (!close("Open"))\r
return;\r
char szFileName[_MAX_PATH];\r
- char szTitleName[_MAX_FNAME + _MAX_EXT];\r
szFileName[0] = '\0';\r
OPENFILENAME ofn;\r
- ofn.lStructSize = sizeof (OPENFILENAME);\r
+ ZeroMemory(&ofn, sizeof ofn);\r
+ ofn.lStructSize = sizeof ofn;\r
ofn.hwndOwner = hwnd;\r
- ofn.hInstance = NULL;\r
ofn.lpstrFilter = "All Files (*.*)\0*.*\0\0";\r
- ofn.lpstrCustomFilter = NULL;\r
- ofn.nMaxCustFilter = 0;\r
- ofn.nFilterIndex = 0;\r
ofn.lpstrFile = szFileName;\r
ofn.nMaxFile = _MAX_PATH;\r
- ofn.lpstrFileTitle = szTitleName;\r
- ofn.nMaxFileTitle = _MAX_FNAME + _MAX_EXT;\r
- ofn.lpstrInitialDir = NULL;\r
- ofn.lpstrTitle = NULL;\r
ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT;\r
- ofn.nFileOffset = 0;\r
- ofn.nFileExtension = 0;\r
- ofn.lpstrDefExt = NULL;\r
- ofn.lCustData = 0L;\r
- ofn.lpfnHook = NULL;\r
- ofn.lpTemplateName = NULL;\r
if (GetOpenFileName(&ofn))\r
load_file(szFileName);\r
}\r
{\r
if( bSelected )\r
{\r
+ int iCharStart = iMaxOffsetLen + iByteSpace + iBytesPerLine * 3 + iCharSpace;\r
//Pabs changed to put selection in center of screen\r
int iStartOfSelSetting = iStartOfSelection;\r
int iEndOfSelSetting = iEndOfSelection;\r
}\r
else\r
{\r
- soscol = CHARSTART + ( iStartOfSelSetting % iBytesPerLine );\r
- eoscol = CHARSTART + ( iEndOfSelSetting % iBytesPerLine );\r
+ soscol = iCharStart + iStartOfSelSetting % iBytesPerLine;\r
+ eoscol = iCharStart + iEndOfSelSetting % iBytesPerLine;\r
maxcols = iBytesPerLine;\r
}\r
\r
maxcol = iMaxOffsetLen + iByteSpace + ( iBytesPerLine - 1 ) * 3 + 2;\r
}\r
else{\r
- mincol = CHARSTART;\r
- maxcol = CHARSTART + iBytesPerLine;\r
+ mincol = iCharStart;\r
+ maxcol = iCharStart + iBytesPerLine;\r
}\r
}\r
iHscrollPos = mincol - (cxBuffer - (maxcol-mincol) )/2;\r
\r
//-------------------------------------------------------------------\r
// Change the color indicated by pColor.\r
-void HexEditorWindow::CMD_color_settings (COLORREF* pColor)\r
+void HexEditorWindow::CMD_color_settings(COLORREF *pColor)\r
{\r
CHOOSECOLOR cc;\r
COLORREF crCustColors[16];\r
\r
res = RegQueryValueEx( key1, "iMRU_count", NULL, NULL, (BYTE*) &iMRU_count, &datasize );\r
int i;\r
- char fname[64];\r
- for( i = 1; i <= MRUMAX; i++ )\r
+ for (i = 0 ; i < MRUMAX ; i++)\r
{\r
- sprintf( fname, "MRU_File%d", i );\r
- datasize = _MAX_PATH + 1;\r
- res = RegQueryValueEx( key1, fname, NULL, NULL, (BYTE*) &szPath, &datasize );\r
- strcpy( &( strMRU[i-1][0] ), szPath );\r
+ char fname[64];\r
+ sprintf(fname, "MRU_File%d", i + 1);\r
+ datasize = _MAX_PATH;\r
+ res = RegQueryValueEx(key1, fname, NULL, NULL, (BYTE*) strMRU[i], &datasize);\r
}\r
-\r
- // if( res != ERROR_SUCCESS )//Pabs replaced NULL w hwnd\r
- // MessageBox( hwnd, "Could not read value", appname, MB_OK );\r
-\r
// Close registry.\r
RegCloseKey(key1);\r
}\r
if (!close("Open partially"))\r
return;\r
char szFileName[_MAX_PATH];\r
- char szTitleName[_MAX_FNAME + _MAX_EXT];\r
szFileName[0] = '\0';\r
OPENFILENAME ofn;\r
- ofn.lStructSize = sizeof (OPENFILENAME);\r
+ ZeroMemory(&ofn, sizeof ofn);\r
+ ofn.lStructSize = sizeof ofn;\r
ofn.hwndOwner = hwnd;\r
- ofn.hInstance = NULL;\r
ofn.lpstrFilter = "All Files (*.*)\0*.*\0\0";\r
- ofn.lpstrCustomFilter = NULL;\r
- ofn.nMaxCustFilter = 0;\r
- ofn.nFilterIndex = 0;\r
ofn.lpstrFile = szFileName;\r
ofn.nMaxFile = _MAX_PATH;\r
- ofn.lpstrFileTitle = szTitleName;\r
- ofn.nMaxFileTitle = _MAX_FNAME + _MAX_EXT;\r
- ofn.lpstrInitialDir = NULL;\r
- ofn.lpstrTitle = NULL;\r
ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT;\r
- ofn.nFileOffset = 0;\r
- ofn.nFileExtension = 0;\r
- ofn.lpstrDefExt = NULL;\r
- ofn.lCustData = 0L;\r
- ofn.lpfnHook = NULL;\r
- ofn.lpTemplateName = NULL;\r
if (!GetOpenFileName(&ofn))\r
return;\r
- OpenPartiallyDlg::filehandle = _open(szFileName,_O_RDONLY|_O_BINARY,_S_IREAD|_S_IWRITE);\r
+ OpenPartiallyDlg::filehandle = _open(szFileName, _O_RDONLY|_O_BINARY);\r
if (OpenPartiallyDlg::filehandle == -1)\r
{\r
char buf[500];\r
UINT i = 0;\r
if (numfiles > 1)\r
{\r
- i = DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_REMOVEBMK_DIALOG), hwnd, MultiDropDlgProc, (LPARAM)hDrop);\r
+ i = ShowModalDialog(IDD_REMOVEBMK_DIALOG, hwnd, MultiDropDlgProc, hDrop);\r
if (i >= numfiles)\r
{\r
DragFinish(hDrop);\r
}\r
// Get name of template file.\r
char szTemplateName[_MAX_PATH];\r
- char szTitleName[_MAX_FNAME + _MAX_EXT];\r
szTemplateName[0] = '\0';\r
OPENFILENAME ofn;\r
- ofn.lStructSize = sizeof (OPENFILENAME);\r
+ ZeroMemory(&ofn, sizeof ofn);\r
+ ofn.lStructSize = sizeof ofn;\r
ofn.hwndOwner = hwnd;\r
- ofn.hInstance = NULL;\r
ofn.lpstrFilter = "Template files (*.tpl)\0*.tpl\0\0";\r
- ofn.lpstrCustomFilter = NULL;\r
- ofn.nMaxCustFilter = 0;\r
- ofn.nFilterIndex = 0;\r
ofn.lpstrFile = szTemplateName;\r
ofn.nMaxFile = _MAX_PATH;\r
- ofn.lpstrFileTitle = szTitleName;\r
- ofn.nMaxFileTitle = _MAX_FNAME + _MAX_EXT;\r
- ofn.lpstrInitialDir = NULL;\r
ofn.lpstrTitle = "Choose template file";\r
ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT;\r
- ofn.nFileOffset = 0;\r
- ofn.nFileExtension = 0;\r
- ofn.lpstrDefExt = NULL;\r
- ofn.lCustData = 0L;\r
- ofn.lpfnHook = NULL;\r
- ofn.lpTemplateName = NULL;\r
if (GetOpenFileName(&ofn))\r
{\r
// szTemplateName contains name of chosen tpl file.\r
void HexEditorWindow::apply_template(char *pcTemplate)\r
{\r
// Load template file.\r
- int filehandle = _open(pcTemplate, _O_RDONLY|_O_BINARY, _S_IREAD|_S_IWRITE);\r
+ int filehandle = _open(pcTemplate, _O_RDONLY|_O_BINARY);\r
if (filehandle == -1)\r
{\r
char buf[500];\r
TplResult.Append('\0');\r
// Display template data.\r
char *pcTmplText = TplResult;\r
- DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_TMPL_RESULT_DIALOG), hwnd, TmplDisplayDlgProc, (LPARAM)pcTmplText);\r
+ ShowModalDialog(IDD_TMPL_RESULT_DIALOG, hwnd, TmplDisplayDlgProc, pcTmplText);\r
}\r
else//Pabs replaced NULL w hwnd\r
MessageBox(hwnd, "Template file could not be loaded.", "Template error", MB_ICONERROR);\r
return ::ResolveIt(hwndMain, lpszLinkFile, lpszPath);\r
}\r
\r
+void NTAPI TranslateDialog(HWND hwnd)\r
+{\r
+ if (IsWindowUnicode(hwnd))\r
+ langArray.TranslateDialogW(hwnd);\r
+ else\r
+ langArray.TranslateDialogA(hwnd);\r
+}\r
+\r
+INT_PTR NTAPI ShowModalDialog(UINT idd, HWND hwnd, DLGPROC dlgproc, LPVOID param)\r
+{\r
+ HINSTANCE hinst = langArray.m_hLangDll ? langArray.m_hLangDll : hMainInstance;\r
+ return IsWindowUnicode(hwnd)\r
+ ? DialogBoxParamW(hinst, MAKEINTRESOURCEW(idd), hwnd, dlgproc, (LPARAM)param)\r
+ : DialogBoxParamA(hinst, MAKEINTRESOURCEA(idd), hwnd, dlgproc, (LPARAM)param);\r
+}\r
+\r
//-------------------------------------------------------------------\r
void HexEditorWindow::CMD_colors_to_default()\r
-{//Pabs replaced NULL w hwnd\r
- if( MessageBox( hwnd, "Really reset colors to default values?", appname, MB_YESNO | MB_ICONQUESTION ) == IDYES )\r
- {//end\r
+{\r
+ if (MessageBox(hwnd, "Really reset colors to default values?",\r
+ appname, MB_YESNO | MB_ICONQUESTION) == IDYES)\r
+ {\r
iBmkColor = RGB( 255, 0, 0 );\r
iSelBkColorValue = RGB( 255, 255, 0 );\r
iSelTextColorValue = RGB( 0, 0, 0 );\r
}\r
}\r
\r
-\r
void HexEditorWindow::CMD_GotoDllExports()\r
{\r
ULONG ulOffset, ulSize;\r
if (FindDlg::pcFindDlgBuffer)\r
{\r
// There is a findstring. Create its translation.\r
- char* pcFindstring;\r
+ char *pcFindstring;\r
int srclen = strlen(FindDlg::pcFindDlgBuffer);\r
if (int destlen = create_bc_translation(&pcFindstring, FindDlg::pcFindDlgBuffer, srclen))\r
{\r
SetCursor(LoadCursor(NULL, IDC_WAIT));\r
- int i = find_bytes(\r
- (char *)&DataArray[iCurByte + 1],\r
+ int i = find_bytes((char *)&DataArray[iCurByte + 1],\r
DataArray.GetLength() - iCurByte - 1,\r
pcFindstring, destlen, 1,\r
FindDlg::iFindDlgMatchCase ? equal : lower_case);\r
- if (i != -1)\r
- iCurByte += i + 1;\r
-\r
SetCursor(LoadCursor(NULL, IDC_ARROW));\r
- if( i != -1 )\r
+ if (i != -1)\r
{\r
- /* OLD\r
- // Caret will be vertically centered if line of found string is not visible.\r
- if( iCurByte/iBytesPerLine < iVscrollPos || iCurByte/iBytesPerLine > iVscrollPos + cyBuffer )\r
- iVscrollPos = max( 0, iCurByte/iBytesPerLine-cyBuffer/2 );\r
- adjust_vscrollbar();\r
- */\r
-\r
+ iCurByte += i + 1;\r
bSelected = TRUE;\r
iStartOfSelection = iCurByte;\r
iEndOfSelection = iCurByte + destlen - 1;\r
repaint();\r
}\r
else\r
+ {\r
MessageBox(hwnd, "Could not find any more occurances.", "Find next", MB_ICONERROR);\r
-\r
+ }\r
delete [] pcFindstring;\r
}\r
else\r
if (FindDlg::pcFindDlgBuffer)\r
{\r
// There is a findstring. Create its translation.\r
- char* pcFindstring;\r
+ char *pcFindstring;\r
int srclen = strlen(FindDlg::pcFindDlgBuffer);\r
if (int destlen = create_bc_translation(&pcFindstring, FindDlg::pcFindDlgBuffer, srclen))\r
{\r
- SetCursor( LoadCursor( NULL, IDC_WAIT ) );\r
+ SetCursor(LoadCursor(NULL, IDC_WAIT));\r
// Search the array starting at index 0 to the current byte,\r
// plus the findstring-length minus 1. If\r
// you are somewhere in the middle of the findstring with the caret\r
// and you choose "find previous" you usually want to find the beginning\r
// of the findstring in the file.\r
- int i = find_bytes((char *) &DataArray[0],\r
- min( iCurByte + (destlen - 1), DataArray.GetLength() ),\r
+ int i = find_bytes((char *)&DataArray[0],\r
+ min(iCurByte + (destlen - 1), DataArray.GetLength()),\r
pcFindstring, destlen, -1, FindDlg::iFindDlgMatchCase ? equal : lower_case);\r
+ SetCursor(LoadCursor(NULL, IDC_ARROW));\r
if (i != -1)\r
- iCurByte = i;\r
-\r
- SetCursor( LoadCursor( NULL, IDC_ARROW ) );\r
- if( i != -1 )\r
{\r
- /* OLD\r
- // Caret will be vertically centered if line of found string is not visible.\r
- if( iCurByte/iBytesPerLine < iVscrollPos || iCurByte/iBytesPerLine > iVscrollPos + cyBuffer )\r
- iVscrollPos = max( 0, iCurByte/iBytesPerLine-cyBuffer/2 );\r
- adjust_vscrollbar();\r
- */\r
-\r
+ iCurByte = i;\r
bSelected = TRUE;\r
iStartOfSelection = iCurByte;\r
iEndOfSelection = iCurByte + destlen - 1;\r
repaint();\r
}\r
else\r
+ {\r
MessageBox(hwnd, "Could not find any more occurances.", "Find previous", MB_ICONERROR);\r
+ }\r
delete [] pcFindstring;\r
}\r
else\r
break;\r
\r
case WM_LBUTTONDOWN:\r
- lbuttondown( wParam, LOWORD( lParam ), HIWORD( lParam ) );\r
+ lbuttondown(wParam, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));\r
break;\r
\r
case WM_LBUTTONUP:\r
- lbuttonup( LOWORD( lParam ), HIWORD( lParam ) );\r
+ lbuttonup(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));\r
break;\r
\r
// GK20AUG2K\r
break;\r
\r
case WM_MOUSEMOVE:\r
- mousemove( (int) (short) LOWORD( lParam ), (int) (short) HIWORD( lParam ) );\r
+ mousemove(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));\r
break;\r
\r
case WM_KEYDOWN:\r
- keydown( wParam );\r
+ keydown(wParam);\r
break;\r
\r
case WM_CHAR:\r
- character( (char) wParam );\r
+ character((char)wParam);\r
break;\r
\r
case WM_VSCROLL:\r
return 0;\r
\r
case WM_COMMAND:\r
- command( LOWORD( wParam ) );\r
+ command(LOWORD(wParam));\r
break;\r
\r
case WM_TIMER:\r
destroy_window();\r
break;\r
}\r
- return DefWindowProc (hwnd, iMsg, wParam, lParam);\r
+ return DefWindowProc(hwnd, iMsg, wParam, lParam);\r
}\r
\r
//Pabs changed - removed CMD_explorersettings\r
}\r
if (bPartialOpen)\r
{\r
- int filehandle = _open (filename,_O_RDONLY|_O_BINARY,_S_IREAD|_S_IWRITE);\r
+ int filehandle = _open(filename, _O_RDONLY|_O_BINARY);\r
if (filehandle != -1)\r
{\r
_lseek(filehandle, iPartialOffset, 0);\r
void HexEditorWindow::CMD_insertfile()\r
{\r
char szFileName[_MAX_PATH];\r
- char szTitleName[_MAX_FNAME + _MAX_EXT];\r
szFileName[0] = '\0';\r
OPENFILENAME ofn;\r
- ofn.lStructSize = sizeof (OPENFILENAME);\r
+ ZeroMemory(&ofn, sizeof ofn);\r
+ ofn.lStructSize = sizeof ofn;\r
ofn.hwndOwner = hwnd;\r
- ofn.hInstance = NULL;\r
ofn.lpstrFilter = "All Files (*.*)\0*.*\0\0";\r
- ofn.lpstrCustomFilter = NULL;\r
- ofn.nMaxCustFilter = 0;\r
- ofn.nFilterIndex = 0;\r
ofn.lpstrFile = szFileName;\r
ofn.nMaxFile = _MAX_PATH;\r
- ofn.lpstrFileTitle = szTitleName;\r
- ofn.nMaxFileTitle = _MAX_FNAME + _MAX_EXT;\r
- ofn.lpstrInitialDir = NULL;\r
- ofn.lpstrTitle = NULL;\r
ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT;\r
- ofn.nFileOffset = 0;\r
- ofn.nFileExtension = 0;\r
- ofn.lpstrDefExt = NULL;\r
- ofn.lCustData = 0L;\r
- ofn.lpfnHook = NULL;\r
- ofn.lpTemplateName = NULL;\r
if (!GetOpenFileName(&ofn))\r
return;\r
// RK: don't allow inserting same file we're editing right now.\r
void HexEditorWindow::CMD_saveselas()\r
{\r
char szFileName[_MAX_PATH];\r
- char szTitleName[_MAX_FNAME + _MAX_EXT];\r
+ szFileName[0] = '\0';\r
OPENFILENAME ofn;\r
- szTitleName[0] = szFileName[0] = '\0';\r
- ofn.lStructSize = sizeof (OPENFILENAME);\r
+ ZeroMemory(&ofn, sizeof ofn);\r
+ ofn.lStructSize = sizeof ofn;\r
ofn.hwndOwner = hwnd;\r
- ofn.hInstance = NULL;\r
ofn.lpstrFilter = "All Files (*.*)\0*.*\0\0";\r
- ofn.lpstrCustomFilter = NULL;\r
- ofn.nMaxCustFilter = 0;\r
- ofn.nFilterIndex = 0;\r
ofn.lpstrFile = szFileName;\r
ofn.nMaxFile = _MAX_PATH;\r
- ofn.lpstrFileTitle = szTitleName;\r
- ofn.nMaxFileTitle = _MAX_FNAME + _MAX_EXT;\r
- ofn.lpstrInitialDir = NULL;\r
- ofn.lpstrTitle = NULL;\r
ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT;\r
- ofn.nFileOffset = 0;\r
- ofn.nFileExtension = 0;\r
- ofn.lpstrDefExt = NULL;\r
- ofn.lCustData = 0L;\r
- ofn.lpfnHook = NULL;\r
- ofn.lpTemplateName = NULL;\r
if (GetSaveFileName(&ofn))\r
{\r
const char *complain = "Could not save file.";\r
- int filehandle = _open(szFileName, _O_RDWR|_O_CREAT|_O_TRUNC|_O_BINARY,_S_IREAD|_S_IWRITE);\r
+ int filehandle = _open(szFileName, _O_RDWR|_O_CREAT|_O_TRUNC|_O_BINARY, _S_IREAD|_S_IWRITE);\r
if (filehandle != -1)\r
{\r
- SetCursor (LoadCursor (NULL, IDC_WAIT));\r
- int iStartOfSelSetting;\r
- int iEndOfSelSetting;\r
+ WaitCursor wc;\r
+ int lower = 0;\r
+ int upper = DataArray.GetUpperBound();\r
if (bSelected)\r
{\r
- iStartOfSelSetting = iStartOfSelection;\r
- iEndOfSelSetting = iEndOfSelection;\r
+ lower = iGetStartOfSelection();\r
+ upper = iGetEndOfSelection();\r
}\r
- else\r
- {\r
- iStartOfSelSetting = 0;\r
- iEndOfSelSetting = DataArray.GetUpperBound();\r
- }\r
- if (iStartOfSelSetting > iEndOfSelSetting)\r
- swap(iStartOfSelSetting, iEndOfSelSetting);\r
- if (_write(filehandle, &DataArray[iStartOfSelSetting], iEndOfSelSetting - iStartOfSelSetting + 1) != -1)\r
+ if (_write(filehandle, &DataArray[lower], upper - lower + 1) != -1)\r
complain = 0;\r
- SetCursor (LoadCursor (NULL, IDC_ARROW));\r
_close(filehandle);\r
}\r
if (complain)\r
//Import from file\r
//Initialize the struct\r
char szFileName[_MAX_PATH];\r
- char szTitleName[_MAX_FNAME + _MAX_EXT];\r
szFileName[0] = '\0';\r
OPENFILENAME ofn;\r
- ofn.lStructSize = sizeof (OPENFILENAME);\r
+ ZeroMemory(&ofn, sizeof ofn);\r
+ ofn.lStructSize = sizeof ofn;\r
ofn.hwndOwner = hwnd;\r
- ofn.hInstance = NULL;\r
ofn.lpstrFilter = "Hex Dump files(*.txt,*.hex)\0*.txt;*.hex\0All Files (*.*)\0*.*\0";\r
- ofn.lpstrCustomFilter = NULL;\r
- ofn.nMaxCustFilter = 0;\r
- ofn.nFilterIndex = 0;\r
ofn.lpstrFile = szFileName;\r
ofn.nMaxFile = _MAX_PATH;\r
- ofn.lpstrFileTitle = szTitleName;\r
- ofn.nMaxFileTitle = _MAX_FNAME + _MAX_EXT;\r
- ofn.lpstrInitialDir = NULL;\r
- ofn.lpstrTitle = NULL;\r
ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT;\r
- ofn.nFileOffset = 0;\r
- ofn.nFileExtension = 0;\r
- ofn.lpstrDefExt = NULL;\r
- ofn.lCustData = 0L;\r
- ofn.lpfnHook = NULL;\r
- ofn.lpTemplateName = NULL;\r
if (!GetOpenFileName(&ofn))\r
return;\r
//Set up variables for the function\r
{\r
//In bits section\r
//Find the end of " Bits="\r
- for ( ; i < len && st[i] != '=' ; i++);\r
+ while (i < len && st[i] != '=')\r
+ ++i;\r
\r
//Are we in the actual bits or " Bits="\r
if (cn <= i)\r
len = i + 1;\r
GetTextExtentPoint32(dc, text, len, &s);\r
r = rt.left + s.cx;\r
-\r
//Flip the equivalent of a "bit"\r
for (i = 0 ; i < 7 ; i++)\r
{\r
if (p.x <= r + s.cx + 1)\r
break;\r
}\r
- if (st[i] == '0')\r
- st[i] = '1';\r
- else if (st[i] == '1')\r
- st[i] = '0';\r
-\r
+ st[i] ^= '0' ^ '1';\r
//Assemble all the "bits"\r
- DataArray[iCurByte] = 0x00;\r
- for( i = 0; i < 8; i++){\r
- if( st[i] == '1' ) DataArray[iCurByte] |= 0x01;\r
- if( i < 7 ) DataArray[iCurByte] <<= 1;\r
+ BYTE c = 0x00;\r
+ for (i = 0 ; i < 8 ; i++)\r
+ {\r
+ c <<= 1;\r
+ if (st[i] == '1')\r
+ c |= 0x01;\r
}\r
-\r
+ DataArray[iCurByte] = c;\r
//Redraw the data & status bar etc\r
bFilestatusChanged = iFileChanged = TRUE;\r
- repaint(BYTELINE);\r
+ repaint(iCurByte / iBytesPerLine);\r
\r
}//In actual bits\r
}//In bits section\r
//If the current line contains a bookmark\r
else for (bi = 0 ; bi < iBmkCount ; bi++)\r
{\r
- if (IN_BOUNDS(pbmkList[i].offset, l, l + iBytesPerLine - 1))\r
+ int offset = pbmkList[i].offset;\r
+ if (offset >= l && offset < l + iBytesPerLine)\r
{\r
highlights_in_this_line = true;\r
break;\r
\r
#include "IDT.h"\r
\r
-// This is frhed vCURRENT_VERSION.SUB_RELEASE_NO\r
-#include "version.h"\r
#include "heksedit.h"\r
+\r
+#define SHARPEN_A(X) #X\r
+#define SHARPEN_W(X) L#X\r
+#define SHARPEN(T,X) SHARPEN_##T(X)\r
+\r
+#define CURRENT_VERSION SHARPEN(A,FRHED_MAJOR_VERSION) "." SHARPEN(A,FRHED_MINOR_VERSION)\r
+#define SUB_RELEASE_NO SHARPEN(A,FRHED_SUB_RELEASE_NO)\r
+\r
#include "PhysicalDrive.h"\r
#include "PMemoryBlock.h"\r
\r
\r
//--------------------------------------------------------------------------------------------\r
\r
-#define swapxor(x, y) ((x) < (y) ? 0 : (x) ^ (y))\r
-#define bitval(base,pos) ((base)[(pos)/8]&(1<<((pos)%8)))\r
#define ANSI_SET ANSI_FIXED_FONT\r
-#define OEM_SET OEM_FIXED_FONT\r
+#define OEM_SET OEM_FIXED_FONT\r
#define LITTLEENDIAN_MODE 0\r
#define BIGENDIAN_MODE 1\r
#define SCROLL_TIMER_ID 1\r
#define BMKTEXTMAX 256\r
#define TPL_TYPE_MAXLEN 16\r
#define TPL_NAME_MAXLEN 128\r
-#define FINDDLG_BUFLEN (64*1024)\r
\r
typedef struct\r
{\r
// Global variables.\r
#include "simparr.h"\r
\r
-HRESULT ResolveIt( HWND hwnd, LPCSTR lpszLinkFile, LPSTR lpszPath );\r
//--------------------------------------------------------------------------------------------\r
enum ClickArea { AREA_NONE, AREA_OFFSETS, AREA_BYTES, AREA_CHARS };\r
enum SCROLL_TYPE { SCROLL_NONE, SCROLL_BACK, SCROLL_FORWARD };\r
+enum EnteringMode { BYTES, CHARS };\r
\r
class hexfile_stream;\r
class load_hexfile_0;\r
void set_drag_caret(long x, long y, bool Copying, bool Overwrite );\r
void fix_scroll_timers(long x, long y);\r
void kill_scroll_timers();\r
- int lbd_pos; //ClickArea lbd_area;\r
+ int lbd_pos;\r
int nibblenum, bytenum, column, line, new_pos, old_pos, old_col, old_row;\r
int bMouseOpDelayTimerSet;\r
- //int ScrollInset;\r
- int ScrollDelay;\r
- int ScrollInterval;\r
- int MouseOpDist;\r
- int MouseOpDelay;\r
SCROLL_TYPE prev_vert;\r
SCROLL_TYPE prev_horz;\r
\r
void apply_template_on_memory( char* pcTpl, int tpl_len, SimpleArray<char>& ResultArray );\r
void apply_template(char *pcTemplate);\r
void CMD_apply_template();\r
- void dropfiles(HDROP);\r
+ virtual void STDMETHODCALLTYPE dropfiles(HDROP);\r
void CMD_open_partially();\r
void CMD_clear_all_bmk();\r
void CMD_remove_bkm();\r
Settings *STDMETHODCALLTYPE get_settings();\r
Status *STDMETHODCALLTYPE get_status();\r
int STDMETHODCALLTYPE translate_accelerator(MSG *);\r
+ BOOL STDMETHODCALLTYPE load_lang(LANGID);\r
\r
virtual int STDMETHODCALLTYPE load_file(const char* fname);\r
int file_is_loadable(const char* fname);\r
void vscroll(int cmd);\r
void hscroll(int cmd);\r
int paint();\r
- int command(int cmd);\r
+ virtual void STDMETHODCALLTYPE command(int cmd);\r
int destroy_window();\r
virtual void STDMETHODCALLTYPE set_wnd_title();\r
- void set_caret_pos ();\r
+ void set_caret_pos();\r
void print_text(HDC hdc, int x, int y, char *pch, int cch);\r
virtual HRESULT STDMETHODCALLTYPE ResolveIt(LPCSTR lpszLinkFile, LPSTR lpszPath);\r
\r
//Pabs inserted\r
int bMakeBackups;//Backup the file when saving\r
//end\r
+ static int ScrollDelay;\r
+ static int ScrollInterval;\r
+ static int MouseOpDist;\r
+ static int MouseOpDelay;\r
static SimpleString TexteditorName;\r
static SimpleString EncodeDlls;\r
static int iPasteAsText;\r
int iBmkCount;\r
bookmark pbmkList[BMKMAX];\r
int iMRU_count;\r
- char strMRU[MRUMAX][_MAX_PATH+1];\r
+ char strMRU[MRUMAX][_MAX_PATH];\r
int bFilestatusChanged;\r
int bScrollTimerSet;\r
int iMouseX, iMouseY;\r
\r
void reverse_bytes(BYTE *, BYTE *);\r
\r
+void NTAPI TranslateDialog(HWND);\r
+INT_PTR NTAPI ShowModalDialog(UINT, HWND, DLGPROC, LPVOID);\r
+\r
class WaitCursor\r
{\r
private:\r
static INT_PTR CALLBACK DlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)\r
{\r
if (uMsg == WM_INITDIALOG)\r
+ {\r
SetWindowLong(hWnd, DWL_USER, lParam);\r
+ TranslateDialog(hWnd);\r
+ }\r
return ((T *)GetWindowLong(hWnd, DWL_USER))->DlgProc(hWnd, uMsg, wParam, lParam);\r
}\r
public:\r
INT_PTR DoModal(HWND hWnd)\r
{\r
- return DialogBoxParam(hMainInstance, MAKEINTRESOURCE(IDD), hWnd, DlgProc, (LPARAM)this);\r
+ return ShowModalDialog(IDD, hWnd, DlgProc, this);\r
}\r
};\r
\r
y = temp;\r
}\r
\r
-//--------------------------------------------------------------------------------------------\r
-// MAKROS\r
-//Pabs replaced iOffsetLen w iMaxOffsetLen\r
-#define CHARSTART (iMaxOffsetLen + iByteSpace + iBytesPerLine * 3 + iCharSpace)\r
-#define BYTEPOS (iCurByte % iBytesPerLine)\r
-#define BYTELINE (iCurByte / iBytesPerLine)\r
-#define BYTES_LOGICAL_COLUMN (iMaxOffsetLen + iByteSpace + BYTEPOS * 3 + iCurNibble)\r
-//end\r
-#define CHARS_LOGICAL_COLUMN (CHARSTART + BYTEPOS)\r
-#define STARTSELECTION_LINE (iStartOfSelection / iBytesPerLine)\r
-#define ENDSELECTION_LINE (iEndOfSelection / iBytesPerLine)\r
-#define IN_BOUNDS( i, a, b ) ( ( i >= a && i <= b ) || ( i >= b && i <= a ) )\r
-#define BYTES 0 // for EnteringMode\r
-#define CHARS 1\r
-#define WM_F1DOWN (WM_USER+1)\r
-\r
-//============================================================================================\r
-// The main window object.\r
-\r
extern HINSTANCE hMainInstance;\r
extern int iMovePos;\r
enum OPTYP { OPTYP_MOVE, OPTYP_COPY };\r
#include "precomp.h"\r
#include "ido.h"\r
#include "hexwnd.h"\r
-#include <shlwapi.h>\r
\r
/*The #ifndef __CYGWIN__s are there because cygwin/mingw doesn't yet have\r
certain APIs in their import libraries. Specifically _wremove, _wopen & GetEnhMetaFileBits.*/\r
if (numformatetcs && formatetcs)\r
{\r
LVCOLUMN col;\r
- Zero(col);\r
+ ZeroMemory(&col, sizeof col);\r
ListView_InsertColumn(list, 0, &col);\r
char szFormatName[100];\r
UINT i;\r
{\r
case IDOK:\r
{\r
- effect = IsDlgButtonChecked( h, IDC_MOVE ) ? false : true;\r
+ effect = !IsDlgButtonChecked(h, IDC_MOVE);\r
HWND list = GetDlgItem(h, IDC_LIST);\r
numformats = ListView_GetSelectedCount(list);\r
- if( numformats ){\r
- for(;;)\r
+ if (numformats)\r
+ {\r
+ formats = (UINT*)malloc(numformats * sizeof *formats);\r
+ if (formats == 0)\r
{\r
- formats = (UINT*)malloc( numformats*sizeof(*formats) );\r
- if(formats) break;\r
- numformats--; //numformats/=2; //Or this\r
+ MessageBox(h, "Not enough memory", "Drag-drop", MB_ICONERROR);\r
+ return TRUE;\r
}\r
- if( formats ){\r
- LVITEM temp;\r
- Zero(temp);\r
- temp.mask = LVIF_PARAM;\r
- temp.iItem = -1;\r
- for( UINT i = 0; i < numformats; i++ ){\r
- temp.iItem = ListView_GetNextItem(list, temp.iItem, LVNI_SELECTED);\r
- ListView_GetItem(list,&temp);\r
- formats[i] = temp.lParam;\r
- }\r
+ LVITEM temp;\r
+ ZeroMemory(&temp, sizeof temp);\r
+ temp.mask = LVIF_PARAM;\r
+ temp.iItem = -1;\r
+ for (UINT i = 0 ; i < numformats ; i++)\r
+ {\r
+ temp.iItem = ListView_GetNextItem(list, temp.iItem, LVNI_SELECTED);\r
+ ListView_GetItem(list, &temp);\r
+ formats[i] = temp.lParam;\r
}\r
}\r
EndDialog (h, 1);\r
{\r
HWND list = GetDlgItem(h, IDC_LIST);\r
LVITEM item[2];\r
- Zero(item[0]);\r
- Zero(item[1]);\r
+ ZeroMemory(item, sizeof item);\r
//If anyone knows a better way to swap two items please send a patch\r
item[0].iItem = ListView_GetNextItem(list, (UINT)-1, LVNI_SELECTED);\r
if(item[0].iItem==-1) item[0].iItem = ListView_GetNextItem(list, (UINT)-1, LVNI_FOCUSED);\r
//Get data\r
switch( stm.tymed ){\r
case TYMED_HGLOBAL:{\r
- LPVOID pmem = GlobalLock( stm.hGlobal );\r
- if( pmem ){\r
- try{ memcpy( data, pmem, len ); }\r
- catch(...){}\r
+ if (LPVOID pmem = GlobalLock(stm.hGlobal))\r
+ {\r
+ memcpy(data, pmem, len);\r
gotdata = true;\r
- GlobalUnlock( stm.hGlobal );\r
+ GlobalUnlock(stm.hGlobal);\r
}\r
} break;\r
#ifndef __CYGWIN__\r
}\r
} break;//HBITMAP\r
case TYMED_MFPICT:{\r
- METAFILEPICT*pMFP=(METAFILEPICT*)GlobalLock( stm.hMetaFilePict );\r
- if( pMFP ){\r
- try{\r
- memcpy( data, pMFP, sizeof(*pMFP) );\r
- GetMetaFileBitsEx( pMFP->hMF, len - sizeof(*pMFP), &data[sizeof(*pMFP)] );\r
- GlobalUnlock( stm.hMetaFilePict );\r
- gotdata = true;\r
- }\r
- catch(...){}\r
+ if (METAFILEPICT *pMFP = (METAFILEPICT *)GlobalLock(stm.hMetaFilePict))\r
+ {\r
+ memcpy(data, pMFP, sizeof *pMFP);\r
+ GetMetaFileBitsEx( pMFP->hMF, len - sizeof(*pMFP), &data[sizeof(*pMFP)] );\r
+ GlobalUnlock( stm.hMetaFilePict );\r
+ gotdata = true;\r
}\r
} break;//HMETAFILE\r
#ifndef __CYGWIN__\r
len = *(DWORD*)data;\r
DataToInsert += 4;\r
} else if( fe.cfFormat == CF_TEXT || fe.cfFormat == CF_OEMTEXT ){\r
- try { len = strlen( (char*)data ); } catch(...){}\r
+ len = strlen( (char*)data );\r
} else if( fe.cfFormat == CF_UNICODETEXT ){\r
- try { len = sizeof(wchar_t)*wcslen( (wchar_t*)data ); } catch(...){}\r
+ len = sizeof(wchar_t)*wcslen( (wchar_t*)data );\r
}\r
\r
//Insert/overwrite data into DataArray\r
#include "toolbar.h"\r
\r
static const char szMainClass[] = "frhed wndclass";\r
-static const char szHexClass[] = "frhed hexclass";\r
+static const char szHexClassA[] = "hekseditA_" CURRENT_VERSION "." SUB_RELEASE_NO;\r
+static const char szHexClassW[] = "hekseditW_" CURRENT_VERSION "." SUB_RELEASE_NO;\r
\r
HINSTANCE hMainInstance;\r
-LRESULT CALLBACK MainWndProc (HWND, UINT, WPARAM, LPARAM);\r
+LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);\r
+\r
+static BOOL NTAPI IsNT()\r
+{\r
+ OSVERSIONINFO osvi;\r
+ ZeroMemory(&osvi, sizeof osvi);\r
+ osvi.dwOSVersionInfoSize = sizeof osvi;\r
+ if (!GetVersionEx(&osvi))\r
+ osvi.dwPlatformId = 0;\r
+ return osvi.dwPlatformId == VER_PLATFORM_WIN32_NT;\r
+}\r
+\r
\r
static BOOL CALLBACK WndEnumProcCountInstances(HWND hwnd, LPARAM lParam)\r
{\r
\r
int WINAPI WinMain(HINSTANCE hIconInstance, HINSTANCE, char *szCmdLine, int)\r
{\r
+ OleInitialize(NULL);\r
InitCommonControls();\r
\r
hMainInstance = LoadLibrary("heksedit.dll");\r
MSG msg;\r
\r
WNDCLASS wndclass;\r
- Zero(wndclass);\r
+ ZeroMemory(&wndclass, sizeof wndclass);\r
\r
//Register the main window class\r
wndclass.style = CS_HREDRAW | CS_VREDRAW;\r
\r
RegisterClass(&wndclass);\r
\r
- OleInitialize(NULL);\r
-\r
int iInstCount = 0;\r
EnumWindows(WndEnumProcCountInstances, (LPARAM)&iInstCount);\r
\r
ShowWindow(hwndMain, pHexWnd->iWindowShowCmd);\r
UpdateWindow(hwndMain);\r
\r
- if (szCmdLine != NULL && strlen(szCmdLine) != 0)\r
+ if (*szCmdLine != '\0')\r
{\r
// Command line not empty: open a file on startup.\r
char *p = szCmdLine;\r
if (SUCCEEDED(hres))\r
{\r
// Trying to open a link file: decision by user required.\r
- int ret = MessageBox( hwndMain,\r
+ int ret = MessageBox(hwndMain,\r
"You are trying to open a link file.\n"\r
"Click on Yes if you want to open the file linked to,\n"\r
"or click on No if you want to open the link file itself.\n"\r
{\r
pHexWnd->load_file(szCmdLine);\r
}\r
- if (dwEnd) pHexWnd->CMD_setselection(dwStart, dwEnd);\r
+ if (dwEnd)\r
+ pHexWnd->CMD_setselection(dwStart, dwEnd);\r
}\r
\r
while (GetMessage(&msg, NULL, 0, 0))\r
}\r
}\r
\r
+ FreeLibrary(hMainInstance);\r
OleUninitialize();\r
-\r
+ _CrtDumpMemoryLeaks();\r
return msg.wParam;\r
}\r
\r
//--------------------------------------------------------------------------------------------\r
// The main window procedure.\r
-LRESULT CALLBACK MainWndProc( HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam )\r
+LRESULT CALLBACK MainWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)\r
{\r
- switch (iMsg) {\r
- case WM_CREATE:\r
- hwndMain = hwnd;\r
- DragAcceptFiles(hwnd, TRUE); // Accept files dragged into main window.\r
- hwndToolBar = CreateTBar(hwnd, hMainInstance);\r
- hwndHex = CreateWindowEx(WS_EX_CLIENTEDGE, szHexClass, 0,\r
- WS_TABSTOP | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL,\r
- 10, 10, 100, 100, hwnd, 0, hMainInstance, 0);\r
- pHexWnd = (HexEditorWindow *)GetWindowLong(hwndHex, GWL_USERDATA);\r
- hwndStatusBar = CreateStatusWindow(\r
- CCS_BOTTOM | WS_CHILD | WS_VISIBLE | SBARS_SIZEGRIP,\r
- "Ready", hwnd, 2);\r
- pHexWnd->hwndMain = hwnd;\r
- pHexWnd->hwndToolBar = hwndToolBar;\r
- pHexWnd->hwndStatusBar = hwndStatusBar;\r
- pHexWnd->bSaveIni = TRUE;\r
- pHexWnd->bCenterCaret = TRUE;\r
- pHexWnd->set_wnd_title();\r
+ switch (iMsg)\r
+ {\r
+ case WM_CREATE:\r
+ hwndMain = hwnd;\r
+ DragAcceptFiles(hwnd, TRUE); // Accept files dragged into main window.\r
+ hwndToolBar = CreateTBar(hwnd, hMainInstance);\r
+ hwndHex = CreateWindowEx(WS_EX_CLIENTEDGE,\r
+ IsNT() ? szHexClassW : szHexClassA, 0,\r
+ WS_TABSTOP | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL,\r
+ 10, 10, 100, 100, hwnd, 0, hMainInstance, 0);\r
+ pHexWnd = (HexEditorWindow *)GetWindowLong(hwndHex, GWL_USERDATA);\r
+ hwndStatusBar = CreateStatusWindow(\r
+ CCS_BOTTOM | WS_CHILD | WS_VISIBLE | SBARS_SIZEGRIP,\r
+ "Ready", hwnd, 2);\r
+ pHexWnd->hwndMain = hwnd;\r
+ pHexWnd->hwndToolBar = hwndToolBar;\r
+ pHexWnd->hwndStatusBar = hwndStatusBar;\r
+ pHexWnd->bSaveIni = TRUE;\r
+ pHexWnd->bCenterCaret = TRUE;\r
+ pHexWnd->set_wnd_title();\r
+ return 0;\r
+ case WM_COMMAND:\r
+ pHexWnd->command(LOWORD(wParam));\r
+ break;\r
+ case WM_DROPFILES:\r
+ pHexWnd->dropfiles(reinterpret_cast<HDROP>(wParam));\r
+ break;\r
+ case WM_SETFOCUS:\r
+ SetFocus(hwndHex);\r
+ break;\r
+ case WM_CLOSE: \r
+ if (!pHexWnd->close())\r
return 0;\r
- case WM_COMMAND: return SendMessage(hwndHex, iMsg, wParam, lParam);\r
- case WM_SETFOCUS: SetFocus(hwndHex); break;\r
- case WM_CLOSE: \r
- if (!pHexWnd->close())\r
- return 0;\r
- break;\r
- //return SendMessage(hwndHex, iMsg, wParam, lParam);\r
- case WM_INITMENUPOPUP: pHexWnd->initmenupopup( wParam, lParam ); return 0;\r
- case WM_DROPFILES: return SendMessage(hwndHex, iMsg, wParam, lParam);\r
-\r
- case WM_SIZE:{\r
+ break;\r
+ case WM_INITMENUPOPUP:\r
+ pHexWnd->initmenupopup(wParam, lParam);\r
+ break;\r
+ case WM_SIZE:\r
+ {\r
SendMessage(hwndStatusBar, WM_SIZE, 0 , 0); //Moves status bar back to the bottom\r
SendMessage(hwndToolBar, WM_SIZE, 0 , 0); //Moves tool bar back to the top\r
\r
int iToolbarHeight = rect.bottom - rect.top;\r
GetClientRect(hwndStatusBar, &rect);\r
MoveWindow(hwndHex, 0, iToolbarHeight, LOWORD(lParam), HIWORD(lParam)-rect.bottom-iToolbarHeight, TRUE);\r
- break;\r
}\r
-\r
- case WM_NOTIFY:{\r
- //See if someone sent us invalid data\r
- HWND h;\r
- UINT code;\r
- try{\r
- //Attempt to dereference\r
- NMHDR& pn = *(NMHDR*)lParam;\r
- h = pn.hwndFrom;\r
- code = pn.code;\r
- }\r
- catch(...){ return 0; }\r
-\r
- if (h == hwndStatusBar)\r
+ break;\r
+ case WM_NOTIFY:\r
+ {\r
+ NMHDR *pn = (NMHDR *)lParam;\r
+ HWND hwndFrom = pn->hwndFrom;\r
+ UINT code = pn->code;\r
+ if (hwndFrom == hwndStatusBar)\r
{\r
- if(code == NM_CLICK || code == NM_RCLICK)\r
+ if (code == NM_CLICK || code == NM_RCLICK)\r
pHexWnd->status_bar_click(code == NM_CLICK);\r
}\r
- else if (h == hwndToolBar)\r
+ else if (hwndFrom == hwndToolBar)\r
{\r
- if (code == TBN_GETINFOTIPA || code == TBN_GETINFOTIPW)\r
+ if (code == TBN_GETINFOTIPA)\r
{\r
- try{\r
- if(code == TBN_GETINFOTIPA){\r
- NMTBGETINFOTIPA& pi = *(NMTBGETINFOTIPA*) lParam;\r
- LoadStringA(hMainInstance,pi.iItem,pi.pszText,pi.cchTextMax);\r
- } else {\r
- NMTBGETINFOTIPW& pi = *(NMTBGETINFOTIPW*) lParam;\r
- LoadStringW(hMainInstance,pi.iItem,pi.pszText,pi.cchTextMax);\r
- }\r
- }\r
- catch(...){}\r
+ NMTBGETINFOTIPA *pi = (NMTBGETINFOTIPA *)lParam;\r
+ LoadStringA(hMainInstance, pi->iItem, pi->pszText, pi->cchTextMax);\r
+ }\r
+ else if (code == TBN_GETINFOTIPW)\r
+ {\r
+ NMTBGETINFOTIPW *pi = (NMTBGETINFOTIPW *)lParam;\r
+ LoadStringW(hMainInstance, pi->iItem, pi->pszText, pi->cchTextMax);\r
}\r
}\r
}\r
- return 0;\r
-\r
- case WM_DESTROY: {\r
+ break;\r
+ case WM_DESTROY:\r
+ {\r
// Store window position for next startup.\r
WINDOWPLACEMENT wndpl;\r
wndpl.length = sizeof(WINDOWPLACEMENT);\r
DragAcceptFiles(hwndMain, FALSE);\r
PostQuitMessage(0);\r
}\r
- return 0;\r
-\r
+ break;\r
}\r
return DefWindowProc(hwnd, iMsg, wParam, lParam );\r
}\r
-\r
-// The hex window procedure.\r
-/*LRESULT CALLBACK HexWndProc( HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam )\r
-{\r
- if (iMsg == WM_NCCREATE)\r
- SetWindowLong(hwnd, GWL_USERDATA, (LONG)new HexEditorWindow);\r
- HexEditorWindow *pHexWnd = (HexEditorWindow *)GetWindowLong(hwnd, GWL_USERDATA);\r
- LRESULT lResult = pHexWnd->OnWndMsg( hwnd, iMsg, wParam, lParam );\r
- if (iMsg == WM_NCDESTROY)\r
- delete pHexWnd;\r
- return lResult;\r
-}*/\r
-//============================================================================================\r
#define _WIN32_WINNT 0x0501\r
#include <windows.h>\r
+#include <windowsx.h>\r
+#include <crtdbg.h>\r
+#include <assert.h>\r
+#include <tchar.h>\r
#include <io.h>\r
#include <fcntl.h>\r
#include <sys/stat.h>\r
#include <string.h>\r
#include <stdio.h>\r
#include <commctrl.h>\r
-#include <objbase.h>\r
+#include <shlwapi.h>\r
#include <shlobj.h>\r
#include <limits.h>\r
#include "gtools.h"\r
-#define Zero(a) memset(&(a),0,sizeof(a))\r
//{{NO_DEPENDENCIES}}\r
-// Microsoft Developer Studio generated include file.\r
+// Microsoft Visual C++ generated include file.\r
// Used by heksedit.rc\r
//\r
#define IDC_UP 100\r
#define IDC_STATIC4 169\r
#define IDC_BUTTON1 170\r
#define IDC_FINDNEXT_BUTTON 171\r
-#define IDC_ST_VERSION 171\r
#define IDC_TYPE 172\r
#define IDC_FINDPREVIOUS_BUTTON 173\r
#define IDC_BROWSE 174\r
#define IDC_TEXT_DISPLAY 1079\r
#define IDC_ENABLE_DROP 1080\r
#define IDC_EXPORTDIGITS 1081\r
+#define IDC_APPICON 1082\r
#define IDM_OLE_DRAG_DROP 40142\r
\r
// Next default values for new objects\r
#define _APS_NO_MFC 1\r
#define _APS_NEXT_RESOURCE_VALUE 145\r
#define _APS_NEXT_COMMAND_VALUE 40143\r
-#define _APS_NEXT_CONTROL_VALUE 1082\r
+#define _APS_NEXT_CONTROL_VALUE 1083\r
#define _APS_NEXT_SYMED_VALUE 101\r
#endif\r
#endif\r
#include "precomp.h"\r
-#include <shlwapi.h>\r
#include "shtools.h"\r
/*Pabs inserted func\r
Create link files for registry menu\r
{ 12, ID_DISK_GOTOLASTTRACK, 0, TBSTYLE_BUTTON, 0, 0 }\r
};\r
\r
-/*LRESULT HexEditorWindow::SetTooltipText(LPTOOLTIPTEXT lpToolTipText)\r
-{\r
- UNREFERENCED_PARAMETER( hWnd );\r
- static char szBuffer[64];\r
- if ((lpToolTipText->hdr.code == TTN_NEEDTEXTA) ||\r
- (lpToolTipText->hdr.code == TTN_NEEDTEXTW))\r
- {\r
- LoadString(hMainInstance,\r
- lpToolTipText->hdr.idFrom, // string ID == command ID\r
- szBuffer,\r
- sizeof(szBuffer));\r
-\r
- lpToolTipText->lpszText = szBuffer;\r
- }\r
- return 0;\r
-}*/\r
-\r
HWND CreateTBar(HWND hWnd, HINSTANCE hInst)\r
{\r
HWND hwndToolBar = CreateToolbarEx(hWnd,\r
-#define CURRENT_VERSION "1.1"\r
-#define SUB_RELEASE_NO "0"\r
+#define FRHED_MAJOR_VERSION 1\r
+#define FRHED_MINOR_VERSION 2\r
+#define FRHED_SUB_RELEASE_NO 1\r
--- /dev/null
+#include "version.h"\r
+\r
+#define SHARPEN_A(X) #X\r
+#define SHARPEN_W(X) L#X\r
+#define SHARPEN(T,X) SHARPEN_##T(X)\r
+\r
+#define CURRENT_VERSION SHARPEN(A,FRHED_MAJOR_VERSION) "." SHARPEN(A,FRHED_MINOR_VERSION)\r
+#define SUB_RELEASE_NO SHARPEN(A,FRHED_SUB_RELEASE_NO)\r
+\r
+VS_VERSION_INFO VERSIONINFO\r
+ FILEVERSION FRHED_MAJOR_VERSION,FRHED_MINOR_VERSION,FRHED_SUB_RELEASE_NO,0\r
+ PRODUCTVERSION FRHED_MAJOR_VERSION,FRHED_MINOR_VERSION,FRHED_SUB_RELEASE_NO,0\r
+ FILEFLAGSMASK 0x3fL\r
+#ifdef _DEBUG\r
+ FILEFLAGS 0x21L\r
+#else\r
+ FILEFLAGS 0x20L\r
+#endif\r
+ FILEOS 0x40004L\r
+ FILETYPE 0x1L\r
+ FILESUBTYPE 0x0L\r
+BEGIN\r
+ BLOCK "StringFileInfo"\r
+ BEGIN\r
+ BLOCK "040904e4"\r
+ BEGIN\r
+ VALUE "Comments", "Homepage: http://www.kibria.de, http://zip.to/pabs3\0"\r
+ VALUE "CompanyName", "(c) Raihan Kibria 2000\0"\r
+ VALUE "FileDescription", "frhed - free hex editor " CURRENT_VERSION "." SUB_RELEASE_NO\r
+ VALUE "FileVersion", CURRENT_VERSION "." SUB_RELEASE_NO\r
+ VALUE "InternalName", "frhed\0"\r
+ VALUE "LegalCopyright", "GNU General Public License v2.0\0"\r
+ VALUE "LegalTrademarks", "\0"\r
+ VALUE "OriginalFilename", "frhed.exe\0"\r
+ VALUE "PrivateBuild", "\0"\r
+ VALUE "ProductName", "frhed\0"\r
+ VALUE "ProductVersion", CURRENT_VERSION "." SUB_RELEASE_NO\r
+ VALUE "SpecialBuild", "\0"\r
+ END\r
+ END\r
+ BLOCK "VarFileInfo"\r
+ BEGIN\r
+ VALUE "Translation", 0x409, 1252\r
+ END\r
+END\r