Delen via


Algemene dialoogvensters aanpassen

U kunt de algemene dialoogvensters gebruiken in hun standaardformulier of u kunt ze aanpassen. Vanuit het perspectief van de gebruiker is het belangrijkste voordeel van het algemene dialoogvenster het consistente uiterlijk en de functionaliteit van toepassing tot toepassing. Daarom is het belangrijk dat u een algemeen dialoogvenster alleen aanpast wanneer het absoluut noodzakelijk is voor een toepassing. Anders gaan de consistente vormgeving en de eenvoudige coderingsinterface verloren. De juiste aanpassingen laten zoveel mogelijk van de oorspronkelijke besturingselementen intact. Het vergroten van de grootte van het dialoogvenster of het toevoegen van nieuwe besturingselementen in de ruimte die al beschikbaar is in het dialoogvenster, is een geschikte aanpassing. Het verbergen van oorspronkelijke besturingselementen of het anderszins wijzigen van de beoogde functionaliteit van de oorspronkelijke besturingselementen is een minder geschikte aanpassing.

In deze sectie worden de volgende methoden besproken voor het aanpassen van een algemeen dialoogvenster:

Aangepaste sjablonen

Algemene dialoogvensters bevatten standaardsjablonen waarmee het aantal, het type en de positie van de standaardbesturingselementen in het dialoogvenster worden gedefinieerd. U kunt een aangepaste sjabloon definiƫren om gebruikers toegang te geven tot aanvullende besturingselementen die uniek zijn voor uw toepassing.

Voor alle algemene dialoogvensters, met uitzondering van de verkennerstijl openen en dialoogvensters Opslaan als, wijzigt u de standaardsjabloon om een aangepaste sjabloon te maken die de standaardsjabloon vervangt. De aangepaste sjabloon definieert het type en de positie van de standaardbesturingselementen en eventuele aanvullende besturingselementen.

Wanneer u een aangepaste dialoogvenstersjabloon maakt door de standaarddialoogvenstersjabloon te wijzigen, moet u ervoor zorgen dat de id's voor toegevoegde besturingselementen uniek zijn en niet conflicteren met de id's van de standaardbesturingselementen. De volgende tabel bevat de naam van het standaardsjabloonbestand en het include-bestand voor elk van de algemene dialoogvenstertypen.

Dialoogvenstertype Sjabloonbestand Bestand opnemen
Kleur Color.dlg ColorDlg.h
zoeken Findtext.dlg Dlgs.h
lettertype Font.dlg Dlgs.h
Openen (meerdere selecties) Fileopen.dlg Dlgs.h
Openen (enkele selectie) Fileopen.dlg Dlgs.h
Pagina-instelling Prnsetup.dlg Dlgs.h
afdrukken Prnsetup.dlg Dlgs.h
afdrukinstellingen (verouderd) Prnsetup.dlg Dlgs.h
vervangen Findtext.dlg Dlgs.h

Als u een aangepaste sjabloon wilt inschakelen, moet u een vlag instellen in de Vlaggen lid van de bijbehorende structuur voor het dialoogvenster. Als de template een resource is in een toepassings- of dynamische-koppelingsbibliotheek, stelt u een ENABLETEMPLATE vlags in het lid Flags in, en gebruikt u de leden hInstance en lpTemplateName van de structuur om de module en resourcenaam te identificeren. Als de sjabloon zich al in het geheugen bevindt, stelt u een ENABLETEMPLATEHANDLE- vlag in het lid Vlaggen en gebruikt u het hInstance- lid om het geheugenobject te identificeren dat de sjabloon bevat.

In de meeste gevallen moet u ook een hookprocedure inschakelen voor het dialoogvenster om invoer voor de aanvullende besturingselementen in uw aangepaste sjabloon te ondersteunen en te verwerken.

