2008-12-18 6 views
1

J'essaie de redimensionner dynamiquement une CMFCPropertySheet pour ajouter un contrôle personnalisé en bas de chaque page. Comme toutes les Pages de propriétés n'ont pas la même hauteur, j'ai un mécanisme pour augmenter la taille si nécessaire. Pour cela, j'ai remplacé la méthode OnActivatePage et en utilisant SetWindowPos, je peux redimensionner la feuille, d'abord, puis le contrôle onglet, puis la page et enfin je peux déplacer les boutons OK/Annuler/Aide. Cela fonctionne bien avec les styles PropSheetLook_OutlookBar et PropSheetLook_Tabs, mais pas avec le style PropSheetLook_OneNoteTabs. La page (ou l'onglet) ne sont pas correctement redimensionnée (la couleur gris clair de la page ne remplit pas la feuille.Redimensionnement dynamique de CMFCPropertySheet avec le style PropSheetLook_OneNoteTabs

OneNote de style OneNote http://www.freeimagehosting.net/uploads/th.ec91600664.jpg

type Outlook Outlook http://www.freeimagehosting.net/uploads/th.319b6938ab.jpg

Toute idée? Un MFC Feature Pack bug?

+0

À quoi ressemblent les bords supérieurs des pages? –

Répondre

0

Je trouve le problème. il faut obtenir une référence à l'autre contrôle onglet la version OneNote utilise via GetTab() et redimensionner en conséquence.

0

Il suffit de suivre les instructions comme vu dans here. Bien que les instructions soient pour CPropertySheet, elles fonctionnent également pour le CMFCPropertySheet.

Certaines parties du code étant obsolètes, vous devrez apporter les modifications suivantes.

  1. Skip the XmnPropSheetCallback et DoModal implémentations complètement
  2. En OnInitDialog simplement faire un appel à CPropertySheet::OnInitDialog(); puis appeler OnSize au lieu de faire tout présenté dans ce code.
Questions connexes