📄 main.cpp
字号:
g_nTickTotal=0;
switch(g_nFindMode)
{
case HEXADECIMAL_FIND:
{
for (int j=0;j<(g_nFileLen-g_nCh/3);j++)
{
if(!memcmp(g_pBy,(g_p+j),g_nCh/3))
{
g_nTickTotal++;
}
}
}
break;
case DECIMAL_FIND:
{
for (int j=0;j<(g_nFileLen-g_nCh/2);j++)
{
if(!memcmp(g_pBy,(g_p+j),g_nCh/2))
{
g_nTickTotal++;
}
}
}
break;
case CHAR_FIND:
{
for (int j=0;j<g_nFileLen-g_nCh;j++)
{
if(!memcmp(g_ch,(g_p+j),g_nCh))
{
g_nTickTotal++;
}
}
}
break;
}
char ch[200];
wsprintf(ch,"g_nPosFind IS : %012d bytes,%08d K,%04d M, g_nTickTemp IS : %05d",
g_nPosFind,g_nPosFind/1024,g_nPosFind/(1024*1024),g_nTickTemp);
SetDlgItemText(GetParent(GetForegroundWindow()),IDC_POS_FIND,ch);
wsprintf(ch,"g_nFileLen IS : %012d bytes,%08d K,%04d M, g_nTickTotal IS : %05d",
g_nFileLen,g_nFileLen/1024,g_nFileLen/(1024*1024),g_nTickTotal);
SetDlgItemText(GetParent(GetForegroundWindow()),IDC_FILESIZE,ch);
return 0;
}
BOOL __stdcall Dialog_Replace_All(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_INITDIALOG:
{
switch(g_nFindMode)
{
case DECIMAL_FIND:
{
CheckDlgButton(hDlg,IDC_FIND_DECIMAL,BST_CHECKED);
}
break;
case HEXADECIMAL_FIND:
{
CheckDlgButton(hDlg,IDC_FIND_HEXADECIMAL,BST_CHECKED);
}
break;
case CHAR_FIND:
{
CheckDlgButton(hDlg,IDC_FIND_CHAR,BST_CHECKED);
}
break;
}
g_bModified=g_bTickTotal=TRUE;
g_nTickTemp=g_nTickTotal=g_nPosFind=0;
// MoveWindow(hDlg,100,400,750,200,TRUE);
SetWindowText(GetDlgItem(hDlg,IDC_STR_REPLACE),g_chReplace);
SetWindowText(GetDlgItem(hDlg,IDC_STR_FIND),g_chFind);
}
break;
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDOK:
{
GetDlgItemText(hDlg,IDC_STR_REPLACE,g_chReplace,sizeof(g_chReplace));
GetDlgItemText(hDlg,IDC_STR_FIND,g_chFind,sizeof(g_chFind));
EndDialog(hDlg,IDOK);
}
break;
case IDC_FIND_DECIMAL:
{
idc_find_decimal(hDlg);
}
break;
case IDC_FIND_HEXADECIMAL:
{
idc_find_hexadecimal(hDlg);
}
break;
case IDC_FIND_CHAR:
{
idc_find_char(hDlg);
}
break;
case IDC_BTN_REPLACE_ALL://2008.4.12
{
idc_btn_replace_all(hDlg);
}
break;
}
}
break;
}
return FALSE;
}
int idc_find_forebackward(HWND hDlg)
{
char pTemp[20];
memset(pTemp,0,sizeof(pTemp));
//char *end;
char ch[200];
char chLocal[200];
memset(chLocal,0,sizeof(chLocal));
GetDlgItemText(hDlg,IDC_STR_FIND,chLocal,sizeof(chLocal));
if(!(strlen(chLocal)==strlen(g_ch)) || strncmp(chLocal,g_ch,strlen(chLocal)))
{
GetDlgItemText(hDlg,IDC_STR_FIND,g_ch,sizeof(g_ch));
g_nCh=strlen(g_ch);
g_nTickTemp=g_nTickTotal=g_nItem=g_nPosFind=0;
g_bModified=g_bTickTotal=TRUE;
InsertListItems();
}
switch(g_nFindMode)
{
case DECIMAL_FIND:
{
for(int ii=0;ii<g_nCh;ii++)
{
if(!isdigit(g_ch[ii]))
{
MessageBox(NULL,"Your Input Data is not DIGIT! ","Illegal data!",MB_OK);
//g_bModified=TRUE;
return FALSE;
}
}
if((g_nCh%3)!=0 || g_nCh==0)
{
MessageBox(hDlg,"You must input a string,the length of which must be THREEs !",
"Illegal Data!",MB_OK);
//g_bModified=TRUE;
return FALSE;
}
if(g_bModified)
{
for(int i=0;i<g_nCh/3;i++)
{
g_pBy[i]=(BYTE)(strtoul(strncpy(pTemp,g_ch+3*i,3),&g_end,10));
MessageBox(NULL,strncpy(pTemp,g_ch,3),"test",MB_OK);
}
g_bModified=FALSE;
}
for (int j=0;j<g_nFileLen;j++)
{
if(!g_bForeward && g_nPosFind<0 )
{
g_nPosFind=g_nCount=g_nTickTemp=0;
MessageBox(NULL,"YOU HAVE REACHED the H_E_A_D of THE FILE!","FIND END!",MB_OK);
return FALSE;
}
if(g_nPosFind>(g_nFileLen-g_nCh/3-1))
{
g_nPosFind=g_nFileLen-g_nCh/3-1;
MessageBox(NULL,"YOU HAVE REACHED the E_N_D of THE FILE!","FIND END!",MB_OK);
return FALSE;
}
if(!memcmp(g_pBy,(g_p+g_nPosFind),g_nCh/3))
{
g_bForeward?(g_nTickTemp++):(g_nTickTemp--);
g_nItem=g_nPosFind/10;
g_si.nPos=g_nCount=g_nItem*10;
InsertListItems();
MessageBox(NULL,g_ch,"str_find",MB_OK);
if(g_bTickTotal)
{
g_bTickTotal=FALSE;
CheckDlgButton(hDlg,IDC_TICK_TOTAL,BST_UNCHECKED);
idc_update();
}
g_bForeward?g_nPosFind++:g_nPosFind--;
if(!g_bForeward && g_nPosFind<0 )
{
g_nPosFind=g_nCount=g_nTickTemp=0;
MessageBox(NULL,"YOU HAVE REACHED the H_E_A_D of THE FILE!","FIND END!",MB_OK);
return FALSE;
}
if(g_bForeward && g_nPosFind>(g_nFileLen-g_nCh/3-1))
{
g_nPosFind=g_nFileLen-g_nCh/3-1;
MessageBox(NULL,"YOU HAVE REACHED the E_N_D of THE FILE!","FIND END!",MB_OK);
return FALSE;
}
break;
}
g_bForeward?g_nPosFind++:g_nPosFind--;
if(!g_bForeward && g_nPosFind<0 )
{
g_nPosFind=g_nCount=g_nTickTemp=0;
MessageBox(NULL,"YOU HAVE REACHED the H_E_A_D of THE FILE!","FIND END!",MB_OK);
return FALSE;
}
if(g_bForeward && g_nPosFind>(g_nFileLen-g_nCh/3-1))
{
g_nPosFind=g_nFileLen-g_nCh/3-1;
MessageBox(NULL,"YOU HAVE REACHED the E_N_D of THE FILE!","FIND END!",MB_OK);
return FALSE;
}
}
}
break;
case HEXADECIMAL_FIND:
{
for(int ii=0;ii<g_nCh;ii++)
{
if(!isxdigit(g_ch[ii]))
{
MessageBox(NULL,"Your Input Data is not XDIGIT! ","Illegal data!",MB_OK);
//g_bModified=TRUE;
return FALSE;
}
}
if((g_nCh%2)!=0 || g_nCh==0)
{
MessageBox(hDlg,"You must input a string,the length of which must be TWOs !",
"Illegal Data!",MB_OK);
//g_bModified=TRUE;
return FALSE;
}
if(g_bModified)
{
for(int i=0;i<g_nCh/2;i++)
{
g_pBy[i]=(BYTE)(strtoul(strncpy(pTemp,g_ch+2*i,2),&g_end,16));
MessageBox(NULL,strncpy(pTemp,g_ch,2),"test",MB_OK);
}
g_bModified=FALSE;
}
for (int j=0;j<g_nFileLen;j++)
{
if(!g_bForeward && g_nPosFind<0 )
{
g_nPosFind=g_nCount=g_nTickTemp=0;
MessageBox(NULL,"YOU HAVE REACHED the H_E_A_D of THE FILE!","FIND END!",MB_OK);
return FALSE;
}
if(g_nPosFind>(g_nFileLen-g_nCh/2-1))
{
g_nPosFind=g_nFileLen-g_nCh/2-1;
MessageBox(NULL,"YOU HAVE REACHED the E_N_D of THE FILE!","FIND END!",MB_OK);
return FALSE;
}
if(!memcmp(g_pBy,(g_p+g_nPosFind),g_nCh/2))
{
g_bForeward?(g_nTickTemp++):(g_nTickTemp--);
g_nItem=g_nPosFind/10;
g_si.nPos=g_nCount=g_nItem*10;
InsertListItems();
MessageBox(NULL,g_ch,"str_find",MB_OK);
if(g_bTickTotal)
{
g_bTickTotal=FALSE;
CheckDlgButton(hDlg,IDC_TICK_TOTAL,BST_UNCHECKED);
idc_update();
}
g_bForeward?g_nPosFind++:g_nPosFind--;
if(!g_bForeward && g_nPosFind<0 )
{
g_nPosFind=g_nCount=g_nTickTemp=0;
MessageBox(NULL,"YOU HAVE REACHED the H_E_A_D of THE FILE!","FIND END!",MB_OK);
return FALSE;
}
if(g_bForeward && g_nPosFind>(g_nFileLen-g_nCh/2-1))
{
g_nPosFind=g_nFileLen-g_nCh/2-1;
MessageBox(NULL,"YOU HAVE REACHED the E_N_D of THE FILE!","FIND END!",MB_OK);
return FALSE;
}
break;
}
g_bForeward?g_nPosFind++:g_nPosFind--;
if(!g_bForeward && g_nPosFind<0 )
{
g_nPosFind=g_nCount=g_nTickTemp=0;
MessageBox(NULL,"YOU HAVE REACHED the H_E_A_D of THE FILE!","FIND END!",MB_OK);
return FALSE;
}
if(g_bForeward && g_nPosFind>(g_nFileLen-g_nCh/2-1))
{
g_nPosFind=g_nFileLen-g_nCh/2-1;
MessageBox(NULL,"YOU HAVE REACHED the E_N_D of THE FILE!","FIND END!",MB_OK);
return FALSE;
}
}
}
break;
case CHAR_FIND:
{
for (int j=0;j<g_nFileLen;j++)
{
if(!g_bForeward && g_nPosFind<0 )
{
g_nPosFind=g_nCount=g_nTickTemp=0;
MessageBox(NULL,"YOU HAVE REACHED the H_E_A_D of THE FILE!","FIND END!",MB_OK);
return FALSE;
}
if(g_nPosFind>(g_nFileLen-1))
{
g_nPosFind=g_nFileLen-g_nCh-1;
MessageBox(NULL,"YOU HAVE REACHED the E_N_D of THE FILE!","FIND END!",MB_OK);
return FALSE;
}
if(!memcmp(g_ch,(g_p+g_nPosFind),g_nCh))
{
g_bForeward?(g_nTickTemp++):(g_nTickTemp--);
g_nItem=g_nPosFind/10;
g_si.nPos=g_nCount=g_nItem*10;
InsertListItems();
MessageBox(NULL,g_ch,"str_find",MB_OK);
if(g_bTickTotal)
{
g_bTickTotal=FALSE;
CheckDlgButton(hDlg,IDC_TICK_TOTAL,BST_UNCHECKED);
idc_update();
}
g_bForeward?g_nPosFind++:g_nPosFind--;
if(!g_bForeward && g_nPosFind<0 )
{
g_nPosFind=g_nCount=g_nTickTemp=0;
MessageBox(NULL,"YOU HAVE REACHED the H_E_A_D of THE FILE!","FIND END!",MB_OK);
return FALSE;
}
if(g_bForeward && g_nPosFind>(g_nFileLen-g_nCh-1))
{
g_nPosFind=g_nFileLen-g_nCh-1;
MessageBox(NULL,"YOU HAVE REACHED the E_N_D of THE FILE!","FIND END!",MB_OK);
return FALSE;
}
break;
}
g_bForeward?g_nPosFind++:g_nPosFind--;
if(!g_bForeward && g_nPosFind<0 )
{
g_nPosFind=g_nCount=g_nTickTemp=0;
MessageBox(NULL,"YOU HAVE REACHED the H_E_A_D of THE FILE!","FIND END!",MB_OK);
return FALSE;
}
if(g_bForeward && g_nPosFind>(g_nFileLen-g_nCh-1))
{
g_nPosFind=g_nFileLen-g_nCh-1;
MessageBox(NULL,"YOU HAVE REACHED the E_N_D of THE FILE!","FIND END!",MB_OK);
return FALSE;
}
}
}
break;
}
wsprintf(ch,"g_nPosFind IS : %012d bytes,%08d K,%04d M, g_nTickTemp IS : %05d",
g_nPosFind,g_nPosFind/1024,g_nPosFind/(1024*1024),g_nTickTemp);
SetDlgItemText(GetParent(hDlg),IDC_POS_FIND,ch);
//g_bModified=FALSE;
}
void idc_find_char(HWND hDlg)
{
if(g_nFindMode!=CHAR_FIND)
{
g_nTickTemp=g_nTickTotal=g_nItem=g_nPosFind=0;
g_bModified=g_bTickTotal=TRUE;
// ThreadProc2();
}
int nRet=::IsDlgButtonChecked(hDlg,IDC_FIND_CHAR);
if(nRet==BST_CHECKED)
{
g_nFindMode=CHAR_FIND;
if(g_bDecimal)
{
g_bDecimal=FALSE;
}
else
{
g_bDecimal=TRUE;
}
InsertListItems();
}
}
void idc_find_hexadecimal(HWND hDlg)
{
if(g_nFindMode!=HEXADECIMAL_FIND)
{
g_nTickTemp=g_nTickTotal=g_nItem=g_nPosFind=0;
g_bModified=g_bTickTotal=TRUE;
// ThreadProc2();
}
int nRet=::IsDlgButtonChecked(hDlg,IDC_FIND_HEXADECIMAL);
if(nRet==BST_CHECKED)
{
g_nFindMode=HEXADECIMAL_FIND;
if(g_bDecimal)
{
g_bDecimal=FALSE;
}
else
{
g_bDecimal=TRUE;
}
InsertListItems();
}
}
void idc_find_decimal(HWND hDlg)
{
if(g_nFindMode!=DECIMAL_FIND)
{
g_nTickTemp=g_nTickTotal=g_nItem=g_nPosFind=0;
g_bModified=g_bTickTotal=TRUE;
//ThreadProc2();
}
int nRet=::IsDlgButtonChecked(hDlg,IDC_FIND_DECIMAL);
if(nRet==BST_CHECKED)
{
g_nFindMode=DECIMAL_FIND;
if(g_bDecimal)
{
g_bDecimal=FALSE;
}
else
{
g_bDecimal=TRUE;
}
InsertListItems();
}
}
int idc_find_foreward(HWND hDlg)
{
g_bForeward=TRUE;
int ret=idc_find_forebackward(hDlg);
return ret;
}
int idc_find_backward(HWND hDlg)
{
g_bForeward=FALSE;
int ret=idc_find_forebackward(hDlg);
return ret;
}
void idc_tick_total(HWND hDlg)
{
int nRet=::IsDlgButtonChecked(hDlg,IDC_TICK_TOTAL);
if(nRet==BST_CHECKED)
{
g_bTickTotal=TRUE;
idc_update();
//Check6DlgButton(hDlg,IDC_TICK_TOTAL,BST_CHECKED);
}
}
int idc_btn_replace(HWND hDlg)
{
int i;
char chTemp[20];
GetDlgItemText(hDlg,IDC_STR_REPLACE,g_chReplace,sizeof(g_chReplace));
g_nChReplace=strlen(g_chReplace);
switch(g_nFindMode)
{
case DECIMAL_FIND:
{
for(int ii=0;ii<g_nChReplace;ii++)
{
if(!isdigit(g_chReplace[ii]))
{
MessageBox(NULL,"Your input Data is not DIGIT! ","Illegal data!",MB_OK);
//g_bModified=TRUE;
return FALSE;
}
}
if((g_nChReplace%3)!=0 || g_nChReplace==0)
{
MessageBox(hDlg,"You must input a string,the length of which must be THREEs !",
"Illegal Data!",MB_OK);
//g_bModified=TRUE;
return FALSE;
}
for(i=0;i<g_nChReplace/3;i++){
*((BYTE*)(g_p+g_nPosFind+i-1))=(BYTE)(strtoul(strncpy(chTemp,g_chReplace+3*i,3),&g_end,10));
}
}
break;
case HEXADECIMAL_FIND:
{
for(int ii=0;ii<g_nChReplace;ii++)
{
if(!isxdigit(g_ch[ii]))
{
MessageBox(NULL,"Your Input Data is not XDIGIT! ","Illegal data!",MB_OK);
return FALSE;
}
}
if((g_nChReplace%2)!=0 || g_nChReplace==0)
{
MessageBox(hDlg,"You must input a string,the length of which must be TWOs !",
"Illegal Data!",MB_OK);
return FALSE;
}
for(i=0;i<g_nChReplace/2;i++){
*((BYTE*)(g_p+g_nPosFind+i-1))=(BYTE)(strtoul(strncpy(chTemp,g_chReplace+2*i,2),&g_end,16));
}
}
break;
case CHAR_FIND:
{
for(i=0;i<g_nChReplace;i++){
*((BYTE*)(g_p+g_nPosFind+i-1))=*((BYTE*)(g_chReplace+i));
}
}
break;
}
InsertListItems();
}
int idc_btn_replace_all(HWND hDlg)
{
idc_find_foreward(hDlg);
return idc_btn_replace(hDlg);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -