📄 dlgsdmmc.cpp
字号:
// DLGSDMMC.cpp : implementation file
//
#include "stdafx.h"
#include "Magic2410.h"
#include "DLGSDMMC.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// DLGSDMMC dialog
DLGSDMMC::DLGSDMMC(CWnd* pParent /*=NULL*/)
: CDialog(DLGSDMMC::IDD, pParent)
{
//{{AFX_DATA_INIT(DLGSDMMC)
m_strFileName = _T("");
m_strDisp = _T("Write data into SD or MMC Card.");
m_strReadDisp = _T("");
//}}AFX_DATA_INIT
m_strFileName = "test.txt"; // 文件名
}
void DLGSDMMC::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(DLGSDMMC)
DDX_Text(pDX, IDC_EDIT_FILENAME, m_strFileName);
DDX_Text(pDX, IDC_EDIT_DISP, m_strDisp);
DDX_Text(pDX, IDC_READ_DISP, m_strReadDisp);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(DLGSDMMC, CDialog)
//{{AFX_MSG_MAP(DLGSDMMC)
ON_BN_CLICKED(IDC_CREATE_FILE, OnCreateFile)
ON_BN_CLICKED(IDC_READFILE, OnReadfile)
ON_BN_CLICKED(IDC_WRITE_FILE, OnWriteFile)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// DLGSDMMC message handlers
// "创建文件/打开文件" 按键单击事件代码
void DLGSDMMC::OnCreateFile()
{
// TODO: Add your control notification handler code here
CString filename = "";
UpdateData(TRUE);
CButton *pWriteButton = (CButton*)GetDlgItem(IDC_WRITE_FILE); /* 取得控件指针 */
CButton *pReadButton = (CButton*)GetDlgItem(IDC_READFILE); /* 取得控件指针 */
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)
{
pWriteButton->EnableWindow(FALSE);
pReadButton->EnableWindow(FALSE);
MessageBox(_T("在SD/MMC卡上创建文件失败! 检查是否已插入格式化好的SD/MMC卡."));
return;
}
pWriteButton->EnableWindow(TRUE);
pReadButton->EnableWindow(TRUE);
MessageBox(_T("成功创建/打开文件:") + filename);
}
// "读" 按键单击事件代码
void DLGSDMMC::OnReadfile()
{
// TODO: Add your control notification handler code here
DWORD filelen,actlen;
char *pcharbuff;
BOOL ret;
if (hFile == NULL)
{
MessageBox(_T("文件未打开!"));
return;
}
filelen = GetFileSize(hFile, NULL); /* 获取文件大小 */
if (filelen == 0xFFFFFFFF)
{
MessageBox(_T("获取文件大小失败!"));
return;
}
if(ret = SetFilePointer(hFile, 0, NULL, FILE_BEGIN)) /* 移动文件指针到文件开头 */
{
MessageBox(_T("将文件指针移至文件开头失败!"));
return;
}
pcharbuff = new char[filelen];
ret = ReadFile(hFile, pcharbuff, filelen, &actlen, NULL); /* 从文件中读出数据 */
if (ret == TRUE)
{
LPTSTR pStr = m_strReadDisp.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;
}
// "写" 按键单击事件代码
void DLGSDMMC::OnWriteFile()
{
// TODO: Add your control notification handler code here
DWORD len,actlen;
char *pcharbuff;
BOOL ret;
if (hFile == NULL)
{
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();
if(ret = SetFilePointer(hFile, 0, NULL, FILE_BEGIN)) /* 移动文件指针到文件开头 */
{
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;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -