Bonjour,
débutant en programmation de composants ActiveX, je souhaite réaliser un contrôle destiné a être embarqué dans une application réalisée avec VB6. Ce contrôle a pour fonction de stocker une librarie d'images, utilisés par d'autres contrôles pour se dessiner.
Lorsque je suis en mode design, je souhaite rajouter des images dans ce contrôle (que je nomme RQPuzzleList). Pour me faciliter la tâche, j'ai créé une page qui me permet d'aller chercher des images sur le HD, dont voici une capture, prise depuis le TestContainer de Visual C++.
Cette page résulte de l'implémentation de la classe dérivée de COlePropertyPage que m'a généré le MFC ActiveX Wizard dans mon projet.
A son niveau, je gère donc une liste de structures de type "RQPicture" :
C'est ici que ça se corse. J'aimerais transférer cette liste d'images au niveau de mon contrôle RQPuzzleList (qui lui même posséderait une liste RQPictureList), de sorte que celui-ci puisse les gérer et les sauver en tant que données persistentes (sérialisation). Ainsi à son rechargement, il les aurait à sa disposition et il serait possible de les éditer / modifier via cette page.
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 // Item class RQPicture : public CObject // dérive de CObject pour utiliser Serialize { ... CString m_name; LPPICTURE mp_picture; // chargée via OleLoadPicture ... }; // Gère une liste d'instances de RQPicture class RQPictureList { };
D'après mes recherches sur ce forum et ailleurs, il semble que la page COlePropertyPage "dialogue" avec le contrôle ocx à travers la fonction DoDataExchange. J'ai bien réussi à récupérer/envoyer des données de types simples (BOOL, String, etc...) grace aux fonctions DDX_, DDP_ mais impossible de trouver quoi que ce soit pour des types custom.
Mes questions sont les suivantes :
1) Est-il possible d'échanger des données de type plus complexe (ici de type RQPictureList) entre un contrôle et sa page de propriétés?
2) Comment peut-on sérialiser une image pour la sauvegarder en données persistentes du contrôle?
3) Y'a-t-il une solution plus simple/évidente pour réaliser un tel composant ?
Merci pour votre aide !
Partager