|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
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.
|
| |
|
|