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
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
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
Inicializar um objeto de CMouseManager chamando CWinAppEx::InitMouseManager.
Obtenha um ponteiro para o gerenciador do mouse em CWinAppEx::GetMouseManagerusando.
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.