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

📄 sdmmcdlg.cpp

📁 周立功WinCE光盘资料
💻 CPP
字号:
// SDMMCDlg.cpp : implementation file
//

#include "stdafx.h"
#include "SDMMC.h"
#include "SDMMCDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CSDMMCDlg dialog

CSDMMCDlg::CSDMMCDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSDMMCDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSDMMCDlg)
	m_strFileName = _T("");
	m_strDisp = _T("");
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CSDMMCDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSDMMCDlg)
	DDX_Text(pDX, IDC_EDIT_FILENAME, m_strFileName);
	DDX_Text(pDX, IDC_EDIT_DISP, m_strDisp);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CSDMMCDlg, CDialog)
	//{{AFX_MSG_MAP(CSDMMCDlg)
	ON_BN_CLICKED(IDC_CREATE_FILE, OnCreateFile)
	ON_BN_CLICKED(IDC_WRITE_FILE, OnWriteFile)
	ON_BN_CLICKED(IDC_READFILE, OnReadfile)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSDMMCDlg message handlers


/***************************************************

		实    验    代    码

****************************************************/

HANDLE hFile = INVALID_HANDLE_VALUE;	/* 文件句柄 */

BOOL CSDMMCDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);				// Set big icon
	SetIcon(m_hIcon, FALSE);			// Set small icon
	
	CenterWindow(GetDesktopWindow());	// center to the hpc screen

	// TODO: Add extra initialization here
	m_strFileName = "test.txt";			// 文件名
	UpdateData(FALSE);

	return TRUE;  // return TRUE  unless you set the focus to a control
}


// "创建文件/打开文件" 按键单击事件代码
void CSDMMCDlg::OnCreateFile() 
{
	CString filename = "";
	UpdateData(TRUE);

	if (m_strFileName == "")
	{
		MessageBox(_T("请输入文件名!"));
		return;
	}
	
	// 取得文件名及路径
	filename = _T("\\Storage Card\\") + m_strFileName;

	// 创建一个文件或打开一个文件
	hFile = CreateFile(filename, GENERIC_READ | GENERIC_WRITE, 0, 
					   NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
	if (hFile == INVALID_HANDLE_VALUE)
	{
		MessageBox(_T("在SD/MMC卡上创建文件失败!"));
		return;
	}

	MessageBox(_T("成功创建/打开文件:") + filename);
}


// "写" 按键单击事件代码
void CSDMMCDlg::OnWriteFile() 
{
	DWORD len,actlen;
	char *pcharbuff;

	if (hFile == INVALID_HANDLE_VALUE)
	{
		MessageBox(_T("文件未打开!"));
		return;	
	}

	UpdateData(TRUE);
	len = m_strDisp.GetLength();							/* 取得输入字符串的长度 */

	pcharbuff = new char[len];
	LPTSTR pStr = m_strDisp.GetBuffer(len);					/* 取得输入字符串的缓冲区指针 */

	// 将 Unicode 的 CString 转换为 char 型
	WideCharToMultiByte(CP_ACP, 0, pStr, len, pcharbuff, len, NULL, NULL);
	m_strDisp.ReleaseBuffer();

	BOOL ret = SetFilePointer(hFile, 0, NULL, FILE_BEGIN);	/* 移动文件指针到文件开头 */
	if (ret == 0xFFFFFFFF)
	{
		MessageBox(_T("将文件指针移至文件开头失败!"));
		delete[] pcharbuff;
		return;	
	}

	ret = WriteFile(hFile, pcharbuff, len, &actlen, NULL);	/* 将数据写入文件中 */
	if (ret == TRUE)
		MessageBox(_T("写文件成功!"));	
	else
		MessageBox(_T("写文件失败!"));	
	
	if (pcharbuff != NULL) 
		delete[] pcharbuff;
}


// "读" 按键单击事件代码
void CSDMMCDlg::OnReadfile() 
{
	DWORD filelen,actlen;
	char *pcharbuff;

	if (hFile == INVALID_HANDLE_VALUE)
	{
		MessageBox(_T("文件未打开!"));
		return;	
	}
	
	filelen = GetFileSize(hFile, NULL);							/* 获取文件大小 */
	if (filelen == 0xFFFFFFFF)
	{
		MessageBox(_T("获取文件大小失败!"));
		return;	
	}

	BOOL ret = SetFilePointer(hFile, 0, NULL, FILE_BEGIN);		/* 移动文件指针到文件开头 */	
	if (ret == 0xFFFFFFFF)
	{
		MessageBox(_T("将文件指针移至文件开头失败!"));
		return;	
	}

	pcharbuff = new char[filelen];
	ret = ReadFile(hFile, pcharbuff, filelen, &actlen, NULL);	/* 从文件中读出数据 */
	if (ret == TRUE)
	{
		LPTSTR pStr = m_strDisp.GetBuffer(filelen);	
		// 将字节转化为 Unicode 字符串
		MultiByteToWideChar(CP_ACP, 0, pcharbuff, filelen, pStr, filelen);
		m_strDisp.ReleaseBuffer();
		UpdateData(FALSE);										/* 将读出的数据显示出来 */
		MessageBox(_T("读文件成功!"));	
	}
	else
	{
		UpdateData(FALSE);
		MessageBox(_T("读文件失败!"));	
	}

	if (pcharbuff != NULL) 
		delete[] pcharbuff;	
}

⌨️ 快捷键说明

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