writefile.cpp
来自「IO函数调用测试」· C++ 代码 · 共 223 行
CPP
223 行
// WriteFile.cpp : implementation file
//
#include "stdafx.h"
#include "afxtempl.h"
#include "help.h"
#include "DataArray.h"
#include "HexDisp.h"
#include "Status.h"
#include "IOExplorer.h"
#include "NumericEdit.h"
#include "TraceEvent.h"
#include "EventList.h"
#include "EventLog.h"
#include "Handle.h"
#include "HandleCombo.h"
#include "handleManager.h"
#include "TraceManager.h"
#include "CreateFileSheet.h"
#include "WriteFileEvent.h"
#include "HandlePage.h"
#include "WriteFile.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CWriteFile property page
IMPLEMENT_DYNCREATE(CWriteFile, CHandlePage)
CWriteFile::CWriteFile() : CHandlePage(CWriteFile::IDD)
{
initialized = FALSE;
//{{AFX_DATA_INIT(CWriteFile)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
CWriteFile::~CWriteFile()
{
}
void CWriteFile::DoDataExchange(CDataExchange* pDX)
{
CHandlePage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CWriteFile)
DDX_Control(pDX, IDC_BYTES, c_Bytes);
DDX_Control(pDX, IDC_HEX, c_Hex);
DDX_Control(pDX, IDC_WRITEFILE, c_WriteFile);
DDX_Control(pDX, IDC_BYTESTOWRITE, c_BytesToWrite);
DDX_Control(pDX, IDC_BYTESWRITTEN, c_BytesWritten);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CWriteFile, CHandlePage)
//{{AFX_MSG_MAP(CWriteFile)
ON_EN_CHANGE(IDC_BYTES, OnChangeBytes)
ON_BN_CLICKED(IDC_WRITEFILE, OnWritefile)
ON_BN_CLICKED(IDC_HEX, OnHex)
ON_BN_CLICKED(IDC_HELPBUTTON, OnHelp)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CWriteFile message handlers
/****************************************************************************
* CWriteFile::OnChangeBytes
* Result: void
*
* Effect:
* Note that we use OnChange because OnUpdate is reflected
* to the control and we can't reflect it back up here without getting
* into an infinite recursion.
****************************************************************************/
void CWriteFile::OnChangeBytes()
{
updateControls();
}
/****************************************************************************
* CWriteFile::OnWriteFile
* Result: void
*
* Effect:
* Actually writes the data to the file
****************************************************************************/
void CWriteFile::OnWritefile()
{
CCreateFileSheet * sheet = getSheet();
CHandle * ho = sheet->HandleList.getCurrentHandle();
CDataArray b;
c_Bytes.GetWindowText(b);
WriteFileEvent * e = new WriteFileEvent(ho == NULL ? _T("") : ho->Name,
ho == NULL ? NULL : ho->h,
b);
e->execute();
c_Status.SetWindowText(e->lasterror);
sheet->log->add(e);
setEvent(*e);
}
/****************************************************************************
* CWriteFile::OnHex
* Result: void
*
* Effect:
* Changes the display to hex bytes
****************************************************************************/
void CWriteFile::OnHex()
{
if(c_Hex.GetCheck() == BST_CHECKED)
{ /* hex */
c_Bytes.toHex();
} /* hex */
else
{ /* ascii */
c_Bytes.toAscii();
} /* ascii */
}
/****************************************************************************
* CWriteFile::getEvent
* Inputs:
* WriteFileEvent & e:
* Result: void
*
* Effect:
* Copies controls to a Writefile object
****************************************************************************/
void CWriteFile::getEvent(WriteFileEvent & e)
{
}
/****************************************************************************
* CWriteFile::setEvent
* Inputs:
* WriteFileEvent & e
* Result: void
*
* Effect:
* Transfers contents of event to controls
****************************************************************************/
void CWriteFile::setEvent(WriteFileEvent & e)
{
c_BytesWritten.SetWindowText(e.NumberOfBytesWritten);
}
/****************************************************************************
* CWriteFile::updateControls
* Result: void
*
* Effect:
* Updates the controls
****************************************************************************/
void CWriteFile::updateControls()
{
CDataArray b;
CCreateFileSheet * sheet = getSheet();
CHandle * ho = sheet->HandleList.getCurrentHandle();
c_Bytes.GetWindowText(b); // Handle UNICODE properly
c_BytesToWrite.SetWindowText(b.GetSize());
c_Hex.EnableWindow(c_Bytes.canAscii());
WriteFileEvent e(ho == NULL ? _T("") : ho->Name,
ho == NULL ? 0 : ho->h,
b);
CString s = e.display();
c_Text.SetWindowTextA(s);
c_WriteFile.EnableWindow(b.GetSize() > 0);
}
BOOL CWriteFile::OnInitDialog()
{
CHandlePage::OnInitDialog();
initialized = TRUE;
updateControls();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CWriteFile::OnSetActive()
{
return CHandlePage::OnSetActive();
}
/****************************************************************************
* CWriteFile::OnHelp
* Result: void
*
* Effect:
* Calls the help system
****************************************************************************/
void CWriteFile::OnHelp()
{
AfxGetApp()->WinHelp(WriteFileHelp, HELP_CONTEXT);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?