Este tópico descreve codificar exemplo que exibe e gerencia uma caixa de diálogo Localizar para que o usuário pode especificar os parâmetros de uma operação de pesquisa. A caixa de diálogo envia mensagens para seu procedimento de janela para que você pode executar a operação de pesquisa.
O código para exibir e gerenciar uma caixa de diálogo Substituir é semelhante, exceto que ele usa a função ReplaceText para exibir a caixa de diálogo. A caixa de diálogo Substituir também envia mensagens em resposta a cliques de usuário nos botões Substituir e Substituir tudo.
Para usar a caixa de diálogo Localizar ou Substituir , você deve executar três tarefas separadas:
Quando você inicializa o aplicativo, chamar o RegisterWindowMessage função para obter um identificador de mensagem para a mensagem registrada FINDMSGSTRING.
UINT uFindReplaceMsg; / / mensagem identificador para FINDMSGSTRING uFindReplaceMsg = RegisterWindowMessage(FINDMSGSTRING)
Para exibir uma caixa de diálogo Localizar , primeiro inicializar uma estrutura FINDREPLACE e, em seguida, chamar a função FindText . Observe que a estrutura FINDREPLACE e o buffer para a Cadeia de caracteres de pesquisa devem ser uma variável global ou estática para não ficar fora do escopo antes que a caixa de diálogo é fechada. Você deve definir o membro de hwndOwner para especificar a janela que recebe as mensagens registadas. Depois de criar a caixa de diálogo, você pode mover ou manipulá-lo usando o identificador retornado.
FINDREPLACE fr; / / estrutura de caixa de diálogo comum
HWND hwnd; / / janela do proprietário
CHAR szFindWhat [80]; / / buffer de Cadeia de caracteres de recebimento
HWND hdlg = NULL; / / identificador da caixa de diálogo Localizar
/ / Inicializar FINDREPLACE
ZeroMemory (amp; fr, sizeof(FINDREPLACE));
FR.lStructSize = sizeof(FINDREPLACE);
FR.hwndOwner = hwnd;
FR.lpstrFindWhat = szFindWhat;
FR.wFindWhatLen = 80;
FR.Sinalizadores = 0;
hDlg = FindText (& fr)
Quando a caixa de diálogo é aberta, o loop de mensagem principal deve incluir um chamar para o IsDialogMessage função. Passe o identificador de janela da caixa de diálogo como um parâmetro na chamar IsDialogMessage . Isso garante que a caixa de diálogo processa correctamente mensagens de teclado.
Para monitorar as mensagens enviadas da caixa de diálogo, seu procedimento janela deve verificar a mensagem registrada FINDMSGSTRING e processar os valores passados a estrutura FINDREPLACE como no exemplo a seguir:
Lpfr LPFINDREPLACE;
se (mensagem = = uFindReplaceMsg) {/ / Get a ponteiro para a estrutura FINDREPLACE de lParam.
LPFR = lParam (LPFINDREPLACE);
/ / Se o sinalizador FR_DIALOGTERM é definida, / / invalida o identificador que identifica a caixa de diálogo.
se (lpfr-gt;Sinalizadores & FR_DIALOGTERM) {hdlg = NULL;
return 0;
} / / Se o sinalizador FR_FINDNEXT é definida, / / a rotina de pesquisa definido pelo aplicativo de chamada
/ / para procurar a Cadeia de caracteres solicitada.
se (lpfr - > sinalizadores & FR_FINDNEXT) SearchFile (lpfr - > lpstrFindWhat,
(BOOL) (lpfr - > sinalizadores & FR_DOWN), (BOOL) (lpfr - > sinalizadores & FR_MATCHCASE));
return 0;
}