Párbeszédpanelek keresése és cseréje
Egy mód nélküli párbeszédpanelt jelenít meg, amely lehetővé teszi a felhasználó számára, hogy egy keresett sztringet adjon meg, valamint a dokumentum szövegének keresésekor használható beállításokat. A Csere párbeszédpanelen a felhasználó megadhat egy keresendő sztringet és egy helyettesítő sztringet, valamint a művelet vezérlésére szolgáló beállításokat.
Find párbeszédpanelt úgy hozhat létre és jeleníthet meg, hogy inicializál egy FINDREPLACE struktúrát, és átadja a struktúrát a FindText függvénynek. Az alábbi ábrán egy tipikus keresése párbeszédpanel látható.
cseréje párbeszédpanelt úgy hozhat létre és jeleníthet meg, hogy inicializál egy FINDREPLACE struktúrát, és átadja a struktúrát a ReplaceText függvénynek. Az alábbi ábrán egy tipikus cseréje párbeszédpanel látható.
A többi gyakori párbeszédpaneltől eltérően a keresése és Csere párbeszédpanelek üzemmód nélküliek. A mód nélküli párbeszédpanelek lehetővé teszik a felhasználó számára, hogy váltson a párbeszédpanel és az azt létrehozó ablak között. Ez akkor hasznos, ha lehetővé teszi, hogy a felhasználó sztringet keressen, váltson az alkalmazásablakra a sztring használatához, és váltson vissza a párbeszédpanelre egy másik sztring kereséséhez anélkül, hogy megismételné a párbeszédpanel megnyitásához szükséges parancsot.
Ha a Szövegkereső vagy Szöveg cseréje függvény sikeresen létrehozza a párbeszédpanelt, egy leírót ad vissza a párbeszédpanelhez. Ezzel a fogóponttal áthelyezheti és kommunikálhat a párbeszédpanellel. Ha a függvény nem tudja létrehozni a párbeszédpanelt, NULLad vissza. A hiba okának meghatározásához hívja meg a CommDlgExtendedError függvényt a kiterjesztett hibaérték lekéréséhez.
Ez a szakasz a következő témaköröket ismerteti.
A FINDMSGSTRING regisztrált üzenete
Mielőtt létrehoz egy keresése vagy Csere párbeszédpanelt, meg kell hívnia a RegisterWindowMessage függvényt, hogy lekérje a FINDMSGSTRING regisztrált üzenet üzenetazonosítóját. Ezután az azonosítóval észlelheti és feldolgozhatja a párbeszédpanelről küldött üzeneteket. Amikor a felhasználó a Következő, cseréje vagy Az összes cseréje gombra kattint egy párbeszédpanelen, a párbeszédpanel-eljárás FINDMSGSTRING üzenetet küld a tulajdonosablak ablakműveletének. A párbeszédpanel létrehozásakor a hwndOwnerFINDREPLACE struktúra tagja azonosítja a tulajdonosablakot.
A FINDMSGSTRING üzenet lParam paramétere a párbeszédpanel létrehozásakor megadott FINDREPLACE struktúrára mutató mutató. Az üzenet elküldése előtt a párbeszédpanel a struktúra tagjait a legújabb felhasználói bemenettel állítja be, beleértve a keresendő sztringet, a helyettesítő sztringet (ha van ilyen), valamint a keresés és csere művelet beállításait.
A FINDMSGSTRING üzenetben a FINDREPLACE struktúrájának jelzői az alábbi jelölők egyikét tartalmazzák az üzenet kiváltó eseményének jelzésére.
Zászló | Jelentés |
---|---|
FR_DIALOGTERM | A párbeszédpanel bezárul. Miután a tulajdonosi ablak feldolgozta ezt az üzenetet, a párbeszédpanel egyik leírója már nem érvényes. |
FR_FINDNEXT | A felhasználó a Keresés vagy Csere párbeszédpanelen a Következő keresése gombra kattintott. A lpstrFindWhat tag határozza meg a keresendő sztringet. |
FR_REPLACE | A felhasználó a Csere gombra kattintott egy Csere párbeszédpanelen. Az lpstrFindWhat tag határozza meg a lecserélendő sztringet, és az lpstrReplaceWith tag adja meg a helyettesítő sztringet. |
FR_REPLACEALL | A felhasználó a Az összes cseréje gombra kattintott egy Csere párbeszédpanelen. Az lpstrFindWhat tag határozza meg a lecserélendő sztringet, és az lpstrReplaceWith tag adja meg a helyettesítő sztringet. |
A Következő keresése vagy Az összes cseréje üzenet esetén a jelzők tag az alábbi jelölők bármely kombinációját is belefoglalhatja a keresési beállítások megjelöléséhez.
Zászló | Jelentés |
---|---|
FR_DOWN | Ha be van állítva, a Lefelé gomb van kiválasztva, jelezve, hogy a felhasználó az aktuális helyről a dokumentum végéig szeretne keresni. Ha FR_DOWN nincs beállítva, a Fel gomb van kiválasztva, hogy a felhasználó a dokumentum elejére keressen. |
FR_MATCHCASE | Ha be van állítva, a Kis- és nagybetűk egyeztetése jelölőnégyzet be van jelölve, jelezve, hogy a felhasználó a kis- és nagybetűk megkülönböztetését szeretné. Ha FR_MATCHCASE nincs beállítva, a jelölőnégyzet nincs bejelölve, hogy a keresés ne legyen érzéketlen a kis- és nagybetűk között. |
FR_WHOLEWORD | Ha be van állítva, a Csak a Teljes szó jelölőnégyzet be van jelölve, ami azt jelzi, hogy a felhasználó csak a keresési sztringnek megfelelő teljes szavakra szeretne keresni. Ha FR_WHOLEWORD nincs beállítva, a jelölőnégyzet nincs bejelölve, ezért a keresési sztringnek megfelelő szótöredékeket is meg kell keresnie. |
A Keresés vagy csere párbeszédpanel testreszabása
A keresése vagy Csere párbeszédpanel testreszabásához az alábbi módszerek bármelyikét használhatja:
- Adja meg a FINDREPLACE szerkezet értékeit a párbeszédpanel létrehozásakor
- Egyéni sablon megadása
- Kampós eljárás megadása
A Keresés vagy cseréje párbeszédpanel létrehozásakor a JelzőkFINDREPLACE struktúrában beállíthatja a jelölőket a keresési beállítás vezérlőinek elrejtéséhez vagy letiltásához. Beállíthatja például a FR_NOMATCHCASE jelzőt úgy, hogy letiltsa a Kis- és nagybetűk egyeztetése jelölőnégyzetet, vagy a FR_HIDEMATCHCASE jelzőt is elrejtheti.
Megadhat egyéni sablont egy keresése vagy cseréje párbeszédpanelhez, ha például az alkalmazásra jellemző további vezérlőket szeretne használni. A Szövegkereső és ReplaceText függvények az alapértelmezett sablon helyett az egyéni sablont használják.
Egyéni sablon megadása keresés vagy csere párbeszédpanelhez
- Hozza létre az egyéni sablont a Findtext.dlg fájlban megadott alapértelmezett sablon módosításával. Az alapértelmezett keresése vagy Csere párbeszédpanelsablonban használt vezérlőazonosítók a Dlgs.h fájlban vannak definiálva.
- A sablon engedélyezéséhez használja a FINDREPLACE struktúrát:
-
Ha az egyéni sablon egy alkalmazás vagy dinamikus csatolású tár erőforrása, állítsa be a FR_ENABLETEMPLATE jelzőt a Jelzők tagban. A hInstance és lpTemplateName a struktúra tagjaival azonosíthatja a modult és az erőforrásnevet.
-Vagy-
Ha az egyéni sablon már a memóriában van, állítsa be a FR_ENABLETEMPLATEHANDLE jelzőt. A hInstance tag használatával azonosíthatja a sablont tartalmazó memóriaobjektumot.
-
FRHookProc horog eljárást adhat meg egy keresése vagy Csere párbeszédpanelhez. A horog eljárás képes feldolgozni a párbeszédpanelre küldött üzeneteket. Ha egyéni sablont használ a további vezérlők definiálásához, meg kell adnia egy horog eljárást a vezérlők bemenetének feldolgozásához.
A Keresés vagy csere párbeszédpanel horog eljárásának engedélyezése
- Állítsa be a FR_ENABLEHOOK jelölőt a JelzőkFINDREPLACE struktúrájának tagjára.
- Adja meg a horog eljárás címét az lpfnHook tagban.
A WM_INITDIALOG üzenet feldolgozása után a párbeszédpanel-eljárás egy WM_INITDIALOG üzenetet küld a horog eljárásnak. Az üzenet lParam paramétere a párbeszédpanel inicializálásához használt FINDREPLACE szerkezetére mutató mutató.
Ha a horog eljárás a WM_INITDIALOG üzenetre válaszul HAMIS ad vissza, a párbeszédpanel csak akkor jelenik meg, ha a horog eljárás megjeleníti. Ehhez először végezzen el minden más festési műveletet, majd hívja meg a ShowWindow és UpdateWindow függvényt. Az alábbi kód egy példát mutat be:
// We've returned FALSE in response to WM_INITDIALOG.
// We've performed any other paint operations.
// Now we display the dialog box.
ShowWindow(hDlg, SW_SHOWNORMAL);
UpdateWindow(hDlg);