Megosztás a következőn keresztül:


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ó.

keresés párbeszédpanel

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ó.

csere párbeszédpanel

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

  1. 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.
  2. 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

  1. Állítsa be a FR_ENABLEHOOK jelölőt a JelzőkFINDREPLACE struktúrájának tagjára.
  2. 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);