home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 December / PCWKCD1296.iso / vjplusb / msdev / bin / ide / mfcapwz.dll / TEMPLATE / ROOT.CPP < prev    next >
C/C++ Source or Header  |  1996-07-12  |  10KB  |  360 lines

  1. // $$root$$.cpp : Defines the class behaviors for the application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "$$root$$.h"
  6.  
  7. #include "$$frame_hfile$$.h"
  8. $$IF(MDICHILD)
  9. #include "$$child_frame_hfile$$.h"
  10. $$ENDIF //MDICHILD
  11. $$IF(MINI_SERVER || FULL_SERVER || CONTAINER_SERVER)
  12. #include "$$ipframe_hfile$$.h"
  13. $$ENDIF
  14. $$IF(CRecordView || CDaoRecordView)
  15. #include "$$recset_hfile$$.h"
  16. $$ENDIF
  17. #include "$$doc_hfile$$.h"
  18. #include "$$view_hfile$$.h"
  19.  
  20. #ifdef _DEBUG
  21. #define new DEBUG_NEW
  22. #undef THIS_FILE
  23. static char THIS_FILE[] = __FILE__;
  24. #endif
  25.  
  26. /////////////////////////////////////////////////////////////////////////////
  27. // $$APP_CLASS$$
  28.  
  29. BEGIN_MESSAGE_MAP($$APP_CLASS$$, $$APP_BASE_CLASS$$)
  30.     //{{AFX_MSG_MAP($$APP_CLASS$$)
  31.     ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  32. $$IF(VERBOSE)
  33.         // NOTE - the ClassWizard will add and remove mapping macros here.
  34.         //    DO NOT EDIT what you see in these blocks of generated code!
  35. $$ENDIF
  36.     //}}AFX_MSG_MAP
  37. $$IF(!DB_NO_FILE)
  38.     // Standard file based document commands
  39.     ON_COMMAND(ID_FILE_NEW, $$APP_BASE_CLASS$$::OnFileNew)
  40.     ON_COMMAND(ID_FILE_OPEN, $$APP_BASE_CLASS$$::OnFileOpen)
  41. $$ENDIF //!DB_NO_FILE
  42. $$IF(PRINT)
  43.     // Standard print setup command
  44.     ON_COMMAND(ID_FILE_PRINT_SETUP, $$APP_BASE_CLASS$$::OnFilePrintSetup)
  45. $$ENDIF //PRINT
  46. END_MESSAGE_MAP()
  47.  
  48. /////////////////////////////////////////////////////////////////////////////
  49. // $$APP_CLASS$$ construction
  50.  
  51. $$APP_CLASS$$::$$APP_CLASS$$()
  52. {
  53. $$IF(VERBOSE)
  54.     // TODO: add construction code here,
  55.     // Place all significant initialization in InitInstance
  56. $$ENDIF
  57. }
  58.  
  59. /////////////////////////////////////////////////////////////////////////////
  60. // The one and only $$APP_CLASS$$ object
  61.  
  62. $$APP_CLASS$$ theApp;
  63. $$IF(FULL_SERVER || MINI_SERVER || CONTAINER_SERVER || AUTOMATION)
  64.  
  65. $$IF(VERBOSE)
  66. // This identifier was generated to be statistically unique for your app.
  67. // You may change it if you prefer to choose a specific identifier.
  68.  
  69. // {$$APP_CLSID_REG$$}
  70. $$ENDIF
  71. static const CLSID clsid =
  72. $$APP_CLSID$$;
  73. $$ENDIF
  74.  
  75. /////////////////////////////////////////////////////////////////////////////
  76. // $$APP_CLASS$$ initialization
  77.  
  78. BOOL $$APP_CLASS$$::InitInstance()
  79. {
  80. $$IF(SOCKETS)
  81.     if (!AfxSocketInit())
  82.     {
  83.         AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
  84.         return FALSE;
  85.     }
  86.  
  87. $$ENDIF //SOCKETS
  88. $$IF(CONTAINER || CONTAINER_SERVER || MINI_SERVER || FULL_SERVER || AUTOMATION)
  89.     // Initialize OLE libraries
  90.     if (!AfxOleInit())
  91.     {
  92.         AfxMessageBox(IDP_OLE_INIT_FAILED);
  93.         return FALSE;
  94.     }
  95.  
  96. $$ENDIF //CONTAINER || CONTAINER_SERVER || MINI_SERVER || FULL_SERVER || AUTOMATION
  97. $$IF(OLECTL)
  98.     AfxEnableControlContainer();
  99.  
  100. $$ENDIF //OLECTL
  101.     // Standard initialization
  102. $$IF(VERBOSE)
  103.     // If you are not using these features and wish to reduce the size
  104.     //  of your final executable, you should remove from the following
  105.     //  the specific initialization routines you do not need.
  106. $$ENDIF
  107. $$IF(3D)
  108.  
  109. #ifdef _AFXDLL
  110.     Enable3dControls();            // Call this when using MFC in a shared DLL
  111. #else
  112.     Enable3dControlsStatic();    // Call this when linking to MFC statically
  113. #endif
  114. $$ENDIF //3D
  115.  
  116.     LoadStdProfileSettings($$SIZE_MRU$$);  // Load standard INI file options (including MRU)
  117.  
  118. $$IF(VERBOSE)
  119.     // Register the application's document templates.  Document templates
  120.     //  serve as the connection between documents, frame windows and views.
  121. $$ELSE
  122.     // Register document templates
  123. $$ENDIF
  124. $$IF(PROJTYPE_MDI)
  125.  
  126.     CMultiDocTemplate* pDocTemplate;
  127.     pDocTemplate = new CMultiDocTemplate(
  128.         IDR_$$DOC$$TYPE,
  129. $$ELSE
  130.  
  131.     CSingleDocTemplate* pDocTemplate;
  132.     pDocTemplate = new CSingleDocTemplate(
  133.         IDR_MAINFRAME,
  134. $$ENDIF
  135.         RUNTIME_CLASS($$DOC_CLASS$$),
  136. $$IF(PROJTYPE_MDI)
  137. $$IF(MDICHILD)
  138.         RUNTIME_CLASS($$CHILD_FRAME_CLASS$$), // custom MDI child frame
  139. $$ELSE //!MDICHILD
  140.         RUNTIME_CLASS(CMDIChildWnd),          // standard MDI child frame
  141. $$ENDIF //MDICHILD
  142. $$ELSE //!MDI
  143.         RUNTIME_CLASS($$FRAME_CLASS$$),       // main SDI frame window
  144. $$ENDIF
  145.         RUNTIME_CLASS($$VIEW_CLASS$$));
  146. $$IF(CONTAINER || CONTAINER_SERVER)
  147. $$IF(PROJTYPE_MDI)
  148.     pDocTemplate->SetContainerInfo(IDR_$$DOC$$TYPE_CNTR_IP);
  149. $$ELSE
  150.     pDocTemplate->SetContainerInfo(IDR_CNTR_INPLACE);
  151. $$ENDIF
  152. $$ENDIF
  153. $$IF(MINI_SERVER || FULL_SERVER || CONTAINER_SERVER)
  154.     pDocTemplate->SetServerInfo(
  155. $$IF(PROJTYPE_MDI)
  156.         IDR_$$DOC$$TYPE_SRVR_EMB, IDR_$$DOC$$TYPE_SRVR_IP,
  157. $$ELSE
  158.         IDR_SRVR_EMBEDDED, IDR_SRVR_INPLACE,
  159. $$ENDIF
  160.         RUNTIME_CLASS($$IPFRAME_CLASS$$));
  161. $$ENDIF
  162.     AddDocTemplate(pDocTemplate);
  163. $$IF(MINI_SERVER || FULL_SERVER || CONTAINER_SERVER || AUTOMATION)
  164. $$IF(VERBOSE)
  165.  
  166.     // Connect the COleTemplateServer to the document template.
  167.     //  The COleTemplateServer creates new documents on behalf
  168.     //  of requesting OLE containers by using information
  169.     //  specified in the document template.
  170. $$ENDIF
  171. $$IF(PROJTYPE_MDI)
  172.     m_server.ConnectTemplate(clsid, pDocTemplate, FALSE);
  173.  
  174. $$IF(VERBOSE)
  175.     // Register all OLE server factories as running.  This enables the
  176.     //  OLE libraries to create objects from other applications.
  177. $$ENDIF
  178.     COleTemplateServer::RegisterAll();
  179. $$IF(VERBOSE)
  180.         // Note: MDI applications register all server objects without regard
  181.         //  to the /Embedding or /Automation on the command line.
  182. $$ENDIF
  183. $$ELSE //!MDI
  184.     m_server.ConnectTemplate(clsid, pDocTemplate, TRUE);
  185. $$IF(VERBOSE)
  186.         // Note: SDI applications register server objects only if /Embedding
  187.         //   or /Automation is present on the command line.
  188. $$ENDIF
  189. $$ENDIF
  190. $$ENDIF
  191.  
  192. $$IF(PROJTYPE_MDI)
  193.     // create main MDI Frame window
  194.     $$FRAME_CLASS$$* pMainFrame = new $$FRAME_CLASS$$;
  195.     if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
  196.         return FALSE;
  197.     m_pMainWnd = pMainFrame;
  198.  
  199. $$IF(!MINI_SERVER)
  200. $$// call DragAcceptFiles only if compiling for Mac, or if there's a suffix.
  201. $$//  In an MDI app, this should occur immediately after setting m_pMainWnd
  202. $$IF(HAS_SUFFIX)
  203.     // Enable drag/drop open
  204.     m_pMainWnd->DragAcceptFiles();
  205.  
  206. $$ELIF(INSTALLED_MAC)
  207. #ifdef _MAC
  208.     // Enable drag/drop open.  We don't call this in Win32, since a
  209.     //  document file extension wasn't chosen while running AppWizard.
  210.     m_pMainWnd->DragAcceptFiles();
  211. #endif
  212.  
  213. $$ENDIF //SUFFIX/INSTALLED_MAC
  214. $$ENDIF //!MINI_SERVER
  215. $$ENDIF //MDI
  216. $$IF(!MINI_SERVER)
  217. $$IF(HAS_SUFFIX)
  218.     // Enable DDE Execute open
  219.     EnableShellOpen();
  220.     RegisterShellFileTypes(TRUE);
  221.  
  222. $$ENDIF //SUFFIX
  223. $$ENDIF //!MINI_SERVER
  224.     // Parse command line for standard shell commands, DDE, file open
  225.     CCommandLineInfo cmdInfo;
  226.     ParseCommandLine(cmdInfo);
  227.  
  228. $$IF(MINI_SERVER || FULL_SERVER || CONTAINER_SERVER || AUTOMATION)
  229. $$IF(VERBOSE)
  230.     // Check to see if launched as OLE server
  231. $$ENDIF
  232.     if (cmdInfo.m_bRunEmbedded || cmdInfo.m_bRunAutomated)
  233.     {
  234. $$IF(!PROJTYPE_MDI)
  235. $$IF(VERBOSE)
  236.         // Register all OLE server (factories) as running.  This enables the
  237.         //  OLE libraries to create objects from other applications.
  238. $$ENDIF //VERBOSE
  239.         COleTemplateServer::RegisterAll();
  240.  
  241. $$ENDIF //!MDI
  242.         // Application was run with /Embedding or /Automation.  Don't show the
  243.         //  main window in this case.
  244.         return TRUE;
  245.     }
  246.  
  247. $$IF(VERBOSE)
  248.     // When a server application is launched stand-alone, it is a good idea
  249.     //  to update the system registry in case it has been damaged.
  250. $$ENDIF
  251. $$IF(MINI_SERVER || FULL_SERVER || CONTAINER_SERVER)
  252. $$IF(ACTIVE_DOC_SERVER)
  253.     m_server.UpdateRegistry(OAT_DOC_OBJECT_SERVER);
  254. $$ELSE
  255.     m_server.UpdateRegistry(OAT_INPLACE_SERVER);
  256. $$ENDIF    // ACTIVE_DOC_SERVER
  257. $$ELIF(AUTOMATION)
  258.     m_server.UpdateRegistry(OAT_DISPATCH_OBJECT);
  259. $$ENDIF
  260. $$IF(AUTOMATION)
  261.     COleObjectFactory::UpdateRegistryAll();
  262. $$ENDIF
  263.  
  264. $$ENDIF //MINI_SERVER || FULL_SERVER || CONTAINER_SERVER || AUTOMATION
  265. $$IF(MINI_SERVER)
  266. $$IF(VERBOSE)
  267.     // When a mini-server is run stand-alone the registry is updated and the
  268.     //  user is instructed to use the Insert Object dialog in a container
  269.     //  to use the server.  Mini-servers do not have stand-alone user interfaces.
  270. $$ENDIF //VERBOSE
  271.     AfxMessageBox(IDP_USE_INSERT_OBJECT);
  272.     return FALSE;
  273. $$ELSE //!MINI_SERVER
  274.     // Dispatch commands specified on the command line
  275.     if (!ProcessShellCommand(cmdInfo))
  276.         return FALSE;
  277. $$IF(PROJTYPE_MDI)
  278. $$IF(VERBOSE)
  279.  
  280.     // The main window has been initialized, so show and update it.
  281. $$ENDIF
  282.     pMainFrame->ShowWindow($$SW_ARG$$);
  283.     pMainFrame->UpdateWindow();
  284. $$ELIF(PROJTYPE_SDI)
  285. $$// call DragAcceptFiles only if compiling for Mac, or if there's a suffix.
  286. $$//  In an SDI app, this should occur after ProcessShellCommand
  287. $$IF(HAS_SUFFIX)
  288.  
  289.     // Enable drag/drop open
  290.     m_pMainWnd->DragAcceptFiles();
  291. $$ELIF(INSTALLED_MAC)
  292.  
  293. #ifdef _MAC
  294.     // Enable drag/drop open.  We don't call this in Win32, since a
  295.     //  document file extension wasn't chosen while running AppWizard.
  296.     m_pMainWnd->DragAcceptFiles();
  297. #endif
  298. $$ENDIF //SUFFIX/INSTALLED_MAC
  299. $$ENDIF //MDI/SDI
  300.  
  301.     return TRUE;
  302. $$ENDIF //!MINI_SERVER
  303. }
  304.  
  305. /////////////////////////////////////////////////////////////////////////////
  306. // CAboutDlg dialog used for App About
  307.  
  308. class CAboutDlg : public CDialog
  309. {
  310. public:
  311.     CAboutDlg();
  312.  
  313. // Dialog Data
  314.     //{{AFX_DATA(CAboutDlg)
  315.     enum { IDD = IDD_ABOUTBOX };
  316.     //}}AFX_DATA
  317.  
  318.     // ClassWizard generated virtual function overrides
  319.     //{{AFX_VIRTUAL(CAboutDlg)
  320.     protected:
  321.     virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  322.     //}}AFX_VIRTUAL
  323.  
  324. // Implementation
  325. protected:
  326.     //{{AFX_MSG(CAboutDlg)
  327.         // No message handlers
  328.     //}}AFX_MSG
  329.     DECLARE_MESSAGE_MAP()
  330. };
  331.  
  332. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  333. {
  334.     //{{AFX_DATA_INIT(CAboutDlg)
  335.     //}}AFX_DATA_INIT
  336. }
  337.  
  338. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  339. {
  340.     CDialog::DoDataExchange(pDX);
  341.     //{{AFX_DATA_MAP(CAboutDlg)
  342.     //}}AFX_DATA_MAP
  343. }
  344.  
  345. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  346.     //{{AFX_MSG_MAP(CAboutDlg)
  347.         // No message handlers
  348.     //}}AFX_MSG_MAP
  349. END_MESSAGE_MAP()
  350.  
  351. // App command to run the dialog
  352. void $$APP_CLASS$$::OnAppAbout()
  353. {
  354.     CAboutDlg aboutDlg;
  355.     aboutDlg.DoModal();
  356. }
  357.  
  358. /////////////////////////////////////////////////////////////////////////////
  359. // $$APP_CLASS$$ commands
  360.