⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hex_dec_read.cpp

📁 自己写的二进制编辑器.二进制阅读器.类似于ultra Edit. 功能:decimal,hexadecimal,char: 十进制显示
💻 CPP
字号:
#include "hex_dec_read.h"

extern char g_szFileName[MAX_PATH];
extern char *g_p,*g_ch;
extern int g_nIndicate,g_nItem,g_nCount, g_nFileLen ,g_nColor,g_nPosFind,g_nFindMode;
extern HWND g_hWndList,g_hWndProgress;
extern HANDLE g_hFile,g_hMap;
extern SCROLLINFO g_si;
extern RECT g_rcInvalid;
extern LPNMLISTVIEW g_lpnmlv;
extern BOOL g_bDecimal,g_bForeward;
//extern BYTE g_byNew;

char * Mid(char *str,int i,int j)
{
	
	if(i<0 || (unsigned)i>(strlen(str)) || j<=0 || unsigned(i+j-1)>(strlen(str)))
	{
		MessageBox(NULL,"Illegel arguments","Error",MB_OK);
		return NULL;
	}
	char *ch;
	ch=new char[j];
	for(int k=0;k<j;k++)
	{
		ch[k]=str[i+k];
	}
	return ch;
}
BOOL StringToNum(char *ch,BYTE & byNew)
{
	switch (strlen(ch))
	{
	case 1:
		{
			if(ISNUM(ch[0]))
			{
				byNew=CHARTONUM(ch[0]);
			}
			else
			{
				MessageBox(NULL,"You input a illegel number ","Illegel data",
					MB_OK);
				//EndDialog(hDlg,IDOK);
				return FALSE;
			}
		}
		break;
	case 2:
		{
			if(ISNUM(ch[0]) && ISNUM(ch[1]))
			{
				byNew=CHARTONUM(ch[0])*10+CHARTONUM(ch[1]);
			}
			else
			{
				MessageBox(NULL,"You input a illegel number ","Illegel data",
					MB_OK);
				return FALSE;
			}
		}
		break;
	case 3:
		{
			if(ISNUM(ch[0]) && ISNUM(ch[1]) && ISNUM(ch[2]))
			{
				byNew=CHARTONUM(ch[0])*100+CHARTONUM(ch[1])*10+CHARTONUM(ch[2]);
			}
			else
			{
				MessageBox(NULL,"You input a illegel number ","Illegel data",
					MB_OK);
				return FALSE;
			}
		}
		break;
	}
	return TRUE;
}
void CreateListItems()
{
	if(g_hFile)
	{
		CloseHandle(g_hFile);
		g_hFile=NULL;
	}
	if(g_hMap)
	{
		UnmapViewOfFile(g_p);
		CloseHandle(g_hMap);
		g_hMap=NULL;
	}
	DWORD dwCurrRead=0;
	memset(g_szFileName,0,sizeof(g_szFileName));
	
	/********************************************************************/
	OPENFILENAME file={0};
	file.lStructSize=sizeof(file);
	file.lpstrFile=g_szFileName;
	file.nMaxFile=MAX_PATH;
	file.lpstrFilter="ALL FILES(*.*)\0*.*\0Text FILes(*.txt)\0*.txt\0\0";
	file.nFilterIndex=0;
	if(!GetOpenFileName(&file))
	{
		MessageBox(g_hWndList,"Please Select a file!","Opening Failure!",MB_OK);
		return;
	}
	
	/*************************************************************************/				
	g_hFile=::CreateFile(g_szFileName,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,
		NULL,OPEN_EXISTING,
		FILE_ATTRIBUTE_NORMAL,NULL);
	if(g_hFile==INVALID_HANDLE_VALUE)
	{
		MessageBox(NULL,"Invalid File!","FileReaD",MB_OK);
		return ;
	}
	
	g_nFileLen=int(GetFileSize(g_hFile,NULL));
	
	g_si.cbSize=sizeof(g_si);
	g_si.fMask=SIF_ALL;
	g_si.nMin=0;
	g_si.nMax=g_nFileLen;
	g_si.nPos=0;
	g_si.nPage=330;
	SetScrollInfo(GetDlgItem(GetForegroundWindow(),IDC_SCROLLBAR1),SB_CTL,&g_si,TRUE);
	
	SetWindowText(GetForegroundWindow(),g_szFileName);
	char ch[200];
	wsprintf(ch,"g_nFileLen  IS : %012d bytes,%08d K,%04d M",g_nFileLen,g_nFileLen/1024,g_nFileLen/(1024*1024));
	SetDlgItemText(GetForegroundWindow(),IDC_FILESIZE,ch);
	g_nIndicate=g_nFileLen/30;
	g_nItem=0;
	g_hMap=::CreateFileMapping(g_hFile,NULL,PAGE_READWRITE,NULL,NULL,NULL);
	g_p=(char*)::MapViewOfFile(g_hMap,FILE_MAP_ALL_ACCESS,0,0,0);
	//char* pBuf=new char[g_nFileLen];
	//p=pBuf;		
	//::ReadFile(hFile,pBuf,g_nFileLen,&dwCurrRead,NULL);
	
	/*if(g_nFileLen!=int(dwCurrRead))
	{
	MessageBox(g_hWndList,"read error!","failed",MB_OK);
	}
	CloseHandle(hFile);*/
	InsertListItems();
}

