void CNotePad1View::OnFindNext(LPCTSTR lpszFind, BOOL bNext, BOOL bCase)
{
// TODO: Add your specialized code here and/or call the base class
CEdit& m_strTextct = this->GetEditCtrl();
CString m_strText;
m_strTextct.GetWindowTextW(m_strText);
int textPosition = m_strText.Find(lpszFind);
if (textPosition == -1)
{
MessageBox(_T("未找到该内容,请重新输入"), _T("失败了"), MB_ICONSTOP | MB_OK);
}
m_strTextct.SetFocus();
m_strTextct.SetSel(textPosition, wcslen(lpszFind) + textPosition);
CEditView::OnFindNext(lpszFind, bNext, bCase);
}
int nStart=0;//先从头开始找
int textPosition = m_strText.Find(lpszFind,nStart);
if (textPosition == -1)
{
MessageBox(_T("未找到该内容,请重新输入"), _T("失败了"), MB_ICONSTOP | MB_OK);
}else{
while (textPosition>=0)//找到第一个后就继续找
{
nStart = textPosition+1;
textPosition = m_strText.Find(lpszFind,nStart);
}
}
int nStart=0;//先从头开始找
int textPosition = m_strText.Find(lpszFind,nStart);
if (textPosition == -1)
{
MessageBox(_T("未找到该内容,请重新输入"), _T("失败了"), MB_ICONSTOP | MB_OK);
}else{
while (textPosition>=0)//找到第一个后就继续找
{
nStart = textPosition+1;
textPosition = m_strText.Find(lpszFind,nStart);
}
}
调试后是有问题的,不能查找了已经……什么情况?
贴出你的代码
void CNotePad1View::OnFindNext(LPCTSTR lpszFind, BOOL bNext, BOOL bCase)
{
// TODO: Add your specialized code here and/or call the base class
CEdit& m_strTextct = this->GetEditCtrl();
CString m_strText;
m_strTextct.GetWindowTextW(m_strText);
int n_Start = 0;
int textPosition = m_strText.Find(lpszFind,n_Start);
if (textPosition == -1)
{
MessageBox(_T("未找到该内容,请重新输入"), _T("失败了"), MB_ICONSTOP | MB_OK);
}
else
{
while(textPosition >= 0)
{
n_Start = textPosition + 1;
textPosition = m_strText.Find(lpszFind,n_Start);
}
}
m_strTextct.SetFocus();
m_strTextct.SetSel(textPosition, wcslen(lpszFind) + textPosition);
CEditView::OnFindNext(lpszFind, bNext, bCase);
}
int nStart=0;//先从头开始找
int textPosition = m_strText.Find(lpszFind,nStart);
if (textPosition == -1)
{
MessageBox(_T("未找到该内容,请重新输入"), _T("失败了"), MB_ICONSTOP | MB_OK);
}else{
while (textPosition>=0)//找到第一个后就继续找
{
nStart = textPosition+1;
textPosition = m_strText.Find(lpszFind,nStart);
}
}
调试后是有问题的,不能查找了已经……什么情况?
贴出你的代码
void CNotePad1View::OnFindNext(LPCTSTR lpszFind, BOOL bNext, BOOL bCase)
{
// TODO: Add your specialized code here and/or call the base class
CEdit& m_strTextct = this->GetEditCtrl();
CString m_strText;
m_strTextct.GetWindowTextW(m_strText);
int n_Start = 0;
int textPosition = m_strText.Find(lpszFind,n_Start);
if (textPosition == -1)
{
MessageBox(_T("未找到该内容,请重新输入"), _T("失败了"), MB_ICONSTOP | MB_OK);
}
else
{
while(textPosition >= 0)
{
n_Start = textPosition + 1;
textPosition = m_strText.Find(lpszFind,n_Start);
}
}
m_strTextct.SetFocus();
m_strTextct.SetSel(textPosition, wcslen(lpszFind) + textPosition);
CEditView::OnFindNext(lpszFind, bNext, bCase);
}
怎么不能查了,在查之前打印出你的m_strText和lpszFind获取的是否是正确的,然后自己比对结果
int nStart=0;//先从头开始找
int textPosition = m_strText.Find(lpszFind,nStart);
if (textPosition == -1)
{
MessageBox(_T("未找到该内容,请重新输入"), _T("失败了"), MB_ICONSTOP | MB_OK);
}else{
while (textPosition>=0)//找到第一个后就继续找
{
nStart = textPosition+1;
textPosition = m_strText.Find(lpszFind,nStart);
}
}
调试后是有问题的,不能查找了已经……什么情况?
贴出你的代码
void CNotePad1View::OnFindNext(LPCTSTR lpszFind, BOOL bNext, BOOL bCase)
{
// TODO: Add your specialized code here and/or call the base class
CEdit& m_strTextct = this->GetEditCtrl();
CString m_strText;
m_strTextct.GetWindowTextW(m_strText);
int n_Start = 0;
int textPosition = m_strText.Find(lpszFind,n_Start);
if (textPosition == -1)
{
MessageBox(_T("未找到该内容,请重新输入"), _T("失败了"), MB_ICONSTOP | MB_OK);
}
else
{
while(textPosition >= 0)
{
n_Start = textPosition + 1;
textPosition = m_strText.Find(lpszFind,n_Start);
}
}
m_strTextct.SetFocus();
m_strTextct.SetSel(textPosition, wcslen(lpszFind) + textPosition);
CEditView::OnFindNext(lpszFind, bNext, bCase);
}
n_Start = textPosition + 1 + lpszFind->GetLength();
n_Start = textPosition + 1 + lpszFind->GetLength();
找到 第一个 字符串后, 返回的是 该 字符串的 头一个 字符的位置, 找 下 个 的 时候 , 开始 位置 在 字符串的 尾部。
可以 strlen( lpszFind)
或者 _tcslen :
求Unicode字符串的长度,使用跟非Unicode的strlen一样