Bonjour,
J'ai défini une classe abstraite de dialogue permettant de générer facilement des boites de dialogues types.
Elle est donc dérivée de CDialog et sert de classe de base aux différentes classes de dialogues générées.
En simplifiant, ça donne ça au niveau des déclarations:
Comme l'indique le titre, le problème se situe au niveau de la fonction virtuelle CDialogPropBase::OnInitDialog() qui n'est bizarrement pas appelée par AfxDlgProc (l'appel tombe directement dans CDialog::OnInitDialog()) ;
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 class CDialogPropBase : public CDialog DECLARE_DYNAMIC(CDialogPropBase ) public: virtual ~CDialogPropBase (); protected: CDialogPropBase (UINT nIDTemplate, CWnd* pParent = NULL); virtual void DoDataExchange(CDataExchange* pDX); virtual BOOL OnInitDialog(); DECLARE_MESSAGE_MAP() }; //---------------------- class CDlgPropGeneral : public CDialogPropBase { DECLARE_DYNAMIC(CDlgPropGeneral) public: CDlgPropGeneral(CWnd* pParent = NULL); virtual ~CDlgPropGeneral(); enum { IDD = IDD_PROP_GENERAL }; protected: virtual void DoDataExchange(CDataExchange* pDX); DECLARE_MESSAGE_MAP() };
par contre si je la définis dans la classe dérivée (CDlgPropGeneral), elle est bien appelée; donc à priori la table virtuelle est ok.
C'est bien possible qu'il y ait un truc idiot auquel je n'ai pas pensé, mais là je ne vois pas...
Merci de vos lumières.
Partager