本文实例讲述了VC++操作文本文件的方法,实现在txt文件指定位置插入内容。对于VC++爱好者有一定的学习参考价值。
主要功能代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
void CGoToFileDlg::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 CGoToFileDlg::OnQueryDragIcon()
{
return ( HCURSOR ) m_hIcon;
}
void CGoToFileDlg::OnButopen()
{
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
if (dlg.DoModal() == IDOK) //判断是否按下"打开"按钮
{
m_Path = dlg.GetPathName(); //获得文件路径
FILE *pFile = fopen (m_Path, "r+t" ); //以读写形式打开文件
if (pFile) //判断文件是否被正确打开
{
char pchData[1000] = {0}; //定义数据缓冲区
fread (pchData, sizeof ( char ),1000,pFile); //读取数据到缓冲区中
fclose (pFile); //关闭文件
m_File = pchData;
}
UpdateData(FALSE);
}
}
void CGoToFileDlg::OnButinsert()
{
UpdateData();
FILE *pFile = fopen (m_Path, "r+t" ); //以读写形式打开文件
if (pFile) //判断文件是否被正确打开
{
fseek (pFile,m_Goto,SEEK_SET); //定位文件
CString str = m_Text + m_File.Right(m_File.GetLength()-m_Goto); //设置字符串
fputs (str.GetBuffer(0),pFile); //向文件中写入数据
fseek (pFile,0,SEEK_SET); //重新定位文件
char pchData[1000] = {0}; //定义数据缓冲区
fread (pchData, sizeof ( char ),1000,pFile); //读取数据到缓冲区中
fclose (pFile); //关闭文件
m_File = pchData;
UpdateData(FALSE);
}
}
|
代码备有较为详细的注释,相对来说不难理解。读者还可以进一步完善程序代码,以实现更为强大的功能。