// exe2swfDlg.cpp : implementation file
//
#include "stdafx.h"
#include "exe2swf.h"
#include "exe2swfDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CExe2swfDlg dialog
CExe2swfDlg::CExe2swfDlg(CWnd* pParent /*=NULL*/)
: CDialog(CExe2swfDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CExe2swfDlg)
m_bExe = TRUE;
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CExe2swfDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CExe2swfDlg)
DDX_Check(pDX, IDC_CHECK_EXE, m_bExe);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CExe2swfDlg, CDialog)
//{{AFX_MSG_MAP(CExe2swfDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_C, OnButtonC)
ON_BN_CLICKED(IDC_CHECK_EXE, OnCheckExe)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CExe2swfDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// m_bExe = FALSE;
// UpdateData(FALSE);
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);
return TRUE;
}
void CExe2swfDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
void CExe2swfDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this);
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
HCURSOR CExe2swfDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CExe2swfDlg::OnButtonC()
{
TCHAR szFilters[] = _T("可执行文件(*.exe)|*.exe|");
CFileDialog dlgFileOpen(TRUE, _T("exe"), _T("*.exe"), OFN_FILEMUSTEXIST |
OFN_HIDEREADONLY, szFilters);
if(dlgFileOpen.DoModal() != IDOK)
{
return;
}
CString strFileName = dlgFileOpen.GetPathName();
CString strDesFilenName = strFileName.Left(strFileName.GetLength()-3) + _T("swf");
BYTE btSwf[4];
BYTE bt[1024*100];//100KB
CFile file(strFileName,CFile::modeRead|CFile::modeNoTruncate);
CFile fDes(strDesFilenName, CFile::modeReadWrite|CFile::modeCreate);
long size = file.GetLength();
file.Seek(size-4, file.begin);
file.Read(btSwf, 4);
long swf = btSwf[0] + btSwf[1]*256 + btSwf[2]*256*256 + btSwf[3]*256*256*256;
long start = size - swf - 8;
BOOL bOK = TRUE;
if (start < 1024*100)
{
bOK = FALSE;
}
if (swf > 1024 * 1024 * 20)
{
bOK = FALSE;
}
if (size > 1024 * 1024 * 20)
{
bOK = FALSE;
}
if (!bOK)
{
MessageBox(_T("好像有什么不对啊!"), _T("不对劲"), MB_OK);
file.Close();
fDes.Close();
return;
}
file.Seek(start, file.begin);
long nConst = 1024*100;
long cyc = swf / nConst;
for (int i = 0; i < cyc; i++)
{
file.Read(bt, nConst);
fDes.Write(bt, nConst);
}
if (swf%nConst!=0)
{
long sx = swf % nConst;
file.Read(bt, sx);
fDes.Write(bt, sx);
}
if (m_bExe)
{
CString strFlashPlayer = _T("C:\\FlashPlayer.exe");
CFile fExe(strFlashPlayer, CFile::modeReadWrite|CFile::modeCreate);
long nFlashPlayer = start;
cyc = nFlashPlayer / nConst;
file.SeekToBegin();
for (i = 0; i < cyc; i++)
{
file.Read(bt, nConst);
fExe.Write(bt, nConst);
}
if (nFlashPlayer%nConst!=0)
{
long sx = nFlashPlayer % nConst;
file.Read(bt, sx);
fExe.Write(bt, sx);
}
fExe.Close();
MessageBox(_T("播放器 C:\\FlashPlayer.exe 已经生成!"));
}
file.Close();
fDes.Close();
}
void CExe2swfDlg::OnCheckExe()
{
m_bExe = !m_bExe;
}
- 1
- 2
前往页