如题 我没有分,也不懂C++有个C++的小程序 希望大侠能帮忙转换成D的代码不多有能力的留下QQ,要求转换为D保证能用少量收费也可以 太黑的就不要来了
解决方案 »
- richedit问题 delphi
- 初学者界面效果问题 高手赐教
- delphi程序怎么打包呀!
- 一对clientsocket和serversocket是不是只能发送一个数据类型?
- WinExec的问题,很难的,有写程序很厉害的吗,谢谢你们
- 如何在PageControl中新增TabSheet,TabSheet中的内容和控件和前一个TabSheet一样
- 请问QQ的原理如何?是怎样在广域网里运行的?我想做一个QQ聊天程序(C/S结构),局域网内运行正常,在广域网里为何连接不上服务器端!
- 数据更新,奇怪的record changed by another user
- 求救!
- 难道没有人能解决:用DELPHI编写程序将多媒体流通过转换卡发送到电视视频上?
- 医疗软件合作
- 散分,同时恭喜Sqlite工具DxSqliteManagement更新到2.0
#include "AXPUnpack.h"
#include "AXPFile.h"#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endifCAXPFile::CAXPFile()
:m_FileName(TEXT("")),m_hFile(INVALID_HANDLE_VALUE), m_hFileMap(NULL),\
m_hMapView(NULL), m_dwFileSize(-1), m_lpAxPHeader(NULL), m_lpAxpHashTable(NULL),\
m_lpAxpFileInfo(NULL)
{
PrepareCryptTable();
}
CAXPFile::~CAXPFile()
{
Release();
}BOOL CAXPFile::LoadFile()
{
if (!MappingFile())
{
return FALSE;
}
m_lpAxPHeader = (AXPHeader*) m_hMapView;
if (m_lpAxPHeader->signature != AXP_SIGNATURE || m_lpAxPHeader->nUnknow0 != 0x00010001)
{
AfxMessageBox(TEXT("文件格式错误!"));
Release();
return FALSE;
}
m_lpAxpHashTable = (AXPHashTable**)((DWORD)m_hMapView + m_lpAxPHeader->nHashTableOffset);
m_lpAxpFileInfo = (AXPFileInfo**)((DWORD)m_hMapView + m_lpAxPHeader->nIndexTableOffset);
if (IsBadReadPtr((LPVOID)m_lpAxpHashTable, 0x60000) ||\
IsBadReadPtr((LPVOID)m_lpAxpFileInfo, m_lpAxPHeader->nSizeOfIndexTable))
{
Release();
return FALSE;
}
if (!GetFileList())
{
AfxMessageBox(TEXT("获取文件列表失败!"));
Release();
return FALSE;
}
return TRUE;
}void CAXPFile::UnLoad()
{
Release();
}BOOL CAXPFile::MappingFile()
{
BOOL bResult = FALSE;
Release();
if (m_FileName.IsEmpty())
{
return bResult;
}
__try
{
m_hFile = CreateFile(m_FileName, GENERIC_READ, FILE_SHARE_READ,\
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (INVALID_HANDLE_VALUE == m_hFile)
{
ShowErrorMessage();
__leave;
}
m_dwFileSize = GetFileSize(m_hFile, NULL);
if (m_dwFileSize == -1 || m_dwFileSize == 0)
{
CloseHandle(m_hFile);
m_hFile = INVALID_HANDLE_VALUE;
__leave;
}
m_hFileMap = CreateFileMapping(m_hFile, NULL, PAGE_READONLY, 0, 0, NULL);
if (NULL == m_hFileMap)
{
ShowErrorMessage();
Release();
__leave;
}
m_hMapView = MapViewOfFile(m_hFileMap, FILE_MAP_READ, 0, 0, 0);
if (NULL == m_hMapView)
{
ShowErrorMessage();
Release();
__leave;
}
bResult = TRUE;
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
ShowErrorMessage();
Release();
}
return bResult;
}void CAXPFile::SetFileName(LPCTSTR lpFileName)
{
m_FileName = lpFileName;
}void CAXPFile::ShowErrorMessage()
{
LPVOID lpMsgBuf;
DWORD dw = GetLastError();
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
dw,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0, NULL );
AfxMessageBox((LPCTSTR)lpMsgBuf, MB_OK | MB_ICONERROR);
LocalFree(lpMsgBuf);
}void CAXPFile::Release()
{
if (NULL != m_hMapView)
{
UnmapViewOfFile(m_hMapView);
m_hMapView = NULL;
}
if (NULL != m_hFileMap)
{
CloseHandle(m_hFileMap);
m_hFileMap = NULL;
}
if (INVALID_HANDLE_VALUE != m_hFile)
{
CloseHandle(m_hFile);
m_hFile = INVALID_HANDLE_VALUE;
}
m_lpAxpFileInfo = NULL;
m_lpAxpHashTable = NULL;
m_lpAxpFileInfo = NULL;
m_FileList.clear();
}void CAXPFile::PrepareCryptTable()
{
DWORD seed = 0x00100001;
memset(m_CryptTable, 0, 0x500 * sizeof(DWORD)); DWORD temp1, temp2;
for (DWORD i = 0; i < 0x100 ; i++)
{
seed = (125 * seed + 3) % 0x2AAAAB;
temp1 = seed << 0x10;
seed = (125 * seed + 3) % 0x2AAAAB;
temp2 = 0xFFFF & seed;
m_CryptTable[i] = temp1 | temp2;
seed = (125 * seed + 3) % 0x2AAAAB;
temp1 = seed << 0x10;
seed = (125 * seed + 3) % 0x2AAAAB;
temp2 = 0xFFFF & seed;
m_CryptTable[i + 0x100] = temp1 | temp2;
seed = (125 * seed + 3) % 0x2AAAAB;
temp1 = seed << 0x10;
seed = (125 * seed + 3) % 0x2AAAAB;
temp2 = 0xFFFF & seed;
m_CryptTable[i + 0x200] = temp1 | temp2;
seed = (125 * seed + 3) % 0x2AAAAB;
temp1 = seed << 0x10;
seed = (125 * seed + 3) % 0x2AAAAB;
temp2 = 0xFFFF & seed;
m_CryptTable[i + 0x300] = temp1 | temp2;
}
}
DWORD CAXPFile::HashString(const char *lpszFileName, DWORD dwCryptIndex)
{ signed char *key = (signed char *)lpszFileName;
DWORD seed1 = 0x7FED7FED, seed2 = 0xEEEEEEEE;
signed int ch;
while(*key != 0)
{
ch = *key++;
seed1 = m_CryptTable[(dwCryptIndex<< 8) + ch] ^ (seed1 + seed2);
seed2 = ch + seed1 + seed2 + (seed2 << 5) + 3;
}
return seed1; }BOOL CAXPFile::GetHashTablePos(const char *lpszString, int *lpFileOffset, int *lpFileSize)
{
const int HASH_A = 1, HASH_B = 2, HASH_OFFSET = 3;
int nHashA = HashString(lpszString, HASH_A);
int nHashB = HashString(lpszString, HASH_B);
int nHash = HashString(lpszString, HASH_OFFSET);
nHash &= 0x7FFF;
int nHashStart = nHash, nHashPos; try
{
while (!((nHashPos = ((int*)m_lpAxpHashTable)[nHashStart * 3 + 2]) & 0x80000000) ||\
nHashA != ((int*)m_lpAxpHashTable)[nHashStart * 3] ||\
nHashB != ((int*)m_lpAxpHashTable)[nHashStart * 3 + 1])
{
nHashStart++;
nHashStart &= 0x7FFF;
if (nHashStart == nHash)
{
return FALSE;
}
}
}
catch (...)
{
return FALSE;
} nHashPos &= 0x3FFFFFFF;
*lpFileOffset = ((int*)m_lpAxpFileInfo)[nHashPos * 3];
*lpFileSize = ((int*)m_lpAxpFileInfo)[nHashPos * 3 + 1];
return TRUE;
}BOOL CAXPFile::GetFileList()
{
m_FileList.clear();
BOOL bResult = FALSE;
int nFileOffset, nFileSize;
try
{
if (GetHashTablePos("(list)", &nFileOffset, &nFileSize))
{
char* lpBuffer = (char*)((DWORD)m_hMapView + nFileOffset);
string liststr;
vector<string> v;
for(int i = 0; i < nFileSize; i++)
{
if (lpBuffer[i] != 0xD && lpBuffer[i + 1] != 0xA)
{
liststr += tolower(lpBuffer[i]);
}
else
{
string::size_type loc = liststr.find("|");
if (loc != string::npos)
{
m_FileList.push_back(liststr.substr(0, loc));
}
liststr = "" ;
i++;
}
}
bResult = TRUE;
}
}
catch (...)
{
bResult = FALSE;
}
return bResult;
}
BOOL CAXPFile::GenerateFile(int i, CString &strFileName)
{
BOOL bResult = FALSE;
int nFileOffset, nFileSize;
CString strMsg;
HANDLE hFile;
DWORD dwBytesWritten;
try
{
if (GetHashTablePos(m_FileList[i].c_str(), &nFileOffset, &nFileSize))
{
char* lpBuffer = (char*)((DWORD)m_hMapView + nFileOffset);
hFile = CreateFile(strFileName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, \
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
strMsg.Format(TEXT("创建文件失败: %s"), strFileName);
AfxMessageBox(strMsg);
return FALSE;
}
WriteFile(hFile, (LPVOID)lpBuffer, nFileSize, &dwBytesWritten, NULL);
if (dwBytesWritten != nFileSize)
{
CloseHandle(hFile);
strMsg.Format(TEXT("写入文件数据不完整: %s"), strFileName);
AfxMessageBox(strMsg);
return FALSE;
} bResult = TRUE;
}
else
{
AfxMessageBox(TEXT("计算文件索引信息出错!"));
}
CloseHandle(hFile);
}
catch (...)
{
if (hFile != INVALID_HANDLE_VALUE)
{
CloseHandle(hFile);
}
AfxMessageBox(TEXT("提取文件数据出现错误!"));
bResult = FALSE;
}
return bResult;
}#include "stdafx.h"
#include "AXPUnpack.h"#include "MainFrm.h"
#include "AXPUnpackDoc.h"
#include "AXPUnpackView.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endifBEGIN_MESSAGE_MAP(CAXPUnpackApp, CWinApp)
ON_COMMAND(ID_APP_ABOUT, OnAppAbout) ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
END_MESSAGE_MAP()CAXPUnpackApp::CAXPUnpackApp()
{
}CAXPUnpackApp theApp;
BOOL CAXPUnpackApp::InitInstance()
{
#ifdef _AFXDLL
Enable3dControls();
#else
Enable3dControlsStatic();
#endif SetRegistryKey(_T("Local AppWizard-Generated Applications")); LoadStdProfileSettings();
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CAXPUnpackDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CAXPUnpackView));
AddDocTemplate(pDocTemplate);
EnableShellOpen();
RegisterShellFileTypes(TRUE); CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo); if (!ProcessShellCommand(cmdInfo))
return FALSE;
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow(); m_pMainWnd->DragAcceptFiles(); return TRUE;
}
class CAboutDlg : public CDialog
{
public:
CAboutDlg(); enum { IDD = IDD_ABOUTBOX }; protected:
virtual void DoDataExchange(CDataExchange* pDX); protected: DECLARE_MESSAGE_MAP()
};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)END_MESSAGE_MAP()
void CAXPUnpackApp::OnAppAbout()
{
CAboutDlg aboutDlg;
aboutDlg.DoModal();
}
#include "AXPUnpack.h"
#include "AXPUnpackDoc.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endifIMPLEMENT_DYNCREATE(CAXPUnpackDoc, CDocument)BEGIN_MESSAGE_MAP(CAXPUnpackDoc, CDocument)END_MESSAGE_MAP()CAXPUnpackDoc::CAXPUnpackDoc()
{
}CAXPUnpackDoc::~CAXPUnpackDoc()
{
}BOOL CAXPUnpackDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
m_AxpFile.UnLoad();
return TRUE;
}void CAXPUnpackDoc::Serialize(CArchive& ar)
{
}#ifdef _DEBUG
void CAXPUnpackDoc::AssertValid() const
{
CDocument::AssertValid();
}void CAXPUnpackDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif
BOOL CAXPUnpackDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
m_AxpFile.SetFileName(lpszPathName);
m_AxpFile.LoadFile(); return TRUE;
}#include "stdafx.h"
#include "AXPUnpack.h"#include "AXPUnpackDoc.h"
#include "AXPUnpackView.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endifIMPLEMENT_DYNCREATE(CAXPUnpackView, CListView)BEGIN_MESSAGE_MAP(CAXPUnpackView, CListView)
ON_WM_CREATE()
ON_WM_SIZE()
ON_WM_RBUTTONDOWN()
ON_COMMAND_RANGE(IDM_ITEM0, IDM_ITEM0, OnPopupMenu)
END_MESSAGE_MAP()CAXPUnpackView::CAXPUnpackView()
{
}CAXPUnpackView::~CAXPUnpackView()
{
}BOOL CAXPUnpackView::PreCreateWindow(CREATESTRUCT& cs)
{
return CListView::PreCreateWindow(cs);
}void CAXPUnpackView::OnDraw(CDC* pDC)
{
CAXPUnpackDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
}void CAXPUnpackView::OnInitialUpdate()
{
CListView::OnInitialUpdate(); CListCtrl& ListCtrl = GetListCtrl();
ListCtrl.DeleteAllItems();
vector<string> &FileList = ((CAXPUnpackDoc*)GetDocument())->m_AxpFile.m_FileList;
vector<string>::size_type i, len;
len = FileList.size();
for (i = 0; i < len; i++)
{
ListCtrl.InsertItem(i, CString(FileList[i].c_str()));
}}#ifdef _DEBUG
void CAXPUnpackView::AssertValid() const
{
CListView::AssertValid();
}void CAXPUnpackView::Dump(CDumpContext& dc) const
{
CListView::Dump(dc);
}CAXPUnpackDoc* CAXPUnpackView::GetDocument()
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAXPUnpackDoc)));
return (CAXPUnpackDoc*)m_pDocument;
}
#endif int CAXPUnpackView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CListView::OnCreate(lpCreateStruct) == -1)
return -1;
CListCtrl& ListCtrl = GetListCtrl();
CRect rect;
GetClientRect(rect);
ListCtrl.ModifyStyle(0, LVS_REPORT | LVS_NOSORTHEADER | LVS_SINGLESEL);
ListView_SetExtendedListViewStyle(ListCtrl.m_hWnd, LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
ListCtrl.InsertColumn(0, TEXT("文件名"), LVCFMT_LEFT, rect.Width() / 5 * 3);
ListCtrl.InsertColumn(1, TEXT("大小"), LVCFMT_LEFT, rect.Width() / 5);
ListCtrl.InsertColumn(2, TEXT("属性"), LVCFMT_LEFT, rect.Width() / 5);
m_PopupMenu.CreatePopupMenu();
m_PopupMenu.AppendMenu(MF_STRING, IDM_ITEM0, TEXT("提取文件"));
return 0;
}void CAXPUnpackView::OnSize(UINT nType, int cx, int cy)
{
CListView::OnSize(nType, cx, cy);
CListCtrl& ListCtrl = GetListCtrl();
ListCtrl.SetColumnWidth(0, cx / 5 * 3);
ListCtrl.SetColumnWidth(1, cx / 5);
ListCtrl.SetColumnWidth(2, cx / 5);
}void CAXPUnpackView::OnRButtonDown(UINT nFlags, CPoint point)
{
CListView::OnRButtonDown(nFlags, point);
if (GetListCtrl().GetSelectedCount() != 0)
{
CRect rect;
GetWindowRect(&rect);
m_PopupMenu.TrackPopupMenu(TPM_LEFTALIGN, point.x + rect.left, point.y + rect.top, this, NULL);
}
}void CAXPUnpackView::OnPopupMenu(UINT nID)
{
switch (nID)
{
case IDM_ITEM0:
{
TCHAR szFilter[] = TEXT("All Files (*.*)|*.*|");
CListCtrl &ListCtrl = GetListCtrl();
POSITION pos = ListCtrl.GetFirstSelectedItemPosition();
if (pos != NULL)
{
int nItem = ListCtrl.GetNextSelectedItem(pos);
CString strFileName = ListCtrl.GetItemText(nItem, 0);
if (strFileName.ReverseFind('/') != -1)
{
strFileName = strFileName.Mid(strFileName.ReverseFind('/') + 1);
}
CFileDialog dlg(FALSE, NULL, strFileName, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,\
szFilter, NULL);
if (dlg.DoModal() == IDOK)
{
strFileName = dlg.GetPathName();
if (((CAXPUnpackDoc*)GetDocument())->m_AxpFile.GenerateFile(nItem,\
strFileName))
{
CString strMsg;
strMsg.Format(TEXT("文件提取成功,保存位置[%s]!"), strFileName);
AfxMessageBox(strMsg);
}
}
}
}
break;
default:
break;
}
}
#include "AXPUnpack.h"#include "MainFrm.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endifIMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_WM_CREATE()
END_MESSAGE_MAP()static UINT indicators[] =
{
ID_SEPARATOR,
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};CMainFrame::CMainFrame()
{
}CMainFrame::~CMainFrame()
{
}int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1;
} if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1;
} m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar); return 0;
}BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE; return TRUE;
}
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}#endif #if !defined(AFX_AXPFILE_H__1F63FE1D_32CD_4A16_A98F_9566B985CD2C__INCLUDED_)
#define AFX_AXPFILE_H__1F63FE1D_32CD_4A16_A98F_9566B985CD2C__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif
#include <vector>
#include <string>
using namespace std;
const DWORD AXP_SIGNATURE = 0x4B505841;class CAXPFile
{
typedef struct _AXPHeader
{
int signature;
int nUnknow0;
int nUnknow1;
int nHashTableOffset;
int nIndexTableOffset;
int nFileCount;
int nSizeOfIndexTable;
int nDataOffset;
int nUnknow3;
int nUnknow4;
}AXPHeader;
typedef struct _AXPHashTable
{
DWORD nHashA;
DWORD nHashB;
DWORD bExists;
}AXPHashTable;
typedef struct _AXPFileInfo
{
int nFileOffset;
int nFileSize;
int nFileFlag;
}AXPFileInfo;public:
BOOL GetHashTablePos(const char *lpszString, int *lpFileOffset, int *lpFileSize);
DWORD HashString(const char *lpszFileName, DWORD dwCryptIndex);
void SetFileName(LPCTSTR lpFileName);
void UnLoad();
BOOL LoadFile();
BOOL GenerateFile(int i, CString &strFileName);
CAXPFile();
virtual ~CAXPFile();
private:
DWORD m_CryptTable[0x500];
private:
AXPHeader *m_lpAxPHeader;
AXPHashTable **m_lpAxpHashTable;
AXPFileInfo **m_lpAxpFileInfo; CString m_FileName;
HANDLE m_hFile;
HANDLE m_hFileMap;
LPVOID m_hMapView;
DWORD m_dwFileSize;
public:
vector<string> m_FileList;
protected:
BOOL GetFileList();
void Release();
void ShowErrorMessage();
BOOL MappingFile();
void PrepareCryptTable();
};#endif #if !defined(AFX_AXPUNPACK_H__150FF2EA_953E_40DA_861B_874073DD01EF__INCLUDED_)
#define AFX_AXPUNPACK_H__150FF2EA_953E_40DA_861B_874073DD01EF__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif #ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif#include "resource.h"
class CAXPUnpackApp : public CWinApp
{
public:
CAXPUnpackApp(); public:
virtual BOOL InitInstance(); afx_msg void OnAppAbout(); DECLARE_MESSAGE_MAP()
};#endif #if !defined(AFX_AXPUNPACKDOC_H__0B402988_415B_4A6C_B62A_0E3E3CFC1A12__INCLUDED_)
#define AFX_AXPUNPACKDOC_H__0B402988_415B_4A6C_B62A_0E3E3CFC1A12__INCLUDED_#include "AXPFile.h"
#if _MSC_VER > 1000
#pragma once
#endif
class CAXPUnpackDoc : public CDocument
{
protected:
CAXPUnpackDoc();
DECLARE_DYNCREATE(CAXPUnpackDoc)public:public:
public:
virtual BOOL OnNewDocument();
virtual void Serialize(CArchive& ar);
virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);public:
CAXPFile m_AxpFile;
virtual ~CAXPUnpackDoc();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endifprotected:protected: DECLARE_MESSAGE_MAP()
};#endif #if !defined(AFX_AXPUNPACKVIEW_H__8224D71F_1634_4C3E_BDF8_08ED89948627__INCLUDED_)
#define AFX_AXPUNPACKVIEW_H__8224D71F_1634_4C3E_BDF8_08ED89948627__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif
#define IDM_ITEM0 3000class CAXPUnpackView : public CListView
{
protected:
CAXPUnpackView();
DECLARE_DYNCREATE(CAXPUnpackView)public:
CAXPUnpackDoc* GetDocument();public: public:
virtual void OnDraw(CDC* pDC);
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual void OnInitialUpdate(); public:
virtual ~CAXPUnpackView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endifprotected:protected:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
afx_msg void OnPopupMenu(UINT nID);
DECLARE_MESSAGE_MAP()
private:
CMenu m_PopupMenu;
};#ifndef _DEBUG
inline CAXPUnpackDoc* CAXPUnpackView::GetDocument()
{ return (CAXPUnpackDoc*)m_pDocument; }
#endif#endif #if !defined(AFX_MAINFRM_H__2819CE0B_DAEB_4B57_A956_EA00564DE3C6__INCLUDED_)
#define AFX_MAINFRM_H__2819CE0B_DAEB_4B57_A956_EA00564DE3C6__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif class CMainFrame : public CFrameWnd
{
protected:
CMainFrame();
DECLARE_DYNCREATE(CMainFrame)public:public: virtual BOOL PreCreateWindow(CREATESTRUCT& cs);public:
virtual ~CMainFrame();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endifprotected:
CStatusBar m_wndStatusBar;
CToolBar m_wndToolBar;protected:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
DECLARE_MESSAGE_MAP()
};#endif 所有代码都发上去了 就这三个
其实主要部分在那堆加密算法那
转成delphi,指针就得写半死