Im PSDK von Microsoft findet sich noch das Muss, "" zu benutzen, wenn man die beiden Dialoge aufruft. Dieser Empfehlung wollen wir im letzten Schritt dieses Kapitels folgen. Dazu benötigen wir zuerst eine globale Variable, die das Handle des Suchendialogs aufnehmen soll:
var
hDlg : HWND = 0;
Wenn wir nun im Beispielprogramm die Prozedur "Find" aufrufen, weisen wir dort das Handle des benutzten Dialogs der Variablen zu:
if(fReplaceMode) then hDlg := CommDlg.ReplaceText(fnd) else hDlg := CommDlg.FindText(fnd);
Der letzte Schritt ist die Erweiterung der Nachrichtenschleife im Hauptteil des Programms:
while(GetMessage(msg,0,0,0)) do if(not IsDialogMessage(hDlg,msg)) then begin TranslateMessage(msg); DispatchMessage(msg); end;
Nun reagiert der Dialog so, wie wir es aus anderen Anwendungen gewohnt sind. Wir können mit der TAB-Taste zwischen den einzelnen Controls wechseln, mit ENTER die Suche auslösen, ihn mit ESC beenden, usw.