#include <windows.h>
#include <commdlg.h>
#include <tchar.h> // for _tcsstr (strstr for Unicode & non-Unicode)
static TCHAR szFindText [512] ;
static TCHAR szReplText [512] ;
HWND EditFindDlg (HWND hWnd)
{
static FINDREPLACE fr; // must be static for modeless dialog!!!
fr.lStructSize = sizeof (FINDREPLACE) ;
fr.hwndOwner = hWnd ;
fr.hInstance = NULL ;
fr.Flags = FR_HIDEUPDOWN | FR_HIDEWHOLEWORD | FR_HIDEMATCHCASE;
fr.lpstrFindWhat = szFindText ;
fr.lpstrReplaceWith = NULL ;
fr.wFindWhatLen = 512 ;
fr.wReplaceWithLen = 0 ;
fr.lCustData = 0 ;
fr.lpfnHook = NULL ;
fr.lpTemplateName = NULL ;
return FindText (&fr) ;
}
BOOL EditFindText (HWND hwndEdit, int * piOffset, LPFINDREPLACE lpfr)
{
int iLength, iPos ;
PTSTR pstrDoc, pstrPos ;
// Read in the edit document
iLength = GetWindowTextLength (hwndEdit) ;
if (NULL == (pstrDoc = (PTSTR) malloc ((iLength + 1) * sizeof (TCHAR))))
return FALSE ;
GetWindowText (hwndEdit, pstrDoc, iLength + 1) ;
// Search the document for the find string
pstrPos = _tcsstr (pstrDoc + * piOffset, lpfr->lpstrFindWhat) ;
free (pstrDoc) ;
// Return an error code if the string cannot be found
if (pstrPos == NULL)
return FALSE ;
// Find the position in the document and the new start offset
iPos = pstrPos - pstrDoc ;
* piOffset = iPos + lstrlen (lpfr->lpstrFindWhat) ;
// Select the found text
SendMessage (hwndEdit, EM_SETSEL, iPos, * piOffset) ;
SendMessage (hwndEdit, EM_SCROLLCARET, 0, 0) ;
return TRUE ;
}
用C++写的一个记事本
最新推荐文章于 2024-08-18 09:00:00 发布