Bonjour,

Je débute avec les MFC et j'essai de comprendre comment la CMainFrame avec une architecture MDI fonctionne. J'utilise Microsoft Visual Studio 2010 et je suis parti d'une application MFC mdi sans ruban.
Pour le moment j'essai d'ajouté mon propre DockPane qui affichera quelques CStatic et CEdit. Mais je n'arrive même pas à ajouté un CEdit. Voici mon code :

ResultatView.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#pragma once
 
 
// ResultatView
 
class ResultatView : public CDockablePane
{
	DECLARE_DYNAMIC(ResultatView)
 
public:
	ResultatView();
	virtual ~ResultatView();
 
	void AdjustLayout();
	void OnChangeVisualStyle();
	virtual BOOL PreTranslateMessage(MSG* pMsg);
 
 
protected:
  CStatic text01;
	void FillClassView();
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
	afx_msg void OnClassAddMemberFunction();
	afx_msg void OnClassAddMemberVariable();
	afx_msg void OnClassDefinition();
	afx_msg void OnClassProperties();
	afx_msg void OnNewFolder();
	afx_msg void OnPaint();
	afx_msg void OnSetFocus(CWnd* pOldWnd);
	afx_msg LRESULT OnChangeActiveTab(WPARAM, LPARAM);
	afx_msg void OnSort(UINT id);
	afx_msg void OnUpdateSort(CCmdUI* pCmdUI);
 
	DECLARE_MESSAGE_MAP()
};
ResultatView.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
// ResultatView.cpp*: fichier d'implémentation
//
 
#include "stdafx.h"
#include "testMdi2.h"
#include "ResultatView.h"
 
 
// ResultatView
 
IMPLEMENT_DYNAMIC(ResultatView, CDockablePane)
 
ResultatView::ResultatView(){
}
 
ResultatView::~ResultatView(){
}
 
void ResultatView::AdjustLayout(){
	if (GetSafeHwnd() == NULL)
	{
		return;
	}
  //Ici par exemple je peux ajuster mes widget conteneur en fonction d'évennement de déplacements
}
void ResultatView::OnChangeVisualStyle(){
  //On verra plus tard. Je pense que cela concerne si l'utilisateur change le style de l'application
}
BOOL ResultatView::PreTranslateMessage(MSG* pMsg){
	return CDockablePane::PreTranslateMessage(pMsg);
}
 
 
void ResultatView::FillClassView(){
}
 
 
int ResultatView::OnCreate(LPCREATESTRUCT lpCreateStruct){
	if (CDockablePane::OnCreate(lpCreateStruct) == -1)
		return -1;
  //TODO ici j'ajoute des trucs comme des labels etc...
	CRect rectDummy(10,10,150,50);
	//rectDummy.SetRectEmpty();
  //rectDummy.right = 50;
  //rectDummy.top = 10;
	const DWORD dwViewStyle = WS_CHILD|WS_VISIBLE|SS_CENTER;
  this->text01.Create(CString(_T("label 01")), dwViewStyle, rectDummy, this);
  return 0;
}
 
void ResultatView::OnSize(UINT nType, int cx, int cy){
	CDockablePane::OnSize(nType, cx, cy);
	AdjustLayout();
}
void ResultatView::OnContextMenu(CWnd* pWnd, CPoint point){
  //Quand on clique dessus je pense
}
void ResultatView::OnClassAddMemberFunction(){
	AfxMessageBox(_T("Ajouter une fonction membre..."));
}
void ResultatView::OnClassAddMemberVariable(){
}
void ResultatView::OnClassDefinition(){
}
void ResultatView::OnClassProperties(){
}
void ResultatView::OnNewFolder(){
	AfxMessageBox(_T("Nouveau dossier..."));
}
void ResultatView::OnPaint(){
  //Pas compris
	CPaintDC dc(this); // contexte de périphérique pour la peinture
 
	CRect rectTree;
  this->text01.GetWindowRect(rectTree);
	ScreenToClient(rectTree);
 
	rectTree.InflateRect(1, 1);
	dc.Draw3dRect(rectTree, ::GetSysColor(COLOR_3DSHADOW), ::GetSysColor(COLOR_3DSHADOW));
}
void ResultatView::OnSetFocus(CWnd* pOldWnd){
	CDockablePane::OnSetFocus(pOldWnd);
  //Par exemple on peut mettre le focus sur le widget principal
}
//LRESULT ResultatView::OnChangeActiveTab(WPARAM, LPARAM){
//}
void ResultatView::OnSort(UINT id){
  //Moi j'ai rien a trier
}
void ResultatView::OnUpdateSort(CCmdUI* pCmdUI){
  //Moi j'ai rien a trier
}
 
BEGIN_MESSAGE_MAP(ResultatView, CDockablePane)
END_MESSAGE_MAP()
 
 
 
// Gestionnaires de messages de ResultatView
Je ne suis pas trop sûr de la manière dont se créé un CStatic, ainsi que de comment écrire la fonction OnPaint.

Merci d'avance