2008-10-03 9 views
0

J'ai une application Windows Mobile 5.0, écrite en C++ MFC, avec beaucoup de boîtes de dialogue. L'un des périphériques que je suis en train de cibler n'a pas de clé de tabulation, donc je voudrais utiliser une autre clé pour passer d'un contrôle à l'autre. C'est bien pour les boutons mais pas pour les contrôles d'édition ou les listes déroulantes. J'ai regardé un similar question mais la réponse ne convient pas vraiment. J'ai essayé de surcharger le CDialog :: OnKeyDown en vain, et préférerais ne pas avoir à surcharger la fonctionnalité de frappe pour chaque contrôle dans chaque boîte de dialogue. Mes pensées jusqu'à présent sont d'écrire de nouvelles classes en remplacement de CEdit et CComboBox, mais comme toujours je vérifie s'il y a un moyen plus simple, comme la reprogrammation temporaire d'une autre clé.Déplacement entre les contrôles de dialogue dans Windows Mobile sans la touche de tabulation

Répondre

1

Je ne sais pas MFC que bon, mais peut-être que vous pourriez le retirer en sous-classant les procédures de fenêtre de tous ces contrôles avec une seule classe, qui ne traiterait que les cas de touches de curseur et passer le reste des événements aux procédures d'origine.

Vous devrez prévoir votre propre mécanisme de déplacement vers un contrôle approprié, en fonction de la touche du curseur enfoncée, mais cela peut valoir la peine de gains d'utilisabilité. Si cela a fonctionné, vous pouvez énumérer tous les contrôles de dialogue et les sous-classer automatiquement. Windows Mobile 6 permet de basculer entre les contrôles de dialogue en utilisant les curseurs par défaut - c'est une nouvelle façon plus «intelligente» de se déplacer dans l'interface utilisateur et c'est incroyablement pratique. Vous ne pouvez pas utiliser le D-Pad pour naviguer entre les champs?

+0

Le sous-classement fonctionne bien, merci beaucoup pour cela. Je n'ai pas compris comment sous-classer automatiquement tous les contrôles similaires, mais ce sera une autre question. –

-1