CFile

#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的某一项变灰,不可选中



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值