Voor de verkenner-stijl openen en dialoogvensters Opslaan als zijn de standaardsjablonen niet beschikbaar voor wijziging. In plaats daarvan definieert uw aangepaste sjabloon een onderliggend dialoogvenster met alleen de items die moeten worden toegevoegd aan het standaarddialoogvenster. De aangepaste sjabloon kan ook een statisch besturingselement definiƫren waarmee de locatie van het cluster van standaardbesturingselementen in het subdialoogvenster wordt opgegeven. Zie Explorer-Style Aangepaste sjablonenvoor meer informatie.

Hook-procedures voor standaard dialoogvensters

Voor elk van de algemene dialoogvensters kunt u een hookprocedure inschakelen voor het verwerken van berichten uit de standaarddialoogvensterprocedure. Er zijn twee algemene soorten dialoogvensterhookprocedures:

  • De standaardhaakprocedure die wordt gebruikt met de meest voorkomende dialoogvensters
  • De Explorer-stijl haakprocedure die wordt ondersteund door de dialoogvensters Openen en Opslaan als

Wanneer u een standaardhookprocedure opgeeft voor een van de algemene dialoogvensters, verwerkt de standaarddialoogvensterprocedure de berichten als volgt.

Bericht Afhandeling
WM_INITDIALOG De standaarddialoogvensterprocedure verwerkt het bericht voordat het wordt doorgegeven aan de hookprocedure. De parameter lParam van het bericht is een aanwijzer naar de initialisatiestructuur die is opgegeven toen het dialoogvenster werd gemaakt.
Alle andere berichten De hookprocedure ontvangt het bericht als eerste. Vervolgens bepaalt de retourwaarde van de hookprocedure of de standaarddialoogvensterprocedure het bericht verwerkt of negeert.

Voor de verkenner-stijl Open en dialoogvensters Opslaan als, ontvangt de hookprocedure geen berichten die zijn bedoeld voor de standaardbesturingselementen in het dialoogvenster. In plaats daarvan ontvangt het meldingsberichten uit het dialoogvenster en berichten voor eventuele aanvullende besturingselementen die u hebt gedefinieerd in een aangepaste sjabloon. Zie Explorer-Style Hook Proceduresvoor meer informatie.

Als u een haakprocedure wilt inschakelen, stelt u een ENABLEHOOK--waarde in in de Vlaggen lid van de bijbehorende structuur voor het dialoogvenster. Als een ENABLEHOOK- vlag is ingesteld, moet het lid lpfnHook van de structuur het adres van de haakprocedure specificeren.

In de volgende tabel ziet u het type haakprocedure dat moet worden opgegeven voor elk van de algemene dialoogvensters.

Dialoogvenstertype Haakprocedure
Kleur CCHookProc
Zoeken of Vervangen FRHookProc
lettertype CFHookProc
Openen of Opslaan als (verkennerstijl) OFNHookProc
Openen of Opslaan als (oude stijl) OFNHookProcOldStyle
Afdrukken PrintHookProc
Pagina-instelling PageSetupHook

Voor het dialoogvenster Pagina-instelling kunt u ook een hookprocedure PagePaintHook opgeven. Dit is een speciale hookprocedure die u kunt gebruiken om het uiterlijk van de voorbeeldpagina aan te passen die wordt weergegeven in het dialoogvenster Pagina-instelling.

Notitie

Het dialoogvenster Afdrukinstellingen is vervangen door het dialoogvenster Pagina-instelling. Toepassingen moeten het dialoogvenster Pagina-instelling gebruiken. Voor compatibiliteit blijft de functie PrintDlg- echter de weergave van het dialoogvenster Printerinstellingen ondersteunen. U kunt een SetupHookProc haakprocedure opgeven voor het dialoogvenster Afdrukken Instellen.

Algemene dialoogberichten

In veelgebruikte dialoogvensters worden berichten gebruikt om uw vensterprocedure of haakprocedure op de hoogte te stellen wanneer bepaalde gebeurtenissen optreden. Daarnaast zijn er berichten die u naar een algemeen dialoogvenster kunt verzenden om informatie op te halen of om het gedrag of uiterlijk van het dialoogvenster te bepalen. In deze sectie worden de gemeenschappelijke dialoogberichten beschreven die zijn geregistreerd door de functie RegisterWindowMessage, de berichten die worden gebruikt door het dialoogvenster Lettertype, het dialoogvenster Pagina-instelling, en de berichten die worden gebruikt door de verkennerstijl Openen en Opslaan als dialoogvensters.

