text: // This is a part of the Microsoft Foundation Classes C++ library.
  // Copyright (C) Microsoft Corporation
  // All rights reserved.
  //
  // This source code is only intended as a supplement to the
  // Microsoft Foundation Classes Reference and related
  // electronic documentation provided with the library.
  // See these sources for detailed information regarding the
  // Microsoft Foundation Classes product.
  
  #include "stdafx.h"
  #include "RebarTest.h"
  #include "MainFrm.h"
  
  #include "ChildFrm.h"
  #include "RebarTestDoc.h"
  #include "RebarTestView.h"
  
  #ifdef _DEBUG
  #define new DEBUG_NEW
  #endif
  
  
  // CRebarTestApp
  
  BEGIN_MESSAGE_MAP(CRebarTestApp, CWinApp)
  	ON_COMMAND(ID_APP_ABOUT, 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()
  
  
  // CRebarTestApp construction
  
  CRebarTestApp::CRebarTestApp() :
  	CWinAppEx (TRUE /* m_bResourceSmartUpdate */)
  {
  	// TODO: add construction code here,
  	// Place all significant initialization in InitInstance
  }
  
  
  // The one and only CRebarTestApp object
  
  CRebarTestApp theApp;
  
  
  // CRebarTestApp initialization
  
  BOOL CRebarTestApp::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("Microsoft\\MFC\\Samples"));
  	LoadStdProfileSettings(4);  // Load standard INI file options (including MRU)
  
  	SetRegistryBase (_T("Settings"));
  
  	// Initialize all Managers for usage. They are automatically constructed
  	// if not yet present
  	InitContextMenuManager();
  	InitKeyboardManager();
  
  	// TODO: Remove this if you don't want extended tooltips:
  	InitTooltipManager();
  
  	CMFCToolTipInfo params;
  	params.m_bVislManagerTheme = TRUE;
  
  	theApp.GetTooltipManager ()->SetTooltipParams (
  		AFX_TOOLTIP_TYPE_ALL,
  		RUNTIME_CLASS (CMFCToolTipCtrl),
  		&params);
  
  	// Register the application's document templates.  Document templates
  	//  serve as the connection between documents, frame windows and views
  	CMultiDocTemplate* pDocTemplate;
  	pDocTemplate = new CMultiDocTemplate(IDR_RebarTestTYPE,
  		RUNTIME_CLASS(CRebarTestDoc),
  		RUNTIME_CLASS(CChildFrame), // custom MDI child frame
  		RUNTIME_CLASS(CRebarTestView));
  	if (!pDocTemplate)
  		return FALSE;
  	AddDocTemplate(pDocTemplate);
  
  	// create main MDI Frame window
  	CMainFrame* pMainFrame = new CMainFrame;
  	if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
  		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
  
  
  	// Parse command line for standard shell commands, DDE, file open
  	CCommandLineInfo cmdInfo;
  	ParseCommandLine(cmdInfo);
  
  
  	if (cmdInfo.m_nShellCommand == CCommandLineInfo::FileNew)
  	{
  		if (!pMainFrame->LoadMDIState (GetRegSectionPath ()))
  		{
  			if (!ProcessShellCommand(cmdInfo))
  				return FALSE;
  		}
  	}
  	else
  	{
  		// Dispatch commands specified on the command line
  		if (!ProcessShellCommand(cmdInfo))
  			return FALSE;
  	}
  	// The main window has been initialized, so show and update it
  	pMainFrame->ShowWindow(m_nCmdShow);
  	pMainFrame->UpdateWindow();
  
  	return TRUE;
  }
  
  // CRebarTestApp message handlers
  
  int CRebarTestApp::ExitInstance() 
  {
  	
  
  	return CWinAppEx::ExitInstance();
  }
  
  // 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 CRebarTestApp::OnAppAbout()
  {
  	CAboutDlg aboutDlg;
  	aboutDlg.DoModal();
  }
  
  
  // CRebarTestApp message handlers
  
  
  void CRebarTestApp::PreLoadState ()
  {
  
  	GetContextMenuManager()->AddMenu (_T("My menu"), IDR_CONTEXT_MENU);
  
  	// TODO: add another context menus here
  }
  
  