2009-08-10 9 views
2

Je crée une application Windows Mobile basée sur une boîte de dialogue. La boîte de dialogue de mon conteneur principal comporte un contrôle de tabulation qui alterne entre différentes boîtes de dialogue enfant (en tant que feuilles séparées).Boîte de dialogue de défilement dans MFC sous Win CE/Windows Mobile

Comme j'ai limité l'affichage immobilier j'ai besoin de mes boîtes de dialogue pour faire défiler verticalement. Suite à un exemple en ligne, j'ai ajouté une barre de défilement verticale, ainsi que le message et le gestionnaire appropriés pour faire défiler verticalement.

La barre de défilement elle-même se comporte parfaitement, changeant de position lorsque je clique dessus ou que je la fais glisser. Mon dialogue reste cependant statique et ne défile pas.

Pour isoler le problème, j'ai modifié le gestionnaire de messages de défilement et codé en dur une commande ScrollWindow() chaque fois qu'un défilement se produit, comme ceci:

void SettingsDialog::OnVScroll(UINT nSBCode, 
    UINT nPos, CScrollBar* pScrollBar) 
{ 
    ScrollWindow(0,30,NULL,NULL); 
} 

Le code est atteint, mais toujours pas de défilement se produit dans mon dialogue. Quelqu'un peut-il nous éclairer sur ce mystère?

Soit dit en passant, j'ai trouvé un fil sur le codage Guru qui traite du même problème, mais n'a pas été résolu ici: http://www.codeguru.com/forum/showthread.php?t=54304

Répondre

3

J'ai couru à travers le même problème. Je n'utilise jamais MFC, mais la fonction Win32 pour le faire fonctionner correctement est la suivante:

  ScrollWindowEx(hDlg, 0, currentPos - si.nPos, NULL, NULL, NULL, NULL, SW_SCROLLCHILDREN | SW_INVALIDATE); 
+0

Cela a résolu mon problème. Je n'ai toujours aucune idée pourquoi l'appel ScrollWindow régulière échoue, mais à ce stade, je m'en fous ... :) Merci! – LeChuck2k

Questions connexes