In de algemene dialoogvensterbibliotheek wordt een set berichtreeksen gedefinieerd. U kunt een constante die is gekoppeld aan een van deze berichtreeksen doorgeven aan RegisterWindowMessage- om een bericht-id op te halen. Vervolgens kunt u de id gebruiken om berichten te detecteren en verwerken die vanuit een gemeenschappelijk dialoogvenster worden verzonden of om berichten naar een algemeen dialoogvenster te verzenden. In de volgende tabel ziet u de berichtconstanten en wordt het gebruik ervan beschreven.

Contanten Gebruiken
COLOROKSTRING Wanneer de gebruiker een kleur selecteert en op de knop OK klikt, stuurt het dialoogvenster Kleur dit bericht naar de hookprocedure. De haakprocedure kan de kleur accepteren of weigeren en het dialoogvenster dwingen open te blijven.
FILEOKSTRING Een dialoogvenster Openen of Opslaan als verzendt dit bericht naar de hookprocedure wanneer de gebruiker een bestandsnaam selecteert en op de knop OK klikt. Met de hookprocedure kan de bestandsnaam worden geaccepteerd of geweigerd en wordt afgedwongen dat het dialoogvenster geopend blijft. Voor Verkenner-stijl dialoogvensters Openen en Opslaan als, wordt dit bericht vervangen door de CDN_FILEOK meldingsboodschap.
FINDMSGSTRING Het dialoogvenster Zoeken of Vervangen stuurt dit bericht naar het vensterproces van het bovenliggende venster wanneer de gebruiker klikt op Zoeken Volgende, Vervangen, of Vervangen Alle, of het dialoogvenster sluit. De parameter lParam van het bericht is een aanwijzer naar een FINDREPLACE structuur met de invoer van de gebruiker.
HELPMSGSTRING Alle algemene dialoogvensters verzenden dit bericht naar de vensterprocedure van het bovenliggende venster wanneer de gebruiker op de knop Help- klikt. Voor verkennerstijl dialoogvensters openen en Opslaan als wordt dit bericht vervangen door het CDN_HELP meldingsbericht.
LBSELCHSTRING Een dialoogvenster Openen of Opslaan als verzendt dit bericht naar de hookprocedure wanneer de gebruiker de selectie wijzigt in de bestandsnaam keuzelijst. Voor openen en dialoogvensters Opslaan als, is dit bericht vervangen door het CDN_SELCHANGE meldingsbericht.
SETRGBSTRING Een hookprocedure kan dit bericht verzenden naar een kleurdialoogbox om de huidige kleurselectie in te stellen.
SHAREVISTRING Een dialoogvenster Openen of Opslaan als verzendt dit bericht naar de hookprocedure als er een schending van het delen optreedt voor het geselecteerde bestand wanneer de gebruiker op de knop OK klikt. Voor Explorer-stijl Openen en Opslaan Als dialoogvensters, is dit bericht vervangen door het CDN_SHAREVIOLATION notificatiebericht.

Sommige algemene dialoogvensters verzenden en ontvangen andere vensterberichten. Met de hookprocedure voor een dialoogvenster Lettertype kunt u een van de WM_CHOOSEFONT_* berichten verzenden naar het dialoogvenster Lettertype. Zie dialoogvenster Lettertypevoor meer informatie. Het dialoogvenster Pagina-instelling verzendt de WM_PSD_* berichten als u een PagePaintHook hebt ingeschakeld hookprocedure. Zie dialoogvenster Pagina-instellingvoor meer informatie.

De Explorer-stijl dialoogvensters Openen en Opslaan als ondersteunen een set vooraf gedefinieerde berichten. Dit zijn onder andere meldingsberichten die worden verzonden in de vorm van een WM_NOTIFY bericht naar uw hookprocedure en berichten die uw hookprocedure naar het dialoogvenster kan verzenden. Zie Explorer-Style Hook Proceduresvoor een volledige lijst met deze berichten.

