Partilhar via


Personalização de teclado e mouse

MFC permite que o utilizador da sua aplicação personalize a forma como lida com a entrada de teclado e rato. O usuário pode personalizar a entrada do teclado atribuindo atalhos de teclado aos comandos. O usuário também pode personalizar a entrada do mouse, selecionando o comando que deve ser executado quando o usuário clica duas vezes dentro de janelas específicas do aplicativo. Este tópico explica como personalizar a entrada para seu aplicativo.

Na caixa de diálogo Personalização , o usuário pode alterar os controles personalizados do mouse e do teclado. Para exibir essa caixa de diálogo, o usuário aponta para Personalizar no menu Exibir e clica em Barras de Ferramentas e Docking. Na caixa de diálogo, o usuário clica na guia Teclado ou na guia Mouse .

Personalização do teclado

A ilustração a seguir mostra a guia Teclado da caixa de diálogo Personalização .

Guia Teclado na caixa de diálogo Personalizar.
Aba Personalização do teclado

O usuário interage com a guia do teclado para atribuir um ou mais atalhos de teclado a um comando. Os comandos disponíveis estão listados no lado esquerdo da guia. O usuário pode selecionar qualquer comando disponível no menu. Apenas os comandos de menu podem ser associados a um atalho de teclado. Depois que o usuário insere um novo atalho, o botão Atribuir fica habilitado. Quando o usuário clica nesse botão, o aplicativo associa o comando selecionado a esse atalho.

Todos os atalhos de teclado atribuídos atualmente estão listados na caixa de listagem na coluna da direita. O usuário também pode selecionar atalhos individuais e removê-los, ou redefinir todos os mapeamentos para o aplicativo.

Se você quiser dar suporte a essa personalização em seu aplicativo, você deve criar um objeto CKeyboardManager . Para criar um CKeyboardManager objeto, chame a função CWinAppEx::InitKeyboardManager. Este método cria e inicializa um gerenciador de teclado. Se você criar um gerenciador de teclado manualmente, ainda deverá ligar CWinAppEx::InitKeyboardManager para inicializá-lo.

Se você usar o Assistente para criar seu aplicativo, o Assistente inicializará o gerenciador de teclado. Depois que seu aplicativo inicializa o gerenciador de teclado, a estrutura adiciona uma guia Teclado à caixa de diálogo Personalização .

Personalização do mouse

Ilustração a seguir mostra a guia Mouse da caixa de diálogo Personalização.

Guia do mouse na caixa de diálogo Personalizar.
Aba de Personalização do Rato

O usuário interage com essa guia para atribuir um comando de menu à ação de clique duplo do mouse. O usuário seleciona uma exibição do lado esquerdo da janela e, em seguida, usa os controles no lado direito para associar um comando à ação de clique duplo. Depois que o usuário clica em Fechar, o aplicativo executa o comando associado sempre que o usuário clica duas vezes em qualquer lugar na exibição.

Por padrão, a personalização do mouse não é habilitada quando você cria um aplicativo usando o Assistente.

Para habilitar a personalização do mouse

  1. Inicialize um objeto CMouseManager chamando CWinAppEx::InitMouseManager.

  2. Obtenha um ponteiro para o gerenciador de mouse usando CWinAppEx::GetMouseManager.

  3. Adicione exibições ao gerenciador de mouse usando o método CMouseManager::AddView . Faça isso para cada visualização que você deseja adicionar ao gerenciador de mouse.

Depois que seu aplicativo inicializa o gerenciador de mouse, a estrutura adiciona a guia Mouse à caixa de diálogo Personalizar . Se você não adicionar nenhum modo de exibição, acessar a guia causará uma exceção sem tratamento. Depois de criar uma lista de vistas, o separador Rato fica disponível para o utilizador.

Quando adiciona uma nova vista ao gestor de ratos, dá-lhe um ID exclusivo. Se você quiser oferecer suporte à personalização do mouse para uma janela, deverá processar a mensagem de WM_LBUTTONDBLCLICK e chamar a função CWinAppEx::OnViewDoubleClick . Quando você chama essa função, um dos parâmetros é o ID dessa janela. É da responsabilidade do programador manter o registo dos números de identificação e dos objetos associados aos mesmos.

Preocupações de segurança

Conforme descrito em Ferramentas definidas pelo usuário, o usuário pode associar um ID de ferramenta definido pelo usuário ao evento de clique duplo. Quando o usuário clica duas vezes em uma exibição, o aplicativo procura uma ferramenta de usuário que corresponda à ID associada. Se o aplicativo encontrar uma ferramenta correspondente, ele executará a ferramenta. Se o aplicativo não conseguir encontrar uma ferramenta correspondente, ele enviará uma mensagem WM_COMMAND com o ID para a exibição que foi clicada duas vezes.

As configurações personalizadas são armazenadas no registro. Ao editar o registo, um intruso pode substituir um ID de ferramenta de utilizador válido por um comando arbitrário. Quando o utilizador clica duas vezes numa vista, a vista processa o comando que o atacante plantou. Isso pode causar um comportamento inesperado e potencialmente perigoso.

Além disso, esse tipo de ataque pode ignorar as salvaguardas da interface do usuário. Por exemplo, suponha que um aplicativo tenha a impressão desabilitada. Ou seja, em sua interface de usuário, o menu e o botão Imprimir não estão disponíveis. Normalmente, isso impede que o aplicativo seja impresso. Mas se um invasor editasse o registro, um usuário poderia enviar o comando de impressão diretamente clicando duas vezes na exibição, ignorando os elementos da interface do usuário que não estão disponíveis.

Para se proteger contra esse tipo de ataque, adicione código ao manipulador de comandos do aplicativo para verificar se um comando é válido antes de ser executado. Não dependa da interface do usuário para impedir que um comando seja enviado para o aplicativo.

Ver também

Personalização para MFC
CKeyboardManager Classe
CMouseManager Classe
Implicações de segurança da personalização