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

📄 doc.cpp

📁 数据加密算法
💻 CPP
字号:
#include "pch.h"
#include "util.h"
#include "main.h"
#include "doc.h"
#include "import.h"
#include "export.h"
#include "image.h"
#include "debug.h"
#include "record.h"
#include "parameter.h"
#include "dump.h"
#include "add.h"

IMPLEMENT_DYNCREATE ( CDancerDoc , CDocument )

BEGIN_MESSAGE_MAP ( CDancerDoc , CDocument )
	ON_COMMAND ( IDM_VIEW_ALL , OnViewAll )
	ON_COMMAND ( IDM_VIEW_UNDECORATE , OnViewUndecorate )
	ON_COMMAND ( IDM_DEBUG_START , OnDebugStart ) 
	ON_COMMAND ( IDM_DEBUG_PARAMETER_START , OnDebugParameterStart ) 
	ON_COMMAND ( IDM_DEBUG_STOP , OnDebugStop ) 
	ON_COMMAND ( IDM_DEBUG_PAUSE , OnDebugPause ) 
	ON_COMMAND ( IDM_EDIT_DUMP_TO , OnEditDumpTo )
	ON_COMMAND ( IDM_EDIT_ADD , OnEditAdd )
	ON_COMMAND ( IDM_EDIT_REMOVE , OnEditRemove )
	ON_COMMAND ( IDM_EDIT_HOOK_IMPORT , OnEditHookImport )
	ON_COMMAND ( IDM_EDIT_HOOK_TREE , OnEditHookTree )
	ON_COMMAND ( IDM_EDIT_UNHOOK_IMPORT , OnEditUnhookImport )
	ON_COMMAND ( IDM_EDIT_UNHOOK_TREE , OnEditUnhookTree )
	ON_COMMAND ( IDM_VIEW_EXPAND_ALL , OnViewExpandAll )
	ON_COMMAND ( IDM_VIEW_FOLD_ALL , OnViewFoldAll )
	ON_UPDATE_COMMAND_UI ( IDM_VIEW_ALL , OnUpdateViewAll )
	ON_UPDATE_COMMAND_UI ( IDM_VIEW_UNDECORATE , OnUpdateViewUndecorate )
	ON_UPDATE_COMMAND_UI ( IDM_DEBUG_START , OnUpdateDebugStart )
	ON_UPDATE_COMMAND_UI ( IDM_DEBUG_PARAMETER_START , OnUpdateDebugStart )
	ON_UPDATE_COMMAND_UI ( IDM_DEBUG_STOP , OnUpdateDebugStop )
	ON_UPDATE_COMMAND_UI ( IDM_DEBUG_PAUSE , OnUpdateDebugPause )
	ON_UPDATE_COMMAND_UI ( IDM_EDIT_ADD , OnUpdateEditAdd )
	ON_UPDATE_COMMAND_UI ( IDM_EDIT_HOOK_IMPORT , OnUpdateEditHookImport )
	ON_UPDATE_COMMAND_UI ( IDM_EDIT_HOOK_TREE , OnUpdateEditHookTree )
	ON_UPDATE_COMMAND_UI ( IDM_EDIT_UNHOOK_IMPORT , OnUpdateEditUnhookImport )
	ON_UPDATE_COMMAND_UI ( IDM_EDIT_UNHOOK_TREE , OnUpdateEditUnhookTree )
	ON_UPDATE_COMMAND_UI ( IDM_EDIT_DUMP_TO , OnUpdateEditDumpTo )
	ON_UPDATE_COMMAND_UI ( IDM_EDIT_REMOVE , OnUpdateEditRemove )
END_MESSAGE_MAP ( ) 

CDancerDoc::CDancerDoc ( )
{
	// reset attibute
	m_pImgFile = new CImageFile ;
	m_pDebugControl = new CDebugControl ;
	m_pRecordManager = new CRecordManager ;

	m_bSave = TRUE ;
	m_pDebugControl->AttachTo ( this ) ;
	m_pRecordManager->AttachTo ( this ) ;
}

CDancerDoc::~CDancerDoc ( )
{
	delete m_pDebugControl ;
	delete m_pImgFile ;
	delete m_pRecordManager ;
}

