Files correlati : Ricompilazione Demo : [ ] Commento : Migliorie varie sul frontend git-svn-id: svn://10.65.10.50/trunk@7679 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			210 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			210 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| // FrontEnd.cpp : Defines the class behaviors for the application.
 | |
| //
 | |
| 
 | |
| #include "StdAfx.h"
 | |
| #include "FrontEnd.h"
 | |
| 
 | |
| #include "MainFrm.h"
 | |
| #include "FrontDoc.h"
 | |
| #include "FrontVw.h"
 | |
| 
 | |
| #include "server.h"
 | |
| #include <dos.h>
 | |
| #include <direct.h>
 | |
| 
 | |
| #ifdef _DEBUG
 | |
| #define new DEBUG_NEW
 | |
| #undef THIS_FILE
 | |
| static char THIS_FILE[] = __FILE__;
 | |
| #endif
 | |
| 
 | |
| #define DONGLE_SERVER_ATOM "DONGLE_SERVER_ATOM"
 | |
| 
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| // CFrontEndApp
 | |
| 
 | |
| BEGIN_MESSAGE_MAP(CFrontEndApp, CWinApp)
 | |
| 	//{{AFX_MSG_MAP(CFrontEndApp)
 | |
| 	ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
 | |
| 	ON_COMMAND(ID_APP_EXIT, OnAppExit)
 | |
| 	//}}AFX_MSG_MAP
 | |
| 	// Standard file based document commands
 | |
| 	ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
 | |
| 	ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
 | |
| END_MESSAGE_MAP()
 | |
| 
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| // CFrontEndApp construction
 | |
| 
 | |
| CFrontEndApp::CFrontEndApp()
 | |
| {
 | |
| 	// TODO: add construction code here,
 | |
| 	// Place all significant initialization in InitInstance
 | |
| }
 | |
| 
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| // The one and only CFrontEndApp object
 | |
| 
 | |
| CFrontEndApp theApp;
 | |
| 
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| // CFrontEndApp initialization
 | |
| 
 | |
| BOOL CFrontEndApp::InitInstance()
 | |
| {
 | |
| 	// 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.
 | |
| 
 | |
| #ifdef _AFXDLL
 | |
| 	Enable3dControls();			// Call this when using MFC in a shared DLL
 | |
| #else
 | |
| 	Enable3dControlsStatic();	// Call this when linking to MFC statically
 | |
| #endif
 | |
| 	AfxEnableControlContainer();
 | |
| 
 | |
| 	LoadStdProfileSettings(0);  // 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.
 | |
| 
 | |
| 	CSingleDocTemplate* pDocTemplate;
 | |
| 	pDocTemplate = new CSingleDocTemplate(
 | |
| 		IDR_MAINFRAME,
 | |
| 		RUNTIME_CLASS(CFrontEndDoc),
 | |
| 		RUNTIME_CLASS(CMainFrame),       // main SDI frame window
 | |
| 		RUNTIME_CLASS(CFrontEndView));
 | |
| 	AddDocTemplate(pDocTemplate);
 | |
| 
 | |
| 	// Parse command line for standard shell commands, DDE, file open
 | |
| 	CCommandLineInfo cmdInfo;
 | |
| 	ParseCommandLine(cmdInfo);
 | |
| 
 | |
| 	// Dispatch commands specified on the command line
 | |
| 	if (!ProcessShellCommand(cmdInfo))
 | |
| 		return FALSE;
 | |
| 
 | |
|   BOOL ok = ::GlobalFindAtom(DONGLE_SERVER_ATOM) == 0;
 | |
|   if (ok)
 | |
|   {
 | |
|     ok = StartServer();
 | |
|     if (ok)
 | |
|       ::GlobalAddAtom(DONGLE_SERVER_ATOM);
 | |
|   }
 | |
|   else
 | |
|   {
 | |
| 		AfxMessageBox("Non e' possibile attivare due server contemporaneamente!",
 | |
| 								  MB_ICONEXCLAMATION);
 | |
| #ifndef NDEBUG
 | |
|     ok = StartServer();
 | |
| #endif
 | |
|   }
 | |
| 	
 | |
|   return ok;
 | |
| }
 | |
| 
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| // CAboutDlg dialog used for App About
 | |
| 
 | |
| class CAboutDlg : public CDialog
 | |
