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

  1. //    To use this style of Visio-driving with an MFC app,
  2. //
  3. //        <1> make sure OLE Automation has been enabled in your app
  4. //                (there's a check box for this at app wizard
  5. //                 project creation time)
  6. //
  7. //        <2> add this file to your MFC project
  8. //
  9. //        <3> add "visimfc.cpp" to your MFC project
  10. //
  11. //        <4> step on the gas!
  12. //
  13. //        ...oh yeah, and don't forget to call the function DoVisioAutomationSample
  14. //        from InitInstance or in response to a menu choice...
  15. //
  16.  
  17. #include "stdafx.h"
  18.  
  19. #include "visimfc.h"
  20.  
  21. int DoVisioAutomationSample(void);
  22.  
  23. int DoVisioAutomationSample(void)
  24. {
  25.     CLSID visio_clsid=
  26.     { 0x00021a20, 0x0000, 0x0000, { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 } };
  27.  
  28.     IUnknown *pUnk= NULL;
  29.     Application app;
  30.     Documents docs;
  31.     Document doc;
  32.     Pages pages;
  33.     Page page;
  34.     Shape shape;
  35.  
  36.  
  37.     GetActiveObject(visio_clsid, NULL, &pUnk);
  38.  
  39.     IDispatch *pDisp= NULL;
  40.     if (pUnk!=NULL)
  41.         pUnk->QueryInterface(IID_IDispatch, (LPVOID *) &pDisp);
  42.  
  43.     if (pDisp==NULL)
  44.         app.CreateDispatch(visio_clsid);
  45.     else
  46.         app.AttachDispatch(pDisp);
  47.  
  48.     docs.AttachDispatch(app.GetDocuments());
  49.     doc.AttachDispatch(docs.Add(""));
  50.     pages.AttachDispatch(doc.GetPages());
  51.     page.AttachDispatch(pages.GetItem(COleVariant(1L)));
  52.     shape.AttachDispatch(page.DrawRectangle(1.0, 2.0, 3.0, 4.0));
  53.  
  54.     return 0;
  55. }
  56.