BOOL CDancerDoc::OnOpenDocument ( LPCTSTR lpszPathName )
{
	if ( CDocument::OnOpenDocument ( lpszPathName ) == FALSE )
		return FALSE ;

	// open and parsing an image file

	CMainFrame* pf = ( CMainFrame* ) AfxGetMainWnd ( ) ;
	pf->SetMessageText ( IDS_MSG_PARSING_IMAGE ) ;

	m_strDumpName = lpszPathName ;
	m_strDumpName += ".dump.txt" ;

	xSplitPathName ( lpszPathName , m_strName , m_strPath ) ;
	m_strParameter.Empty ( ) ;
	m_pImgFile->ParseImage ( m_strName , m_strPath ) ;

	pf->SetMessageText ( AFX_IDS_IDLEMESSAGE ) ;

	return TRUE ;
}

BOOL CDancerDoc::CanCloseFrame ( CFrameWnd* pFrame )
{
	return CanCloseFrame ( ) ;
}

BOOL CDancerDoc::CanCloseFrame ( )
{
	if ( m_pDebugControl->IsDebugging ( ) == TRUE )
	{
		CString msg , &mod = m_pImgFile->m_pRoot->m_pModule->m_strShort ;
		msg.Format ( IDS_QUERY_WHEN_DEBUGGING , mod.LockBuffer ( ) ) ;
		mod.UnlockBuffer ( ) ;

		if ( IDYES == AfxMessageBox ( msg , MB_ICONQUESTION | MB_YESNO ) ) 
			return TRUE ;
		return FALSE ;
	}
	return TRUE ;
}

void CDancerDoc::OnViewAll ( )
{
	CMainApp* pMainApp = ( CMainApp* ) AfxGetApp ( ) ;
	pMainApp->m_appOption.m_bViewAll = !pMainApp->m_appOption.m_bViewAll ;

	m_pExportView->Refresh ( ) ;
}

void CDancerDoc::OnUpdateViewAll ( CCmdUI* pCmdUI )
{
	CMainApp* pMainApp = ( CMainApp* ) AfxGetApp ( ) ;
	pCmdUI->SetCheck ( pMainApp->m_appOption.m_bViewAll ) ;
}

void CDancerDoc::OnUpdateDebugStart ( CCmdUI* pCmdUI )
{
	pCmdUI->Enable ( m_pDebugControl->IsDebugging ( ) == FALSE ) ;
}

void CDancerDoc::OnUpdateDebugStop ( CCmdUI* pCmdUI )
{
	pCmdUI->Enable ( m_pDebugControl->IsDebugging ( ) == TRUE ) ;
}

void CDancerDoc::OnDebugStart ( )
{
	CMainFrame* pf = ( CMainFrame* ) AfxGetMainWnd ( ) ;
	pf->SetMessageText ( IDS_MSG_DEBUG_STARTING ) ;

	m_pExportView->Refresh1 ( ) ;
	m_pDebugControl->Start ( ) ;
}

void CDancerDoc::OnDebugStop ( )
{
	m_pDebugControl->Stop ( ) ;
}

void CDancerDoc::OnDebugPause ( )
{
	m_pDebugControl->Pause ( ) ;
}

void CDancerDoc::OnUpdateDebugPause ( CCmdUI* pCmdUI )
{
	pCmdUI->Enable ( m_pDebugControl->IsDebugging ( ) ) ;
	pCmdUI->SetCheck ( m_pDebugControl->IsPaused ( ) ) ;
}

void CDancerDoc::OnDebugParameterStart ( )
{
	CParameterDialog* p = new CParameterDialog ;

	p->m_strParameter = m_strParameter ;
	p->m_bSave = m_bSave ;

	if ( p->DoModal ( ) == IDOK && 
		 p->m_bSave == TRUE )
	{
		m_strParameter = p->m_strParameter ;
		m_pDebugControl->Start ( ) ;
	}

	m_bSave = p->m_bSave ;
	delete p ;
}

void CDancerDoc::OnEditDumpTo ( )
{
	CDumpToDialog* p = new CDumpToDialog ;

	p->m_strPathName = m_strDumpName ;
	if ( p->DoModal ( ) == IDOK )
	{
		m_strDumpName = p->m_strPathName ;
	}
	delete p ;
}

