#define TMP_FILE _T("my_test.txt")
#define DEST_FILE _T("my_dest.txt")
#define SECTION_BEGIN_FLAG _T("/* <")
#define SECTION_END_FLAG _T("> */")
#define DELETE_FLAG _T("Things can only get better")
void CCFileDlg::OnButtonDelete()
{
// TODO: Add your control notification handler code here
CStdioFile fDes, fTmp;
if (!fDes.Open(DEST_FILE, CFile::modeRead))
{
MessageBox(_T("Open file failed!"), _T("Prompt"));
return;
}
if (!fTmp.Open(TMP_FILE, CFile::modeCreate | CFile::modeWrite))
{
MessageBox(_T("Create file failed!"), _T("Prompt"));
return;
}
CString strReadBuf;
int iStrPos = 0;
ULONGLONG uFilePos = 0;
ULONGLONG uTmpFilePos = 0;
while (fDes.ReadString(strReadBuf))
{
CString strTmpBuf(strReadBuf);
strTmpBuf.SpanExcluding(_T(" "));
if ((iStrPos = strTmpBuf.Find(SECTION_BEGIN_FLAG)) >= 0)
{
uFilePos = fDes.GetPosition();
uFilePos -= strReadBuf.GetLength();
uTmpFilePos = fTmp.GetPosition();
}
if ((iStrPos = strReadBuf.Find(DELETE_FLAG)) >= 0)
{
fDes.Seek(uFilePos, CFile::begin);
fTmp.Seek(uTmpFilePos, CFile::begin);
do {
if (!fDes.ReadString(strReadBuf))
break;
strTmpBuf = strReadBuf;
strTmpBuf.SpanExcluding(_T(" "));
} while ((iStrPos = strTmpBuf.Find(SECTION_END_FLAG)) < 0);
break;
}
fTmp.WriteString(strReadBuf + _T('\n'));
}
// 进行剩余部分的复制
while (fDes.ReadString(strReadBuf))
{
fTmp.WriteString(strReadBuf + _T('\n'));
}
fTmp.SetLength(fTmp.GetPosition());
fTmp.Close();
fDes.Close();
// 移除目的文件
// CFile::Remove(DEST_FILE);
// 将临时文件命名为目的文件
// CFile::Rename(TMP_FILE, DEST_FILE );
}
void
CTest6Dlg::OnClickList1(NMHDR* pNMHDR,
LRESULT
* pResult)
{
//这样貌似也行,简单点
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if
(pNMListView->iItem != -1)
{
m_ListCtrl.SetItemState(pNMListView->iItem, 0,-1);
}
*pResult = 0;
}
CListCtrl的某一项变灰,不可选中