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

📄 tableframe.cpp

📁 PasswordViewer 是一个集察看屏保口令、Access数据库口令、CMOS口令、QQ2000口令、美萍网管口令、Win9x共享口令、Win9x缓存口令的软件
💻 CPP
字号:
// TableFrame.cpp : implementation file
//

#include "stdafx.h"
#include "gameprobe.h"
#include "TableFrame.h"
#include "MainFrameDlg.h"
#include "SearchFrame.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CTableFrame dialog

#define _FIX_TIMER_ID 11

CTableFrame::CTableFrame(CWnd* pParent /*=NULL*/)
	: CDialog(CTableFrame::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTableFrame)
	//}}AFX_DATA_INIT

	m_Fixer.GetTable()->RemoveAll();
	m_nItemCount = 0;
}


void CTableFrame::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTableFrame)
	DDX_Control(pDX, IDC_TABLE, m_wndTable);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTableFrame, CDialog)
	//{{AFX_MSG_MAP(CTableFrame)
	ON_WM_CREATE()	
	ON_COMMAND(ID_TABLE_NEW, OnTableNew)
	ON_COMMAND(ID_TABLE_REMOVE_ALL, OnTableRemoveAll)
	ON_COMMAND(ID_TABLE_REMOVE, OnTableRemove)
	ON_COMMAND(ID_TABLE_PROPRETY, OnTableProprety)
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTableFrame message handlers


int CTableFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here

	DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BORDER_3D | CBRS_FLYBY | CBRS_SIZE_DYNAMIC | CBRS_ALIGN_TOP;
	m_wndToolBar.Create(this, dwStyle);
	m_wndToolBar.LoadToolBar(IDR_TABLE_FRAME_TOOLBAR);	
	m_wndToolBar.SetLook2000(TRUE);
	
	CString str;
	str.LoadString(IDS_NEW);
	m_wndToolBar.SetToolBarBtnText(0, str);

	str.LoadString(IDS_PROPRETY);
	m_wndToolBar.SetToolBarBtnText(3, str);

	return 0;
}

BOOL CTableFrame::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_wndTable.SetExtendedStyle(LVS_EX_FULLROWSELECT);

	CRect rect;
	m_wndTable.GetWindowRect(&rect);
	rect.top = 12;
	rect.bottom = m_wndToolBar.GetRowHeight() + rect.top + 3;
	rect.right -= 3;
	rect.left -= 3;
	m_wndToolBar.MoveWindow(rect);

	CString str;

	str.LoadString(IDS_NAME);
	m_wndTable.InsertColumn(0, str, LVCFMT_LEFT, 100);
	str.LoadString(IDS_ADDRESS);
	m_wndTable.InsertColumn(1, str, LVCFMT_LEFT, 90);
	str.LoadString(IDS_VALUE);
	m_wndTable.InsertColumn(2, str, LVCFMT_LEFT, 80);
	str.LoadString(IDS_DATA_TYPE);
	m_wndTable.InsertColumn(3, str, LVCFMT_LEFT, 80);
	str.LoadString(IDS_FIX_MODE);
	m_wndTable.InsertColumn(4, str, LVCFMT_LEFT, 60);

	m_wndTable.DeleteAllItems();

	SetTimer(_FIX_TIMER_ID, 200, NULL);

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CTableFrame::AddToTable(CTableItem item)
{
	m_Fixer.GetTable()->AddTail(item);
	m_wndTable.InsertItem(m_nItemCount, "");
	SetTableItemAt(m_nItemCount, item);
	m_nItemCount++;
}

void CTableFrame::DoFix()
{
	if(m_nItemCount <= 0)return;

	CMainFrameDlg *pwndMainDlg = (CMainFrameDlg *)GetTheApp()->GetMainWnd();
	CSearchFrame *pwndSearchDlg = (CSearchFrame *)pwndMainDlg->GetFrame(CMainFrameDlg::pageSearchFrame);
	
	if(!pwndSearchDlg->IsProcessSelected())return;
	
	m_Fixer.SetPid(pwndSearchDlg->GetSelectedProcess().dwProcessId);
	m_Fixer.Fix();
}

