Partilhar via


Personalização de teclado e mouse

O MFC permite que o usuário do aplicativo trata personalizar como a entrada de teclado e do mouse em. O usuário pode personalizar a entrada de teclado atribuindo atalhos de teclado comandos. O usuário também pode personalizar a entrada do mouse na seleção do comando que será executado quando o usuário clica duas vezes dentro do windows específicas do aplicativo. Este tópico explica como personalizar a entrada para seu aplicativo.

Na caixa de diálogo de Personalização , o usuário pode alterar os controles personalizadas do mouse e o teclado. Para exibir essa caixa de diálogo, o usuário a Personalizar no menu de Exibir e clique em Barras de ferramentas e encaixe. Na caixa de diálogo, na guia cliques de usuário de Teclado ou o guia de Mouse .

Personalização de teclado

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

Guia de personalização de teclado

Guia de teclado na caixa de diálogo Personalizar

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

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

Se você quiser oferecer suporte a essa personalização em seu aplicativo, você deve criar um objeto de CKeyboardManager . Para criar um objeto de CKeyboardManager , chame a função CWinAppEx::InitKeyboardManager. Este método cria e inicializa um gerenciador de teclado. Se você criar um gerenciador de teclado manualmente, você ainda deve chamar para 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 um guia de Teclado a caixa de diálogo de Personalização .

Personalização do mouse em

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

Guia de personalização do mouse em

Guia do mouse na caixa de diálogo Personalizar

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

Por padrão, a personalização do não está habilitada quando você cria um aplicativo usando o assistente.

Para habilitar a personalização do mouse em

  1. Inicializar um objeto de CMouseManager chamando CWinAppEx::InitMouseManager.

  2. Obtenha um ponteiro para o gerenciador do mouse em CWinAppEx::GetMouseManagerusando.

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

Depois que seu aplicativo inicializa o gerenciador do mouse na estrutura, adiciona o guia de Mouse a caixa de diálogo de Personalizar . Se você não adicionar qualquer exibição, acessar a guia gerará uma exceção sem-tratamento. Depois de criar uma lista de exibições, o guia de Mouse está disponível para o usuário.

Quando você adiciona uma nova exibição ao gerenciador do mouse em, você fornece uma identificação exclusivo Se você quiser aceitar personalização do mouse para uma janela, você deve processar a mensagem de WM_LBUTTONDBLCLICK e chamar a função de CWinAppEx::OnViewDoubleClick . Quando você chama esta função, um dos parâmetros é a ID dessa janela. É responsabilidade do programador rastrear os números de identificação e objetos associados.

Problemas de segurança

Conforme descrito em Ferramentas definidas pelo usuário, o usuário pode associar uma ID definida pelo usuário da ferramenta com o evento clique duas vezes em. Quando o usuário clica duas vezes em uma exibição, o aplicativo irá procurar uma ferramenta do usuário que corresponde a identificação associado Se o aplicativo ferramenta encontra uma correspondência, executar a ferramenta. Se o aplicativo não pode localizar uma ferramenta compatível, o enviará uma mensagem de WM_COMMAND com a ID para a exibição que foi clicado duas vezes em.

Configurações personalizadas são armazenadas no Registro. Editar o Registro, um invasor pode substituir um ID da ferramenta de usuário válido com um comando arbitrário. Quando o usuário clica duas vezes em uma exibição, a exibição processa o comando que o invasor plantou. Isso pode provocar comportamento inesperado e potencialmente perigoso.

Além disso, esse tipo de ataque pode ignorar proteções da interface do usuário. Por exemplo, suponha que um aplicativo tem a impressão desabilitada. Isso significa que, em sua interface de usuário, o menu de Imprimir e o botão não estão disponíveis. Normalmente isso impede o aplicativo de impressão. Mas se um invasor editar o Registro, um usuário pode agora pode 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 o código ao manipulador de comando do aplicativo para verificar se um comando é válido antes de ser executado. Não depende da interface do usuário para impedir que um comando seja enviada ao aplicativo.

Consulte também

Referência

Classe CKeyboardManager

Classe CMouseManager

Conceitos

Personalização para MFC

Implicações de segurança da personalização