0 votes

Classe CHtmlView et focus

J'ai une application SDI écrite en MFC. Le cadre est divisé en 1 rangée et 2 colonnes en utilisant une fenêtre de séparation. Ci-dessous sont les détails de la Rangée et de la Colonne (R0C0 signifie Rangée n°0 et Colonne n°0)

  1. La vue R0C0 est un CFormView avec plusieurs contrôles d'entrée tels que des cases de texte, des listes déroulantes, etc.
  2. La vue R0C1 est un CHtmlView qui contient du contenu HTML pertinent au contrôle qui a le focus d'entrée dans le R0C0

Je suis capable de mettre à jour le contenu HTML et également d'invoquer des fonctions Javascript à travers mon code MFC.

Problème: Lorsque l'utilisateur clique sur le R0C1, contenant CHtmlView, le focus est maintenant sur la page html. Je souhaite permettre à l'utilisateur de naviguer hors de R0C1 en utilisant le clavier et de revenir à R0C0. Pouvez-vous m'aider avec cela s'il vous plaît ? L'utilisateur peut bien sûr cliquer sur la vue R0C0 en utilisant la souris mais nous avons un utilisateur qui a besoin d'utiliser le clavier pour utiliser cette fonctionnalité.

Indiquez-moi si la question n'est pas suffisamment descriptive et je la simplifierai davantage.

Je vous remercie pour votre temps.

Merci, Byte

1voto

FKDev Points 1566

Essayez de surcharger CHtmlView::OnTranslateAccelerator. J'ai utilisé avec succès ce truc pour désactiver la fonction de rafraîchissement avec la touche F5. Dérivez votre propre classe de CHtmlView et surchargez

virtual HRESULT OnTranslateAccelerator(LPMSG lpMsg, const GUID* pguidCmdGroup, DWORD nCmdID);

comme ceci:

HRESULT CMyHtmlView::OnTranslateAccelerator(LPMSG lpMsg, const GUID* pguidCmdGroup, DWORD nCmdID)
{
    if(lpMsg->message == WM_KEYDOWN && GetAsyncKeyState(VK_TAB) != 0 )
    {
        // changer le focus
        return S_OK;
    } 
    return CHtmlView::OnTranslateAccelerator( lpMsg, pguidCmdGroup, nCmdID);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X