void CTableFrame::SetTableItemAt(int nIndex, CTableItem item)
{
	CString str;
	CTable *pTable = m_Fixer.GetTable();

	pTable->SetAt(pTable->FindIndex(nIndex), item);

	str = item.szName;
	m_wndTable.SetItemText(nIndex, 0, str);

	str.Format("0x%08lX", item.dwAddress);
	m_wndTable.SetItemText(nIndex, 1, str);

	//COMMENT::TEMP
	str = item.Value.GetValueStr();
	m_wndTable.SetItemText(nIndex, 2, str);

	str = TypeToStr(item.Value.GetDataType());
	m_wndTable.SetItemText(nIndex, 3, str);

	str = FixTypeToStr(item.FixType);
	m_wndTable.SetItemText(nIndex, 4, str);
}

void CTableFrame::RemoveAll()
{
	m_Fixer.GetTable()->RemoveAll();
	m_wndTable.DeleteAllItems();
	m_nItemCount = 0;
}

BOOL CTableFrame::DestroyWindow() 
{
	// TODO: Add your specialized code here and/or call the base class
	RemoveAll();
	KillTimer(_FIX_TIMER_ID);
	return CDialog::DestroyWindow();
}

void CTableFrame::OnTableNew() 
{
	// TODO: Add your command handler code here
	CTableItem item;
	item.dwAddress = 0;
	::strcpy(item.szName, "");
	item.Value.SetValue(0);

	NewItem(item);
}

void CTableFrame::OnTableRemoveAll() 
{
	// TODO: Add your command handler code here
	RemoveAll();
}

void CTableFrame::OnTableRemove() 
{
	// TODO: Add your command handler code here
	RemoveSelected();
}


void CTableFrame::RemoveSelected()
{
	int nCount = m_wndTable.GetSelectedCount();
	
	
	POSITION pos = m_wndTable.GetFirstSelectedItemPosition();
	if (pos == NULL)return;	

	int nItem;

	while (pos)
	{
		nItem = m_wndTable.GetNextSelectedItem(pos);
		DoRemoveItem(nItem);
	}
}

void CTableFrame::DoRemoveItem(int nIndex)
{
	CTable* pTable = m_Fixer.GetTable();;
	pTable->RemoveAt(pTable->FindIndex(nIndex));
	m_wndTable.DeleteItem(nIndex);
	m_nItemCount--;
	
}

BOOL CTableFrame::NewItem(CTableItem item)
{
	CEditItemDlg dlg;
	dlg.SetData(item);
	if(dlg.DoModal() == IDOK)
	{
		item = dlg.GetData();
		AddToTable(item);
		return TRUE;
	}

	return FALSE;
}

void CTableFrame::OnTableProprety() 
{
	// TODO: Add your command handler code here
	CEditItemDlg dlg;
	CTable *pTable = m_Fixer.GetTable();
	int nItem;
	CTableItem item;

	if(m_wndTable.GetSelectedCount() == 0)return;

	TRACE("OnProprety\n");

	POSITION pos;
	pos = m_wndTable.GetFirstSelectedItemPosition();
	nItem = m_wndTable.GetNextSelectedItem(pos);

	item = GetTableItemAt(nItem);	
	dlg.SetData(item);

	if(dlg.DoModal() == IDOK)
	{
		item = dlg.GetData();
		SetTableItemAt(nItem, item);
	}

}

CTableItem CTableFrame::GetTableItemAt(int nIndex)
{
	CTable *pTable = m_Fixer.GetTable();
	return pTable->GetAt(pTable->FindIndex(nIndex));
}

void CTableFrame::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	if(nIDEvent == _FIX_TIMER_ID)
	{
		DoFix(); //写入
	}
	
	CDialog::OnTimer(nIDEvent);
}

CString CTableFrame::TypeToStr(CDataType type)
{
	CString strRet;
	
	switch(type.id)
	{
	case CDataType::typeBYTE:
		strRet.LoadString(IDS_BYTE);
		break;

	case CDataType::typeWORD:
		strRet.LoadString(IDS_WORD);
		break;

	case CDataType::typeDWORD:
		strRet.LoadString(IDS_DWORD);
		break;

	case CDataType::typeFLOAT:
		strRet.LoadString(IDS_FLOAT);
		break;

	case CDataType::typeDOUBLE:
		strRet.LoadString(IDS_DOUBLE);
		break;
	}


	return strRet;
}

CString CTableFrame::FixTypeToStr(CFixType fixType)
{
	CString strRet;

	switch(fixType.id)
	{
	case CFixType::ftNONE:
		strRet.LoadString(IDS_NONE);
		break;

	case CFixType::ftAUTO:
		strRet.LoadString(IDS_AUTO_LOCK);
		break;

	case CFixType::ftHOTKEY:
		strRet.LoadString(IDS_HOTKEY_FIX);
		break;

	}

	return strRet;
}

⌨️ 快捷键说明

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