Je voudrais utiliser les nouvelles fonctionnalités CMFCListCtrl avec ma classe CListView (et, bien sûr, le nouveau CMFCHeaderCtrl à l'intérieur). Malheureusement, vous ne pouvez pas utiliser Attach() ou SubclassWindow() car la fenêtre SysListView32 est déjà associée à un objet CListView. Dois-je redéfinir OnCmdMsg() de CListView et acheminer tous les messages vers ma propre instance de CMFCListCtrl? (Cela fonctionnera-t-il même?) Ou y a-t-il une solution plus facile/plus propre?Comment utiliser CMFCListCtrl avec CListView?
Répondre
Je hérité de CFormView et laissez-le CMFCListCtrl occupent la boîte de dialogue complète de la vue du formulaire.
Il y a un petit peu plus d'incrustation dans la boîte de dialogue de formulaire et la gestion des changements de taille pour garder la liste occupant toute la boîte de dialogue. Il pourrait être aussi bon de sous-classer CView et de créer CMyListCtrl dans OnCreate(). Je vais devoir voir à quel point je peux rééquiper ça avant d'accepter la réponse. Merci! – skst
Bonne chance, s'il vous plaît laissez-moi savoir si cela a fonctionné pour vous. – fhe
Comme je n'avais besoin que d'un seul contrôle, j'ai dérivé de CView au lieu de CFormView, mais c'est le même principe. – skst
CListView n'a pas beaucoup de fonctionnalités. Comme vous l'avez dit dans le commentaire ci-dessus, dérivez simplement votre propre classe d'affichage à partir de CView, gérez WM_SIZE pour redimensionner CMFCListCtrl et vous êtes prêt à partir.
Si vous voulez que votre propre CMFCHeaderCtrl (fe m_myHeaderCtrl dérivé de CMFCHeaderCtrl) vous devez remplacer ces trois fonctions dans votre propre CMFCListCtrl
CMFCHeaderCtrl& CMyMFCListCtrl::GetHeaderCtrl()
{
return m_myHeaderCtrl;
}
void CMyMFCListCtrl::InitHeader()
{
// Initialize header control:
m_myHeaderCtrl.SubclassDlgItem(0, this);
}
void CMyMFCListCtrl::OnSize(UINT nType, int cx, int cy)
{
CListCtrl::OnSize(nType, cx, cy);
if (myHeaderCtrl.GetSafeHwnd() != NULL)
{
myHeaderCtrl.RedrawWindow();
}
}
Maintenant, vous avez le plein responce dans votre propre myHeaderCtrl définir des fonctions plus (fe lignes multipe en-tête):
OnDrawItem(CDC* pDC, int iItem, CRect rect, BOOL bIsPressed, BOOL bIsHighlighted);
ou définir votre propre mise en page par
afx_msg LRESULT OnHeaderLayout(WPARAM wp, LPARAM lp);
Les exemples sont dans le code MFC.
- 1. CFormView et CListView sur splitterwindow
- 2. Comment utiliser libproxy avec proxy.pac?
- 3. Comment utiliser PIL avec Tkinter?
- 4. Comment utiliser cvxopt avec DSDP?
- 5. Comment utiliser Prolog avec PHP?
- 6. Comment utiliser PostSharp avec MOQ?
- 7. Comment utiliser libtidy avec tidyParseBuffer()?
- 8. Comment utiliser Django avec GWT?
- 9. Comment utiliser scanf() avec fopen
- 10. Comment utiliser NUnit avec SnippetCompiler?
- 11. Comment utiliser ROWLOCK avec EJB
- 12. Comment utiliser Red5 avec Asp.net
- 13. Comment utiliser POST avec ajax?
- 14. Comment utiliser memcached avec Joomla
- 15. Comment utiliser LINQ avec ServiceModel.Channels.Message
- 16. Comment utiliser @sum avec CoreData
- 17. Comment utiliser HTTPS avec NSURLConnection?
- 18. Comment puis-je utiliser Linq avec des fichiers Dataset.xsd? Comment utiliser Linq avec des fichiers Dataset.xsd?
- 19. Comment utiliser jquery avec asp.net ajax
- 20. Comment utiliser form_remote_tag avec des validations?
- 21. Comment utiliser l'interception avec WCF et Unity
- 22. Comment utiliser SuperFetch de Vista avec Eclipse?
- 23. Comment utiliser Avec un ContourPlot dans mathematica?
- 24. Comment utiliser JBossAS 5 avec Apache Ivy?
- 25. C# Comment utiliser "||" en combinaison avec "! ="?
- 26. Comment utiliser les interfaces avec Telerik OpenAccess
- 27. Comment utiliser SetEnv avec un paramètre d'URL
- 28. Comment utiliser Java pakages avec Groovy
- 29. Comment utiliser les API win32 avec python?
- 30. Comment utiliser dojo.query avec le bouton?
La solution la plus simple consiste à dériver votre vue à partir de CView et dans OnCreate, créez votre propre contrôle. Gérez votre WM_SIZE de votre fenêtre dérivée de CView et redimensionnez votre contrôle dans la zone client. – skst