Help-ondersteuning

Algemene dialoogvensters bieden contextgevoelige help voor de standaardbesturingselementen van het dialoogvenster. Als u aanvullende hulp wilt bieden voor een algemeen dialoogvenster, kunt u een Help--knop weergeven en berichten verwerken die worden gegenereerd wanneer de gebruiker op de knop klikt. De knop Help is een aanvulling op de standaard contextgevoelige Help. De knop Help is handig voor het beschrijven van het algemene gebruik van het dialoogvenster zoals deze van toepassing is op uw toepassing.

Help voor Context-Sensitive

Alle algemene dialoogvensters bieden contextgevoelige help voor de standaardbesturingselementen van het dialoogvenster. De gebruiker kan op een van de volgende manieren help voor afzonderlijke besturingselementen weergeven:

  • Selecteer het besturingselement en druk op F1.
  • Klikken op de knop in de titelbalk en vervolgens op een bedieningselement klikken.
  • Klik op de rechtermuisknop op een besturingselement.

Als u een dialoogvenster aanpast door nieuwe besturingselementen toe te voegen, moet u ook help-ondersteuning voor deze besturingselementen uitbreiden door aanvragen voor hulp in de hookprocedure te verwerken. De hookprocedure ontvangt de volgende berichten wanneer de gebruiker hulp vraagt.

Gebruikersactie Bericht
Klik met de rechtermuisknop op een bedieningselement. WM_CONTEXTMENU
Druk op de F1-toets. WM_HELP
Hebt u op de geklikt? knop op de titelbalk en vervolgens op een besturingselement geklikt. WM_HELP

U moet deze berichten verwerken voor de besturingselementen die u hebt toegevoegd, maar laat de standaarddialoogvensterprocedure de berichten voor de standaardbesturingselementen verwerken. Zie Help-voor meer informatie over het verwerken van deze berichten.

De Helpknop

U kunt een Help-knop weergeven in een van de algemene dialoogvensters door een SHOWHELP- waarde in te stellen in het Vlaggen lid van de initialisatiestructuur voor het dialoogvenster. Als u de knop Help- weergeeft, moet u de aanvraag van de gebruiker voor hulp verwerken. De verwerking kan worden uitgevoerd in een van de vensterprocedures van uw toepassing of in een haakprocedure voor het dialoogvenster. Normaal gesproken verwerkt u de aanvraag voor hulp door de functie WinHelp aan te roepen.

Als u Help-berichten in een van uw vensterprocedures wilt verwerken, moet u een bericht-id ophalen voor de tekenreeks die is gedefinieerd door de HELPMSGSTRING-waarde en het venster voor het ontvangen van berichten identificeren. Als u de bericht-id wilt ophalen, geeft u HELPMSGSTRING- op als parameter in een aanroep naar de functie RegisterWindowMessage. Wanneer u het dialoogvenster maakt, gebruikt u de hwndOwner als onderdeel van de initialisatiestructuur van het dialoogvenster om het venster te identificeren dat de berichten verwerkt. Met de dialoogvensterprocedure wordt het bericht naar de vensterprocedure verzonden wanneer de gebruiker op de knop Help- klikt.

Als u help-berichten in een hookprocedure wilt verwerken, moet u het WM_COMMAND bericht verwerken. De hookprocedure biedt hulp als de parameter wParam van dit bericht aangeeft dat de gebruiker op de knop Help heeft geklikt. De id van de knop Help is de pshHelp- constante die is gedefinieerd in het bestand Dlgs.h.

Haakprocedures voor de verkennerstijl openen en dialoogvensters Opslaan als ontvangen geen WM_COMMAND berichten voor de knop Help-. In plaats daarvan verzendt het dialoogvenster een CDN_HELP meldingsbericht naar de hookprocedure wanneer op de knop Help- wordt geklikt.