HexEditor

Editor esadecimale gratuito e con sorgenti in visual c++.

Il lavoro realizzato sulla base dei programma Hex Edit Control ActiveX realizzato da Eugene Pavlov (http://www.softerra.com) e reso disponibile gratuitamente.

Il lavoro di Pavlov è stato finalizzato alla creazione di un activeX, mentre nel mio caso è stata implementata una classe CFGHexEdit che è una classe derivata da un edit control standard di window.

Di seguito trovate il progetto scaricabile, l'eseguibile del programma e i sorgenti principali della classe indicata.

 

 

Software completamente gratuito e ridistribuibile completo di sorgenti

 
Get it from CNET Download.com!  

Caratteristiche
Editor esadecimale e ASCII
Possibilità di editare sia i dati in formato esadecimale sia in formato ASCII

Programma Free :

FGEdit (Programma)

FGEditProject (Progetto)

CFGHexEdit.h
CFGHexEdit.cpp

CFGEditView.h
CFGEditView.cpp

Contenuti

Routine di conversione decimale/esadecimale
Come leggere un file e salvare un file in binario
Come memorizzare dati in CByteArray usando la GetData()

Languages
Visual C++
Microsoft Foundation Class (MFC)
Operating system

Windows
Databases
Nessuno

Esempio di utilizzo all'interno di un altra applicazione:

//Nel header ... della propria classe ...
#include "CFGHexEdit.h"
...
CFGHexEdit theEditor; //Dichiara oggetto FGHexEdit

//Nel implemementazione della propria classe
...
CRect rcSize;
GetClientRect(rcSize); //Ricavo le coordinate della finestra
theEditor.Create(rcSize,this,0x01); //Creo il campo di editor

//Per passare i dati da editare

CByteArray data; //Array dei dati
for(int i=0; i < 4096; i++) //Riempio con dati di prova...
data.Add(i);

theEditor.SetData(data); //Imposto i dati dell'editor hex

....

//Per leggere i dati eventualmente modificati dall'utente nel editor esadecimale

CByteArray newData;
CString msg;
newData.Copy(theEditor.GetData());
for(int i=0; i < newData.GetSize(); i++){
//Leggo i singoli bytes
msg.Format("Caratte: %c Hex: %0x",newData[i],newData[i])
//Formatto l'output in una Stringa
AfxMessageBox(msg); //Visualizzo messaggio con il valore ASCII del byte e HEX
}
Nota: Per l'uso nelle finestre di dialogo è sufficiente sostituire la classe CEdit con la CFGHexEdit.
trovate un esempio nel file
CFGEditView

La classe CFGHexEdit è quella che si occupa di tutta la gestione dall'editing alla visualizzazione dei dati.

I principali metodi implementati sono:

void OnLoadFile() Apre la finestra di dialogo per selezionare il file da editare

void OnSaveFile() Apre la finestra di dialogo per selezionare il nome del file da memorizzare con i dati modificati

BOOL Create(CRect rcSize,CWnd *pParent,int edtID) Crea l'oggetto CFGHexEdit (vedere la classe CFGEditView per un esempio)

void SetColorScheme(COLORREF clrForeWnd,COLORREF clrBackWnd,COLORREF clrForeHex,COLORREF clrBackHex,COLORREF clrForeASCII,COLORREF clrBackACII) Imposta i colori

void SetData(CByteArray& theData) Imposta i dati da editare, questo metodo va usato solo se non si utilizza la OnLoadFile(), e serve per integrare l'oggetto CFGHexEdit con la propria applicazione.

CByteArray& GetData() Restituisce i dati modificati nella finestra di edit, questo metodo va usato solo se non si utilizza OnSaveFile() e serve per integrare l'oggetto CFGHexEdit con la propria applicazione.