void InsertListItems( )
{	
	::SendMessage(g_hWndList,LVM_DELETEALLITEMS,0,0);
	
	g_nCount=g_nItem*10;
	g_si.nPos=g_nItem*10;
	g_si.fMask=SIF_POS;
	SetScrollInfo(GetDlgItem(GetParent(GetForegroundWindow()),IDC_SCROLLBAR1),SB_CTL,&g_si,TRUE);
    //MessageBox(g_hWndList,"insertlistitems is called!","insertlistitems",NULL);
	if(g_bDecimal)
	{
		
		for(int i=0;i<34;i++)
		{
			if(g_nCount>g_nFileLen-1)
			{
				//Beep(300,1000);
				MessageBox(g_hWndList,"reading succeeded","success",MB_OK);
				return;
			}
			
			char ch[200];				
			wsprintf(ch,"%d--%d",(g_nItem+i)*10+1,(g_nItem+i)*10+10);
			
			LVITEM item={0};
			item.iItem=nLISTITEM;
			item.mask=LVIF_TEXT;
			item.pszText=ch;
			SendMessage(g_hWndList,LVM_INSERTITEM,0,(long)&item);
			
			LVITEM lvi={0};
			char pTemp[200];
			for(int j=0;j<10;j++)
			{
				if(g_nCount>g_nFileLen-1)
				{
					PlaySound("tada.wav",NULL,SND_FILENAME|SND_ASYNC );
					//MessageBox(g_hWndList,"reading succeeded","success",MB_OK);
					return;
				}
				BYTE temp=BYTE(*(g_p+g_nCount));		
				wsprintf(pTemp,"%d",temp);
				lvi.iSubItem=j+1;
				lvi.pszText=(LPTSTR)pTemp;
				SendMessage(g_hWndList,LVM_SETITEMTEXT,nLISTITEM,(long)&lvi);
				char ch[2];
				ch[1]=0;
				if(temp>=32 && temp <=127)
				{
					ch[0]=temp;
					lvi.iSubItem=j+12;
					lvi.pszText=(LPSTR)ch;
					SendMessage(g_hWndList,LVM_SETITEMTEXT,nLISTITEM,(long)&lvi);
				}
				else
				{
					ch[0]=' ';
					lvi.iSubItem=j+12;
					lvi.pszText=(LPSTR)ch;
					SendMessage(g_hWndList,LVM_SETITEMTEXT,nLISTITEM,(long)&lvi);
				} 
				if((g_nCount % g_nIndicate)==0)
				{
					SendMessage(g_hWndProgress,PBM_STEPIT,0,0);
				}
				g_nCount++;
			}		
			//g_nItem++;		
		}
		/*****************************************************************************************/
	}
	else
	{
		for(int i=0;i<34;i++)
		{
			if(g_nCount>g_nFileLen-1)
			{
				//Beep(300,1000);
				MessageBox(g_hWndList,"reading succeeded","success",MB_OK);
				return;
			}
			
			char ch[200];				
			wsprintf(ch,"%0X--%0X",(g_nItem+i)*10+1,(g_nItem+i)*10+10);
			
			LVITEM item={0};
			item.iItem=nLISTITEM;
			item.mask=LVIF_TEXT;
			item.pszText=ch;
			SendMessage(g_hWndList,LVM_INSERTITEM,0,(long)&item);
			
			LVITEM lvi={0};
			char pTemp[200];
			for(int j=0;j<10;j++)
			{
				if(g_nCount>g_nFileLen-1)
				{
					PlaySound("tada.wav",NULL,SND_FILENAME|SND_ASYNC );
					//MessageBox(g_hWndList,"reading succeeded","success",MB_OK);
					return;
				}
				BYTE temp=BYTE(*(g_p+g_nCount));		
				wsprintf(pTemp,"%02X",temp);
				lvi.iSubItem=j+1;
				lvi.pszText=(LPTSTR)pTemp;
				SendMessage(g_hWndList,LVM_SETITEMTEXT,nLISTITEM,(long)&lvi);
				char ch[2];
				ch[1]=0;
				if(temp>=32 && temp <=127)
				{
					ch[0]=temp;
					lvi.iSubItem=j+12;
					lvi.pszText=(LPSTR)ch;
					SendMessage(g_hWndList,LVM_SETITEMTEXT,nLISTITEM,(long)&lvi);
				}
				else
				{
					ch[0]=' ';
					lvi.iSubItem=j+12;
					lvi.pszText=(LPSTR)ch;
					SendMessage(g_hWndList,LVM_SETITEMTEXT,nLISTITEM,(long)&lvi);
				} 
				if((g_nCount % g_nIndicate)==0)
				{
					SendMessage(g_hWndProgress,PBM_STEPIT,0,0);
				}
				g_nCount++;
			}		
			//g_nItem++;		
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -