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);
Hvis parameteren uiMsg angir meldingen som er WM_INITDIALOG , er lParam en peker til en OPENFILENAME struktur med verdiene angitt da dialogboksen ble opprettet.
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.
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.
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.
Felles biblioteket dialogboksoversikt, felles dialogboksen fungerer, GetOpenFileName, GetSaveFileName, OFNHookProcOldStyle, OPENFILENAME