home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 January / pcwk_01_1999.iso / Wtestowe / Vistdstd / Install / Data.Z / Sample_N.CPP < prev    next >
C/C++ Source or Header  |  1996-10-18  |  2KB  |  105 lines

  1. //    To use this style of Visio-driving,
  2. //
  3. //        <1> make a new plain old Windows app with the wizard
  4. //
  5. //        <2> add this file to the project
  6. //
  7. //        <3> add the file vao_src\helpers.cpp to the project
  8. //
  9. //        <4> set vao_inc as part of the project include paths
  10. //
  11. //        <5> compile it and run it...
  12. //
  13.  
  14. //    Be sure to include <initguid.h> in *exactly one* source file in your project
  15. //    before including visio.h. Grep on INITGUID in your system
  16. //    include directories for more info.
  17.  
  18. #include <windows.h>
  19. #include <ole2.h>
  20. #include <initguid.h>
  21.  
  22. #include "visicpp.h"
  23.  
  24. /**************************************************************************
  25.  *+ Prototypes
  26.  */
  27.  
  28. int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow);
  29. IVApplication *GetVisioAppDual(void);
  30. int DoVisioAutomationSample(void);
  31.  
  32. /**************************************************************************
  33.  *+ WinMain
  34.  */
  35.  
  36. int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
  37. {
  38.     int nRet= 0;
  39.  
  40.     if ( FAILED(OleInitialize(NULL)) )
  41.     {
  42.         nRet= 1;
  43.         goto DONE;
  44.     }
  45.  
  46.     nRet= DoVisioAutomationSample();
  47.  
  48.     OleUninitialize();
  49.  
  50. DONE:
  51.     return nRet;
  52. }
  53.  
  54. /**************************************************************************
  55.  *+ GetVisioApp
  56.  */
  57.  
  58. IVApplication *GetVisioAppDual(void)
  59. {
  60.     HRESULT hr= NOERROR;
  61.     IUnknown *pUnk= NULL;
  62.     IVApplication *pApp= NULL;
  63.  
  64.     hr= GetActiveObject(CLSID_Application, NULL, &pUnk);
  65.  
  66.     if (pUnk!=NULL)
  67.     {
  68.         pUnk->QueryInterface(IID_IVApplication, (LPVOID *) &pApp);
  69.     }
  70.     else
  71.     {
  72.         hr= CoCreateInstance
  73.             (    
  74.                 CLSID_Application,
  75.                 NULL,
  76.                 CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER,
  77.                 IID_IVApplication,
  78.                 (LPVOID *) &pApp
  79.             );
  80.     }
  81.  
  82.     return pApp;
  83. }
  84.  
  85. /**************************************************************************
  86.  *+ DoVisioAutomationSample
  87.  */
  88.  
  89. int DoVisioAutomationSample(void)
  90. {
  91.     int nRet= 2;
  92.  
  93.     CVisioApplication cvApp(GetVisioAppDual());
  94.  
  95.     if (cvApp.IsSet())
  96.     {
  97.         CVisioShape cvShape= cvApp.Documents().Add( VBstr("") ).Pages().Item( VVariant(1L) ).DrawRectangle(1.0, 2.0, 3.0, 4.0);
  98.  
  99.         if (cvShape.IsSet())
  100.             nRet= 0;    //    Success!
  101.     }
  102.  
  103.     return nRet;
  104. }
  105.