popfind.c

来自「C#一个实例源代码」· C语言 代码 · 共 94 行

C
94
字号
#include <windows.h>
#include <commdlg.h>

#include <tchar.h>

#define MAX_STRING_LEN 256

static TCHAR szFindText[MAX_STRING_LEN];
static TCHAR szReplText[MAX_STRING_LEN];

HWND PopFindFindDlg(HWND hwnd)
{
	static FINDREPLACE fr;

	fr.lStructSize=sizeof(FINDREPLACE);
	fr.hwndOwner=hwnd;
	fr.hInstance=0;
	fr.Flags=FR_HIDEUPDOWN|FR_HIDEMATCHCASE|FR_HIDEWHOLEWORD;
	fr.lpstrFindWhat=szFindText;
	fr.lpstrReplaceWith=NULL;
	fr.wFindWhatLen=MAX_STRING_LEN;
	fr.wReplaceWithLen=0;
	fr.lCustData=0;
	fr.lpfnHook=0;
	fr.lpTemplateName=0;

	return FindText(&fr);
}

BOOL PopFindValidFind(void)
{
	return *szFindText!='\0';
}

BOOL PopFindNextText(HWND hwndEdit,int*piSearchOffset)
{
	FINDREPLACE fr;
	fr.lpstrFindWhat=szFindText;
	return PopFindFindText(hwndEdit,piSearchOffset,&fr);
}

BOOL PopFindFindText(HWND hwndEdit,int *piSearchOffset,LPFINDREPLACE pfr)
{
	int iLength,iPos;
	PTSTR pstrDoc,pstrPos;
	
    iLength=GetWindowTextLength(hwndEdit);
	if(NULL==(pstrDoc=(PTSTR)malloc((iLength+1)*sizeof(TCHAR))))
	{	return FALSE;}
	GetWindowText(hwndEdit,pstrDoc,iLength+1);

	pstrPos=_tcsstr(pstrDoc+*piSearchOffset,pfr->lpstrFindWhat);
	free(pstrDoc);

	if(pstrPos==NULL)
	{	return FALSE;}
	iPos=pstrPos-pstrDoc;
	*piSearchOffset=iPos+lstrlen(pfr->lpstrFindWhat);

	SendMessage(hwndEdit,EM_SETSEL,iPos,*piSearchOffset);
	SendMessage(hwndEdit,EM_SCROLLCARET,0,0);
	return  TRUE;
}
HWND PopFindReplaceDlg(HWND hwnd)
{
	static FINDREPLACE fr;

	fr.lStructSize=sizeof(FINDREPLACE);
	fr.hwndOwner=hwnd;
	fr.hInstance=0;
	fr.Flags=FR_HIDEUPDOWN|FR_HIDEMATCHCASE|FR_HIDEWHOLEWORD;
	fr.lpstrFindWhat=szFindText;
	fr.lpstrReplaceWith=szReplText;
	fr.wFindWhatLen=MAX_STRING_LEN;
	fr.wReplaceWithLen=MAX_STRING_LEN;
	fr.lCustData=0;
	fr.lpfnHook=0;
	fr.lpTemplateName=0;
	return ReplaceText(&fr);
}

BOOL PopFindReplaceText(HWND hwndEdit,int *piSearchOffset,LPFINDREPLACE pfr)

{
	if(!PopFindFindText(hwndEdit,piSearchOffset,pfr))
		return 0;
	SendMessage(hwndEdit,EM_REPLACESEL,0,(LPARAM)pfr->lpstrReplaceWith);
	return 1;
}




⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?