| {
 | |
| public:
 | |
| 	CAboutDlg();
 | |
| 
 | |
| // Dialog Data
 | |
| 	//{{AFX_DATA(CAboutDlg)
 | |
| 	enum { IDD = IDD_ABOUTBOX };
 | |
| 	//}}AFX_DATA
 | |
| 
 | |
| 	// ClassWizard generated virtual function overrides
 | |
| 	//{{AFX_VIRTUAL(CAboutDlg)
 | |
| 	protected:
 | |
| 	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
 | |
| 	//}}AFX_VIRTUAL
 | |
| 
 | |
| // Implementation
 | |
| protected:
 | |
| 	virtual BOOL OnInitDialog();
 | |
| 	//{{AFX_MSG(CAboutDlg)
 | |
| 		// No message handlers
 | |
| 	//}}AFX_MSG
 | |
| 	DECLARE_MESSAGE_MAP()
 | |
| };
 | |
| 
 | |
| CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
 | |
| {
 | |
| 	//{{AFX_DATA_INIT(CAboutDlg)
 | |
| 	//}}AFX_DATA_INIT
 | |
| }
 | |
| 
 | |
| void CAboutDlg::DoDataExchange(CDataExchange* pDX)
 | |
| {
 | |
| 	CDialog::DoDataExchange(pDX);
 | |
| 	//{{AFX_DATA_MAP(CAboutDlg)
 | |
| 	//}}AFX_DATA_MAP
 | |
| }
 | |
| 
 | |
| BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
 | |
| 	//{{AFX_MSG_MAP(CAboutDlg)
 | |
| 		// No message handlers
 | |
| 	//}}AFX_MSG_MAP
 | |
| END_MESSAGE_MAP()
 | |
| 
 | |
| // App command to run the dialog
 | |
| void CFrontEndApp::OnAppAbout()
 | |
| {
 | |
| 	CAboutDlg aboutDlg;
 | |
| 	aboutDlg.DoModal();
 | |
| }
 | |
| 
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| // CFrontEndApp commands
 | |
| 
 | |
| int CFrontEndApp::ExitInstance() 
 | |
| {
 | |
| 	if (StopServer())
 | |
|   {
 | |
|     ATOM atom = ::GlobalFindAtom(DONGLE_SERVER_ATOM);
 | |
|     if (atom)
 | |
|       ::GlobalDeleteAtom(atom);
 | |
|   }
 | |
| 	return CWinApp::ExitInstance();
 | |
| }
 | |
| 
 | |
| BOOL CAboutDlg::OnInitDialog()
 | |
| {
 | |
| 	CDialog::OnInitDialog();
 | |
| 	CString strFreeDiskSpace;
 | |
| 	CString strFreeMemory;
 | |
| 	CString strFmt;
 | |
| 
 | |
| 	// Fill available memory
 | |
| 	MEMORYSTATUS MemStat;
 | |
| 	MemStat.dwLength = sizeof(MEMORYSTATUS);
 | |
| 	GlobalMemoryStatus(&MemStat);
 | |
| 	strFmt.LoadString(CG_IDS_PHYSICAL_MEM);
 | |
| 	strFreeMemory.Format(strFmt, MemStat.dwTotalPhys / 1024L);
 | |
| 
 | |
| 	SetDlgItemText(IDC_PHYSICAL_MEM, strFreeMemory);
 | |
| 
 | |
| 	// Fill disk free information
 | |
| 	struct _diskfree_t diskfree;
 | |
| 	int nDrive = _getdrive(); // use current default drive
 | |
| 	if (_getdiskfree(nDrive, &diskfree) == 0)
 | |
| 	{
 | |
| 		strFmt.LoadString(CG_IDS_DISK_SPACE);
 | |
| 		strFreeDiskSpace.Format(strFmt,
 | |
| 			(DWORD)diskfree.avail_clusters *
 | |
| 			(DWORD)diskfree.sectors_per_cluster *
 | |
| 			(DWORD)diskfree.bytes_per_sector / (DWORD)1024L,
 | |
| 			nDrive-1 + _T('A'));
 | |
| 	}
 | |
|  	else
 | |
|  		strFreeDiskSpace.LoadString(CG_IDS_DISK_SPACE_UNAVAIL);
 | |
| 
 | |
| 	SetDlgItemText(IDC_DISK_SPACE, strFreeDiskSpace);
 | |
| 
 | |
| 	return TRUE;
 | |
| }
 |