void ToggleEditorMode(HWND hwndHV) { UINT nMode; nMode = HexView_GetEditMode(hwndHV); //nMode = (nMode + 1) % 2;//3; if(nMode == HVMODE_INSERT) nMode = HVMODE_OVERWRITE; else nMode = HVMODE_INSERT; HexView_SetEditMode(hwndHV, nMode); nMode = HexView_GetEditMode(hwndHV); }
void InitHexPreview(HWND hwndHV) { char sample_data[] = "sample data. selected data"; char modify_data[] = "modified bytes"; HexView_InitBuf(hwndHV, sample_data, sizeof(sample_data)); HexView_SetEditMode(hwndHV, HVMODE_INSERT); HexView_SetData(hwndHV, 13, (BYTE *)modify_data, sizeof(modify_data)); SendMessage(hwndHV, WM_SETFONT, (WPARAM)GetStockObject(ANSI_FIXED_FONT), 0); SetWindowLong(hwndHV, GWL_EXSTYLE, WS_EX_CLIENTEDGE|WS_EX_CONTROLPARENT); HexView_SetStyle(hwndHV, -1, HVS_DISABLE_UNDO); //HexView_SetEditMode(hwndHV, HVMODE_READONLY); HexView_SetLineLen(hwndHV, 8); HexView_SetAddressOffset(hwndHV, 0x12345); HexView_SetPadding(hwndHV, 2, 1); }
LONG StatusBar_DropDownTB(MAINWND *mainWnd, HWND hwndHV, NMTOOLBAR *nmtb) { RECT rect = nmtb->rcButton; HMENU hMenu, hPopup; UINT mode, cmdId; MapWindowPoints(nmtb->hdr.hwndFrom, 0, (POINT *)&rect, 2); switch(nmtb->hdr.idFrom) { case IDM_STATUSBAR_CURSORPOS: hMenu = LoadMenu(g_hInstance, MAKEINTRESOURCE(IDR_MENU3)); hPopup = GetSubMenu(hMenu, 0); MenuCheckMark(hPopup, IDM_STATUS_HEX, g_fStatusHexCursor); MenuCheckMark(hPopup, IDM_STATUS_DEC, !g_fStatusHexCursor); break; case IDM_STATUSBAR_VALUE: hMenu = LoadMenu(g_hInstance, MAKEINTRESOURCE(IDR_MENU2)); hPopup = GetSubMenu(hMenu, 0); MenuCheckMark(hPopup, IDM_VALUE_SIGNED, g_fStatusSignedValue); MenuCheckMark(hPopup, IDM_VALUE_ENDIAN, g_fStatusBigEndian); MenuCheckMark(hPopup, IDM_VALUE_HEX, g_fStatusHexValue); CheckMenuRadioItem(hPopup, IDM_VALUE_BYTE, IDM_VALUE_DOUBLE, g_nStatusValueType, MF_BYCOMMAND); break; case IDM_STATUSBAR_SIZE: hMenu = LoadMenu(g_hInstance, MAKEINTRESOURCE(IDR_MENU3)); hPopup = GetSubMenu(hMenu, 0); MenuCheckMark(hPopup, IDM_STATUS_HEX, g_fStatusHexSize); MenuCheckMark(hPopup, IDM_STATUS_DEC, !g_fStatusHexSize); break; case IDM_STATUSBAR_MODE: hMenu = LoadMenu(g_hInstance, MAKEINTRESOURCE(IDR_MENU4)); hPopup = GetSubMenu(hMenu, 0); mode = HexView_GetEditMode(hwndHV); MenuCheckMark(hPopup, IDM_STATUSBAR_INSERT, mode == HVMODE_INSERT); MenuCheckMark(hPopup, IDM_STATUSBAR_OVERWRITE, mode == HVMODE_OVERWRITE); MenuCheckMark(hPopup, IDM_STATUSBAR_READONLY, mode == HVMODE_READONLY); break; } //CheckMenuItem(hMenu, IDM_ cmdId = TrackPopupMenu(hPopup, TPM_RETURNCMD|TPM_RIGHTALIGN|TPM_BOTTOMALIGN, rect.right, rect.top, 0, g_hwndMain, 0); switch(cmdId) { case IDM_STATUSBAR_INSERT: HexView_SetEditMode(hwndHV, HVMODE_INSERT); break; case IDM_STATUSBAR_OVERWRITE: HexView_SetEditMode(hwndHV, HVMODE_OVERWRITE); break; case IDM_STATUSBAR_READONLY: HexView_SetEditMode(hwndHV, HVMODE_READONLY); break; case IDM_STATUS_HEX: if(nmtb->hdr.idFrom == IDM_STATUSBAR_SIZE) g_fStatusHexSize = TRUE; else g_fStatusHexCursor = TRUE; break; case IDM_STATUS_DEC: if(nmtb->hdr.idFrom == IDM_STATUSBAR_SIZE) g_fStatusHexSize = FALSE; else g_fStatusHexCursor = FALSE; break; case IDM_VALUE_HEX: g_fStatusHexValue = !g_fStatusHexValue; break; case IDM_VALUE_ENDIAN: g_fStatusBigEndian = !g_fStatusBigEndian; break; case IDM_VALUE_SIGNED: g_fStatusSignedValue = !g_fStatusSignedValue; break; case IDM_VALUE_BYTE: case IDM_VALUE_WORD: case IDM_VALUE_DWORD: case IDM_VALUE_QWORD: case IDM_VALUE_FLOAT: case IDM_VALUE_DOUBLE: g_nStatusValueType = cmdId; break; } DestroyMenu(hMenu); UpdateStatusBarText(mainWnd->hwndStatusBar, hwndHV); if(nmtb->hdr.idFrom == IDM_VALUE_SHOW) { } return 0; }