| auteur : Farscape | Il faut d'abord vérifier que l'ActiveX est bien enregistré dans le système en exécutant le programme ActiveX control test container disponible par le menu Tools.
Exécuter ensuite l'option register controls du menu file.
Une boîte de dialogue apparaît avec la liste des contrôles enregistrés avec le chemin d'implantation du composant.
Pour insérer un ActiveX sur le projet en cours procéder comme suit :
Sur le menu Project puis add to project puis components and controls.
Dans la boîte de dialogue visualiser par un double clic le contenu du répertoire : Registered ActiveX Controls.
Sélectionner un ActiveX puis cliquer sur le bouton Insert.
VC générera les wrappers de classe sur les différentes interfaces de l'ActiveX.
L'icône de l'ActiveX sera disponible dans la palette de contrôles dans les ressources.
|
| auteur : Farscape | Les types d'arguments supportés sur une méthode sont des types simples standards :
int, long,double ,LPCTSTR etc?
Dans ce contexte comment faire pour passer en argument un pointeur sur une structure ?
Il suffit d'utiliser le type LPUNKNOWN l'équivalent d'un pointeur void pour les ActiveX .
Exemple d'implémentation sur deux méthodes permettant de passer en argument un pointeur sur une structure LOGFONT
void CMyCtrl:: GetLogFont (LPUNKNOWN plogFont)
{
LOGFONT lg;
if (m_pFont)
{
m_pFont- > GetLogFont (& lg);
memmove ((LOGFONT * )plogFont,& lg,sizeof (lg));
return ;
}
CFontHolder * pHolder= & InternalGetFont ();
if (pHolder)
{
CFont * pFont = CFont:: FromHandle (pHolder- > GetFontHandle ());
if (pFont)
{
pFont- > GetLogFont (& lg);
memmove ((LOGFONT * )plogFont,& lg,sizeof (lg));
}
}
}
void CMyCtrl:: SetLogFont (LPUNKNOWN pLogFont)
{
if (m_hWnd! = NULL )
{
if (m_pFont) delete m_pFont;
m_pFont = new CFont;
m_pFont- > CreateFontIndirect ((LOGFONT * )pLogFont);
InvalidateControl ();
}
}
|
|
| auteur : Farscape | Le principe :
Générer avec AppWizard un Activex simple.
Créer une boite de dialogue dans les ressources.
Sur le OnCreate du contrôle créer l'objet boîte de dialogue exemple :
int CMyDialogCtrl:: OnCreate (LPCREATESTRUCT lpCreateStruct)
{
if (COleControl:: OnCreate (lpCreateStruct) = = - 1 )
return - 1 ;
m_MyDialog.Create (IDD_MYDIALOG, this );
return 0 ;
}
|
et sur la fonction OnDraw réajuster la taille en fonction de la surface client:
void CMyDialogCtrl:: OnDraw (CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
if (m_MyDialog.m_hWnd)
m_MyDialog.MoveWindow (rcBounds, TRUE);
}
|
La fonction OnCreate est obtenue en interceptant le message WM_CREATE avec l'aide de ClassWizard.
Options de la boîte de dialogue:
- style : child
- border: dialog frame
- Cocher les options :visible et static edge
|
Consultez les autres F.A.Q.
|
|
Les sources présentées sur cette page sont libres de droits
et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation
constitue une œuvre intellectuelle protégée par les droits d'auteur.
Copyright © 2004 Developpez Developpez LLC.
Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne
peut être faite de ce site ni de l'ensemble de son contenu : textes, documents
et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez
selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.