Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met MFC kan de gebruiker van uw toepassing aanpassen hoe deze toetsenbord- en muisinvoer verwerkt. De gebruiker kan toetsenbordinvoer aanpassen door sneltoetsen toe te wijzen aan opdrachten. De gebruiker kan de muisinvoer ook aanpassen door de opdracht te selecteren die moet worden uitgevoerd wanneer de gebruiker dubbelklikt in specifieke vensters van de toepassing. In dit onderwerp wordt uitgelegd hoe u de invoer voor uw toepassing aanpast.
In het dialoogvenster Aanpassing kan de gebruiker de aangepaste besturingselementen voor de muis en het toetsenbord wijzigen. Als u dit dialoogvenster wilt weergeven, verwijst de gebruiker naar Aanpassen in het menu Beeld en klikt de gebruiker vervolgens op Werkbalken en Dockingen. In het dialoogvenster klikt de gebruiker op het tabblad Toetsenbord of het tabblad Muis .
Toetsenbordaanpassingen
In de volgende afbeelding ziet u het tabblad Toetsenbord van het dialoogvenster Aanpassing .
Tabblad Toetsenbord Aanpassing
De gebruiker communiceert met het toetsenbordtabblad om een of meer sneltoetsen toe te wijzen aan een opdracht. De beschikbare opdrachten worden aan de linkerkant van het tabblad weergegeven. De gebruiker kan elke beschikbare opdracht selecteren in het menu. Alleen menuopdrachten kunnen worden gekoppeld aan een sneltoets. Nadat de gebruiker een nieuwe snelkoppeling heeft ingevoerd, is de knop Toewijzen beschikbaar. Wanneer de gebruiker op deze knop klikt, koppelt de toepassing de geselecteerde opdracht aan die snelkoppeling.
Alle momenteel toegewezen sneltoetsen worden weergegeven in de keuzelijst in de rechterkolom. De gebruiker kan ook afzonderlijke snelkoppelingen selecteren en verwijderen, of alle toewijzingen voor de toepassing opnieuw instellen.
Als u deze aanpassing in uw toepassing wilt ondersteunen, moet u een CKeyboardManager-object maken. Als u een CKeyboardManager object wilt maken, roept u de functie CWinAppEx::InitKeyboardManager aan. Met deze methode maakt en initialiseert u een toetsenbordbeheer. Als u handmatig een toetsenbordbeheerder maakt, moet u nog steeds aanroepen CWinAppEx::InitKeyboardManager om deze te initialiseren.
Als u de wizard gebruikt om uw toepassing te maken, initialiseert de wizard het toetsenbordbeheer. Nadat de toepassing de toetsenbordbeheerder heeft geïnitialiseerd, wordt in het framework een tabblad Toetsenbord toegevoegd aan het dialoogvenster Aanpassing .
Aanpassing van de muis
In de volgende afbeelding ziet u het tabblad Muis van het dialoogvenster Aanpassing .
Tabblad Aanpassen van muis
De gebruiker communiceert met dit tabblad om een menuopdracht toe te wijzen aan de actie met de muis dubbelklikken. De gebruiker selecteert een weergave aan de linkerkant van het venster en gebruikt vervolgens de besturingselementen aan de rechterkant om een opdracht te koppelen aan de dubbelklikactie. Nadat de gebruiker op Sluiten heeft geklikt, wordt de bijbehorende opdracht uitgevoerd wanneer de gebruiker ergens in de weergave dubbelklikt.
Standaard is het aanpassen van de muis niet ingeschakeld wanneer u een toepassing maakt met behulp van de wizard.
Om muisaanpassing in te schakelen
Initialiseer een CMouseManager-object door CWinAppEx::InitMouseManager aan te roepen.
Verkrijg een wijzer naar de muismanager met behulp van CWinAppEx::GetMouseManager.
Voeg weergaven toe aan de muisbeheerder met behulp van de methode CMouseManager::AddView . Doe dit voor elke weergave die u wilt toevoegen aan de muisbeheerder.
Nadat de toepassing de muisbeheerder heeft geïnitialiseerd, wordt het tabblad Muis toegevoegd aan het dialoogvenster Aanpassen . Als u geen weergaven toevoegt, veroorzaakt het openen van het tabblad een onverwerkte uitzondering. Nadat u een lijst met weergaven hebt gemaakt, is het tabblad Muis beschikbaar voor de gebruiker.
Wanneer u een nieuwe weergave aan de muisbeheerder toevoegt, geeft u deze een unieke id. Als u ondersteuning wilt bieden voor het aanpassen van de muis voor een venster, moet u het WM_LBUTTONDBLCLICK bericht verwerken en de functie CWinAppEx::OnViewDoubleClick aanroepen. Wanneer u deze functie aanroept, is een van de parameters de id voor dat venster. Het is de verantwoordelijkheid van de programmeur om de id-nummers en de bijbehorende objecten bij te houden.
Beveiligingsproblemen
Zoals beschreven in door de gebruiker gedefinieerde hulpprogramma's, kan de gebruiker een door de gebruiker gedefinieerde hulpprogramma-id koppelen aan de gebeurtenis met dubbelklikken. Wanneer de gebruiker dubbelklikt op een weergave, zoekt de toepassing naar een gebruikershulpprogramma dat overeenkomt met de bijbehorende id. Als de toepassing een overeenkomend hulpprogramma vindt, wordt het hulpprogramma uitgevoerd. Als de toepassing geen overeenkomend hulpprogramma kan vinden, wordt er een WM_COMMAND bericht met de ID verzonden naar de weergave waarop dubbelgeklikt is.
De aangepaste instellingen worden opgeslagen in het register. Door het register te bewerken, kan een aanvaller een geldige gebruikershulpprogramma-id vervangen door een willekeurige opdracht. Wanneer de gebruiker dubbelklikt op een weergave, verwerkt de weergave de opdracht die de aanvaller heeft geplant. Dit kan onverwacht en mogelijk gevaarlijk gedrag veroorzaken.
Bovendien kan dit soort aanvallen de beveiliging van de gebruikersinterface overslaan. Stel dat afdrukken is uitgeschakeld voor een toepassing. In de gebruikersinterface zijn het menu Afdrukken en de knop Afdrukken niet beschikbaar. Normaal gesproken voorkomt dit dat de toepassing kan printen. Maar als een aanvaller het register heeft bewerkt, kan een gebruiker de afdrukopdracht nu rechtstreeks verzenden door te dubbelklikken op de weergave, waardoor de gebruikersinterface-elementen die niet beschikbaar zijn, worden overgeslagen.
Als u dit soort aanvallen wilt voorkomen, voegt u code toe aan uw toepassingsopdrachthandler om te controleren of een opdracht geldig is voordat deze wordt uitgevoerd. Niet afhankelijk van de gebruikersinterface om te voorkomen dat een opdracht naar de toepassing wordt verzonden.
Zie ook
Aanpassing voor MFC
CKeyboardManager-klasse
CMouseManager-klasse
Gevolgen voor beveiliging van aanpassing