void CDancerDoc::OnEditAdd ( )
{
	CAddDialog* p = new CAddDialog ;

	if ( p->DoModal ( ) == IDOK )
	{
		CString fn , path ;

		xSplitPathName ( p->m_strName , fn , path ) ;
		m_pImgFile->AddModule (
			m_pImportView->GetTreeCtrl ( ) ,
			fn ,
			path ) ;
	}
	delete p ;
}

void CDancerDoc::OnEditRemove ( ) 
{
	m_pImgFile->RemoveModule ( m_pImportView->GetTreeCtrl ( ) ) ;
}

void CDancerDoc::OnUpdateEditRemove ( CCmdUI* pCmdUI )
{
	CTreeCtrl& ctrl = m_pImportView->GetTreeCtrl ( ) ;
	Export* p = ( Export* ) 
		ctrl.GetItemData ( ctrl.GetSelectedItem ( ) ) ;

	pCmdUI->Enable ( p->m_bDynamic && !m_pDebugControl->IsDebugging ( ) ) ;
}

void CDancerDoc::OnUpdateEditAdd ( CCmdUI* pCmdUI )
{
	pCmdUI->Enable ( !m_pDebugControl->IsDebugging ( ) ) ;
}

void CDancerDoc::OnEditHookImport ( )
{
	m_pImgFile->SetImport ( m_pImportView->GetTreeCtrl ( ) , TRUE ) ;
}

void CDancerDoc::OnEditHookTree ( )
{
	m_pImgFile->SetTree ( m_pImportView->GetTreeCtrl ( ) , TRUE ) ;
}

void CDancerDoc::OnEditUnhookImport ( )
{
	m_pImgFile->SetImport ( m_pImportView->GetTreeCtrl ( ) , FALSE ) ;
}

void CDancerDoc::OnEditUnhookTree ( )
{
	m_pImgFile->SetTree ( m_pImportView->GetTreeCtrl ( ) , FALSE ) ;
}

void CDancerDoc::OnViewExpandAll ( )
{
	CTreeCtrl& ctrl = m_pImportView->GetTreeCtrl ( ) ;

	m_pImportView->ExpandTree ( ctrl , TVI_ROOT , TRUE ) ;
}

void CDancerDoc::OnViewFoldAll ( )
{
	CTreeCtrl& ctrl = m_pImportView->GetTreeCtrl ( ) ;

	m_pImportView->ExpandTree ( ctrl , TVI_ROOT , FALSE ) ;
}

void CDancerDoc::OnUpdateEditHookImport ( CCmdUI* pCmdUI )
{
	pCmdUI->Enable ( m_pDebugControl->IsDebugging ( ) == FALSE ) ;
}

void CDancerDoc::OnUpdateEditHookTree ( CCmdUI* pCmdUI )
{
	pCmdUI->Enable ( m_pDebugControl->IsDebugging ( ) == FALSE ) ;
}

void CDancerDoc::OnUpdateEditUnhookImport ( CCmdUI* pCmdUI )
{
	pCmdUI->Enable ( m_pDebugControl->IsDebugging ( ) == FALSE ) ;
}

void CDancerDoc::OnUpdateEditUnhookTree ( CCmdUI* pCmdUI )
{
	pCmdUI->Enable ( m_pDebugControl->IsDebugging ( ) == FALSE ) ;
}

void CDancerDoc::OnUpdateEditDumpTo ( CCmdUI* pCmdUI )
{
	pCmdUI->Enable ( m_pDebugControl->IsDebugging ( ) == FALSE ) ;
}

void CDancerDoc::OnViewUndecorate ( )
{
	CMainApp* pMainApp = ( CMainApp* ) AfxGetApp ( ) ;
	pMainApp->m_appOption.m_bUndecorate = !pMainApp->m_appOption.m_bUndecorate ;
	m_pExportView->Refresh ( ) ;
}

void CDancerDoc::OnUpdateViewUndecorate ( CCmdUI* pCmdUI )
{
	CMainApp* pMainApp = ( CMainApp* ) AfxGetApp ( ) ;
	pCmdUI->SetCheck ( pMainApp->m_appOption.m_bUndecorate ) ;
}

⌨️ 快捷键说明

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