IPDRIVE, exemple : illustre une application cliente Automation
Mise à jour : novembre 2007
L'exemple IPDRIVE est une application cliente Automation (précédemment OLE Automation) simple qui pilote l'exemple d'application INPROC. Il teste les fonctionnalités fournies par INPROC, serveur in-process Automation. IPDRIVE peut piloter à la fois la version in-process et la version out-of-process (serveur local) d'INPROC et démontrer ainsi la supériorité des composants in-process en termes de performances. Pour plus d'informations, consultez l'exemple INPROC.
Remarque : |
---|
Avant d'exécuter IPDRIVE, vous devez exécuter l'exemple d'application INPROC afin qu'INPROC s'inscrive dans le Registre. |
Note de sécurité : |
---|
Cet exemple de code est fourni pour illustrer un concept et ne doit pas être utilisé dans des applications ou des sites Web, car il peut ne pas illustrer les pratiques de programmation les plus sûres. Microsoft n'assume aucune responsabilité pour tout dommage indirect ou consécutif en cas d'utilisation de l'exemple de code à des fins autres que celles prévues. |
Pour obtenir des exemples et des instructions d'installation :
Dans le menu ? (Aide) de Visual Studio, cliquez sur Exemples.
Pour plus d'informations, consultez Recherche des fichiers d'exemple.
La liste la plus récente et la plus complète d'exemples est disponible en ligne à partir de la page Visual Studio 2008 Samples.
Des exemples sont également disponibles sur le disque dur de votre ordinateur. Des exemples et un fichier Readme sont copiés par défaut dans un dossier sous \Program Files\Visual Studio 9.0\Samples\. Pour les éditions Express de Visual Studio, tous les exemples sont accessibles en ligne.
Génération et exécution de l'exemple
Pour générer et exécuter l'exemple IPDRIVE
Suivez les instructions pour exécuter, générer et inscrire l'exemple INPROC.
Ouvrez la solution ipdrive.sln.
Dans le menu Générer, cliquez sur Générer.
Exécutez IPDRIVE en tant qu'application autonome pour lui permettre de s'inscrire dans le système.
Lorsque vous exécutez IPDRIVE, il charge l'exemple INPROC et crée un objet mappage de variants que vous pouvez manipuler à l'aide de l'interface d'IPDRIVE.
Un objet mappage de variants est très comparable à la collection CMap MFC. Il permet de mapper une valeur arbitraire à une autre valeur arbitraire. Chaque valeur est un VARIANT, qui se compose d'un type et d'une valeur. L'interface utilisateur IPDRIVE vous permet d'accéder à la fois au type et à la valeur. Toute paire type/valeur peut être mappée à n'importe quelle autre paire type/valeur.
IPDRIVE présente également deux boutons, Test1 et Test2, qui permettent de tester les performances de l'application serveur INPROC. Pour l'essentiel, ces fonctions testent le temps de gestion nécessaire à l'appel des fonctions pour Automation. Le temps de gestion nécessaire à l'appel des fonctions est en principe bien plus important avec les versions serveur local d'INPROC qu'avec ses versions in-process. Un serveur local s'exécute dans son propre espace d'adressage en tant qu'exécutable distinct. Il doit donc utiliser un appel de procédure à distance (RPC, Remote Call Procedure) pour accéder aux méthodes et propriétés de ses objets. En revanche, un serveur in-process se charge comme une DLL dans l'espace d'adressage du client et n'a pas besoin d'un RPC. Les boutons Test1 et Test2 s'exécutent tous deux pendant exactement cinq secondes, puis affichent le nombre d'appels. Les performances sont directement proportionnelles au nombre des appels.
INPROC contient également une collection plus simple (un tableau de chaînes), qui n'est pas utilisée par IPDRIVE.
Mots clés
Cet exemple illustre l'utilisation des mots clés suivants :
AfxMessageBox ; AfxOleInit ; AfxThrowUserException ; CArchive::IsStoring ; CComboBox::GetCurSel ; CComboBox::SetCurSel ; CControlBar::EnableDocking ; CControlBar::GetBarStyle ; CControlBar::SetBarStyle ; CDialog::DoModal ; CDocument::OnNewDocument ; CFrameWnd::DockControlBar ; CFrameWnd::EnableDocking ; CObject::AssertValid ; CObject::Dump ; CObject::Serialize ; COleDispatchDriver::GetProperty ; COleDispatchDriver::InvokeHelper ; COleDispatchDriver::SetProperty ; CScrollView::ResizeParentToFit ; CStatusBar::Create ; CStatusBar::SetIndicators ; CString::AllocSysString ; CString::Format ; CString::GetBuffer ; CString::LoadString ; CString::ReleaseBuffer ; CToolBar::Create ; CToolBar::LoadBitmap ; CToolBar::SetButtons ; CView::GetDocument ; CView::OnInitialUpdate ; CWinApp::AddDocTemplate ; CWinApp::InitInstance ; CWinApp::LoadStdProfileSettings ; CWinApp::OnFileNew ; CWnd::DoDataExchange ; CWnd::GetDlgItem ; CWnd::GetParentFrame ; CWnd::GetWindowText ; CWnd::OnCreate ; CWnd::SetDlgItemText ; CWnd::SetWindowText ; DragAcceptFiles ; GetKeyState ; GetTickCount ; max ; wsprintf
Remarque : |
---|
Certains exemples, tels que celui-ci, n'ont pas été modifiés pour refléter les changements apportés aux Assistants, aux bibliothèques et au compilateur Visual C++, mais ils illustrent bien l'exécution de la tâche souhaitée. |