?? hex_dec_read.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 + -