topical media & game development

talk show tell print

basic-program-code-15-Sketcher-ch15-Sketcher.c

? / basic-program-code-15-Sketcher-ch15-Sketcher.c


  // Sketcher.cpp : Defines the class behaviors for the application.
  //
  
  include <stdafx.h>
  include <Sketcher.h>
  include <MainFrm.h>
  
  include <ChildFrm.h>
  include <SketcherDoc.h>
  include <Elements.h>
  include <SketcherView.h>
  
  ifdef _DEBUG
  define new DEBUG_NEW
  endif
  
  // CSketcherApp
  
  BEGIN_MESSAGE_MAP(CSketcherApp, CWinApp)
          ON_COMMAND(ID_APP_ABOUT, &CSketcherApp::OnAppAbout)
          // Standard file based document commands
          ON_COMMAND(ID_FILE_NEW, &CWinApp::OnFileNew)
          ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen)
          // Standard print setup command
          ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinApp::OnFilePrintSetup)
  END_MESSAGE_MAP()
  
  // CSketcherApp construction
  
  CSketcherApp::CSketcherApp()
  {
          // TODO: add construction code here,
          // Place all significant initialization in InitInstance
  }
  
  // The one and only CSketcherApp object
  
  CSketcherApp theApp;
  
  // CSketcherApp initialization
  
  BOOL CSketcherApp::InitInstance()
  {
          // InitCommonControlsEx() is required on Windows XP if an application
          // manifest specifies use of ComCtl32.dll version 6 or later to enable
          // visual styles.  Otherwise, any window creation will fail.
          INITCOMMONCONTROLSEX InitCtrls;
          InitCtrls.dwSize = sizeof(InitCtrls);
          // Set this to include all the common control classes you want to use
          // in your application.
          InitCtrls.dwICC = ICC_WIN95_CLASSES;
          InitCommonControlsEx(&InitCtrls);
  
          CWinApp::InitInstance();
  
          // Initialize OLE libraries
          if (!AfxOleInit())
          {
                  AfxMessageBox(IDP_OLE_INIT_FAILED);
                  return FALSE;
          }
          AfxEnableControlContainer();
          // Standard initialization
          // If you are not using these features and wish to reduce the size
          // of your final executable, you should remove from the following
          // the specific initialization routines you do not need
          // Change the registry key under which our settings are stored
          // TODO: You should modify this string to be something appropriate
          // such as the name of your company or organization
          SetRegistryKey(_T("Local AppWizard-Generated Applications"));
          LoadStdProfileSettings(4);  // Load standard INI file options (including MRU)
          // Register the application's document templates.  Document templates
          //  serve as the connection between documents, frame windows and views
          CMultiDocTemplate* pDocTemplate;
          pDocTemplate = new CMultiDocTemplate(IDR_SketcherTYPE,
                  RUNTIME_CLASS(CSketcherDoc),
                  RUNTIME_CLASS(CChildFrame), // custom MDI child frame
                  RUNTIME_CLASS(CSketcherView));
          if (!pDocTemplate)
                  return FALSE;
          AddDocTemplate(pDocTemplate);
  
          // create main MDI Frame window
          CMainFrame* pMainFrame = new CMainFrame;
          if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME))
          {
                  delete pMainFrame;
                  return FALSE;
          }
          m_pMainWnd = pMainFrame;
          // call DragAcceptFiles only if there's a suffix
          //  In an MDI app, this should occur immediately after setting m_pMainWnd
          // Enable drag/drop open
          m_pMainWnd->DragAcceptFiles();
  
          // Enable DDE Execute open
          EnableShellOpen();
          RegisterShellFileTypes(TRUE);
  
          // Parse command line for standard shell commands, DDE, file open
          CCommandLineInfo cmdInfo;
          ParseCommandLine(cmdInfo);
  
          // Dispatch commands specified on the command line.  Will return FALSE if
          // app was launched with /RegServer, /Register, /Unregserver or /Unregister.
          if (!ProcessShellCommand(cmdInfo))
                  return FALSE;
          // The main window has been initialized, so show and update it
          pMainFrame->ShowWindow(m_nCmdShow);
          pMainFrame->UpdateWindow();
  
          return TRUE;
  }
  
  // CAboutDlg dialog used for App About
  
  class CAboutDlg : public CDialog
  {
  public:
          CAboutDlg();
  
  // Dialog Data
          enum { IDD = IDD_ABOUTBOX };
  
  protected:
          virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  
  // Implementation
  protected:
          DECLARE_MESSAGE_MAP()
  };
  
  CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  {
  }
  
  void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  {
          CDialog::DoDataExchange(pDX);
  }
  
  BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  END_MESSAGE_MAP()
  
  // App command to run the dialog
  void CSketcherApp::OnAppAbout()
  {
          CAboutDlg aboutDlg;
          aboutDlg.DoModal();
  }
  
  // CSketcherApp message handlers
  
  


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.