OFNHookProc

OFNHookProc hook-prosedyre er en Programdefinert eller bibliotek-definert tilbakeringingsfunksjonen som brukes med de Explorer-stil Åpne og Lagre som vanlige dialogboksene. Funksjonen mottar varselmeldinger som er sendt fra dialogboksen felles. Funksjonen også mottar meldinger for eventuelle ekstra kontroller som du har definert ved å angi en mal for barn-dialogboksen.

LPOFNHOOKPROC -typen definerer en peker til denne tilbakeringingsfunksjonen for. OFNHookProc er en plassholder for program- eller bibliotek-definert funksjonsnavnet.

Hvis du ikke angir flagget OFN_EXPLORER når du oppretter en dialogboksen Åpne eller Lagre som vanlig, og du vil bruke en hook-prosedyre, må du bruke en gammel stil OFNHookProcOldStyle hook-prosedyre. I dette tilfellet vil dialogboksen har gammeldagse brukergrensesnittet.

() UINT TILBAKERINGING OFNHookProc HWND  hdlg, / / håndtere til Dialogvindauget for barnUINTuiMsg, / / message identifikatorWPARAMwParam, / / message parameterenLPARAMlParam / / message parameteren);
 

Parametere

hdlg
Håndtere til dialogboksen barn i dialogboksen Åpne eller Lagre som . Bruke GetParent -funksjonen til å få håndtaket for å Åpne eller Lagre som -boksen Dialogvindauget for.
uiMsg
Identifiserer meldingen mottas.
wParam
Angir tilleggsinformasjon om meldingen. Den eksakte betydningen er avhengig av verdien for parameteren uiMsg.
lParam
Angir tilleggsinformasjon om meldingen. Den eksakte betydningen er avhengig av verdien for parameteren uiMsg.

Hvis parameteren uiMsg angir meldingen som er WM_INITDIALOG , er lParam en peker til en OPENFILENAME struktur med verdiene angitt da dialogboksen ble opprettet.

Returverdier

Hvis Bindingsprosedyren returnerer null, standard dialogboksen boksen fremgangsmåten, behandler meldingen.

Hvis Bindingsprosedyren returnerer en ikke-nullverdi, ignorerer standard dialogboksen boksen prosedyre meldingen.

For CDN_SHAREVIOLATION og CDN_FILEOK meldingene, skal Bindingsprosedyren returnere en annen verdi for å angi at det har brukt funksjonen for SetWindowLong du vil angi en annen DWL_MSGRESULT-verdi.

Merknader

Når du bruker GetOpenFileName eller GetSaveFileName -funksjonene til å opprette en Explorer-stil Åpne eller Lagre som vanlige dialogboksen, kan du gi en OFNHookProc hook-prosedyre. Bruk OPENFILENAME -strukturen som du sendes til dialogboksen oppretting av funksjonen for å aktivere hook-prosedyre. Angi pekeren til Bindingsprosedyren i lpfnHook -medlem og angi flagget OFN_ENABLEHOOK i flaggene -medlem.

Hvis du legger en Bindingsprosedyren en felles dialogboksen i Explorer-stil, oppretter programmet en dialogboks som er underordnet dialogboksen standard. Bindingsprosedyren fungerer som dialogboksen fremgangsmåten for barn-dialogboksen. Dialogvindauget for barn er basert på malen du har angitt i OPENFILENAME -strukturen, eller er det en standard dialogboks for barn, hvis ingen mal er angitt. Dialogboksen barn blir opprettet når standard dialogboksen prosedyren behandler sin WM_INITDIALOG -melding. Etter at dialogboksen barn behandler sin egen WM_INITDIALOG-melding, flytter standard dialogboksen prosedyren standardkontroller, om nødvendig, for å gjøre plass for eventuelle ekstra kontroller av dialogen barn. Systemet sender deretter varslingsmelding CDN_INITDONE til Bindingsprosedyren.

Bindingsprosedyren mottar ikke meldinger som er ment for standardkontroller i dialogboksen standard. Du kan underklasse standardkontrollene, men dette er motet fordi det kan gjøre programmet ikke kompatibel med fremtidige versjoner av den felles dialogboksen. De vanlige dialogboksene for Explorer-stil kan imidlertid gi et sett med meldinger Bindingsprosedyren kan bruke til å overvåke og kontrollere i dialogboksen. Disse inkluderer et sett med varselmeldinger som er sendt fra dialogboksen, i tillegg til meldinger du kan sende til å hente informasjon fra dialogboksen. For en fullstendig liste over disse meldingene, kan du se Explorer-stil Hook prosedyrer.

Hvis Bindingsprosedyren behandler WM_CTLCOLORDLG meldingen, må den returnere et gyldig pensel håndtak for å male bakgrunnen i dialogboksen. Generelt, hvis den behandler meldinger WM_CTLCOLOR *, må den returnere et gyldig pensel håndtak for å male bakgrunnen for den angitte kontrollen.

Ikke kall funksjonen EndDialog fra hook-prosedyre. I stedet, Bindingsprosedyren kan kalle funksjonen PostMessage til å legge inn en WM_COMMAND-melding med IDABORT-verdien i dialogboksen boksen prosedyren. Postering av IDABORT lukker dialogboksen og fører til at dialogboksen boksen funksjonen returnerer USANN. Hvis du trenger å vite hvorfor Bindingsprosedyren lukket dialogboksen, må du gi din egen mekanisme for kommunikasjon mellom Bindingsprosedyren og programmet.

Hurtiginformasjon

nbsp; Windows &NT: krever versjon 3.1 eller senere.
Windows:Krever Windows 95 eller senere.
Windows CE:Som ikke støttes.
Topptekst:Deklarert i commdlg.h.
Importere biblioteket:Brukerdefinerte.

Se også

Felles biblioteket dialogboksoversikt, felles dialogboksen fungerer, GetOpenFileName, GetSaveFileName, OFNHookProcOldStyle, OPENFILENAME

Index