2010-03-30 4 views
0

J'ai une application SDI écrite en MFC. Le cadre est divisé en 1 ligne et 2 colonnes en utilisant une fenêtre de séparation. Voici les détails de la ligne et la colonne (signifie R0C0 Row # 0 et Col # 0)Classe et focus CHtmlView

  1. vue R0C0 est un CFormView avec plusieurs contrôles d'entrée comme zone de texte, zone de liste déroulante, etc.
  2. vue R0C1 est un CHtmlView que contient du contenu HTML relatif au contrôle qui a le focus d'entrée dans le R0C0

Je peux mettre à jour le contenu HTML et également invoquer des fonctions Javascript via mon code MFC.

Problème: Lorsque l'utilisateur clique sur le R0C1, en continuant CHtmlView, le focus est maintenant sur la page html. Je souhaite autoriser l'utilisateur à sortir de R0C1 en utilisant le clavier et revenir à R0C0. Pouvez-vous m'aider s'il vous plaît? L'utilisateur peut évidemment 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é. Faites-moi savoir si la question n'est pas assez descriptive et je vais la simplifier davantage.

Appréciez votre temps.

Merci, Byte

Répondre

1

Essayez de surcharger CHtmlView :: OnTranslateAccelerator. J'ai réussi à utiliser cette astuce pour désactiver l'actualisation avec la touche F5. Dériver votre propre classe de CHtmlView et de surcharge

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) 
    { 
     // change focus 
     return S_OK; 
    } 
    return CHtmlView::OnTranslateAccelerator(lpMsg, pguidCmdGroup, nCmdID); 
} 
+0

FenchKiss Dev, Merci pour votre réponse. Je vais voir comment je peux utiliser votre méthode dans mon contexte d'application. J'utilise actuellement une méthode différente. J'ai attaché ma classe dérivée CHtmlView en tant que collecteur d'événements pour HTMLDocumentEvents2. De cette façon, je reçois un événement click, focus etc. pour chaque élément du document. Lorsque le focus atteint un élément particulier de la page, je mets l'accent sur l'autre vue. Merci – byte