www.pudn.com > CHECKER.zip > CHECKER.CPP


// checker1.cpp : Defines the class behaviors for the application. 
// 
 
#include "stdafx.h" 
#include "checker.h" 
 
#include "mainfrm.h" 
#include "checkfrm.h" 
#include "checkdoc.h" 
#include "checkvw.h" 
#include "textdoc.h" 
 
 
#ifdef _DEBUG 
#undef THIS_FILE 
static char BASED_CODE THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CCheckerApp 
 
BEGIN_MESSAGE_MAP(CCheckerApp, CWinApp) 
        //{{AFX_MSG_MAP(CCheckerApp) 
        ON_COMMAND(ID_APP_ABOUT, OnAppAbout) 
                // NOTE - the ClassWizard will add and remove mapping macros here. 
                //    DO NOT EDIT what you see in these blocks of generated code! 
        //}}AFX_MSG_MAP 
        // 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() 
 
///////////////////////////////////////////////////////////////////////////// 
// CCheckerApp construction 
 
CCheckerApp::CCheckerApp() 
{ 
        // TODO: add construction code here, 
        // Place all significant initialization in InitInstance 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// The one and only CCheckerApp object 
 
CCheckerApp theApp; 
 
///////////////////////////////////////////////////////////////////////////// 
// CCheckerApp initialization 
 
BOOL CCheckerApp::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. 
 
        Enable3dControls(); 
 
        LoadStdProfileSettings();  // 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 *ptxtTemplate, *pchkTemplate; 
  		ptxtTemplate = new CMultiDocTemplate( 
		        IDR_TEXTTYPE, 
				RUNTIME_CLASS(CTextDoc), 
				RUNTIME_CLASS(CMDIChildWnd), 
				RUNTIME_CLASS(CEditView)); 
		pchkTemplate = new CMultiDocTemplate( 
                IDR_CHECKTYPE, 
                RUNTIME_CLASS(CCheckerDoc), 
                RUNTIME_CLASS(CCheckFrame),          // custom MDI child frame 
                RUNTIME_CLASS(CCheckerView)); 
        AddDocTemplate(pchkTemplate); 
		AddDocTemplate(ptxtTemplate); 
      // create main MDI Frame window 
        CMainFrame* pMainFrame = new CMainFrame; 
        if (!pMainFrame->LoadFrame(IDR_MAINFRAME)) 
                return FALSE; 
        m_pMainWnd = pMainFrame; 
 
        // Enable DDE Execute open 
        EnableShellOpen(); 
        RegisterShellFileTypes(); 
 
        // simple command line parsing 
        if (m_lpCmdLine[0] == '\0') 
        { 
                // create a new (empty) document 
                pchkTemplate->OpenDocumentFile(NULL); 
        } 
        else 
        { 
                // open an existing document 
                OpenDocumentFile(m_lpCmdLine); 
        } 
 
        // Enable drag/drop open 
        m_pMainWnd->DragAcceptFiles(); 
 
        // The main window has been initialized, so show and update it. 
        pMainFrame->ShowWindow(SW_SHOWMAXIMIZED); 
        pMainFrame->UpdateWindow(); 
		 
 
        return TRUE; 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CAboutDlg dialog used for App About 
 
class CCircButton : public CButton 
{ 
public: 
  void DrawItem(LPDRAWITEMSTRUCT di); 
}; 
 
void CCircButton::DrawItem(LPDRAWITEMSTRUCT di) 
  { 
  CString title; 
  int oldbk;  
  // Could set background/foregroud colors but Windows 
  // sets reasonable defaults for you 
  CDC *dc=CDC::FromHandle(di->hDC); 
  dc->Ellipse(&di->rcItem); 
  GetWindowText(title); 
  oldbk=dc->SetBkMode(TRANSPARENT); 
  dc->DrawText(title,-1,&di->rcItem,DT_CENTER|DT_SINGLELINE|DT_VCENTER); 
  dc->SetBkMode(oldbk); 
  } 
 
class CAboutDlg : public CDialog 
{ 
public: 
        CAboutDlg(); 
 
// Dialog Data 
        //{{AFX_DATA(CAboutDlg) 
        enum { IDD = IDD_ABOUTBOX }; 
        //}}AFX_DATA 
 
// Implementation 
protected: 
	    CCircButton okbutton; 
        virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support 
        //{{AFX_MSG(CAboutDlg) 
	virtual BOOL OnInitDialog(); 
	//}}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) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
// App command to run the dialog 
void CCheckerApp::OnAppAbout() 
{ 
        CAboutDlg aboutDlg; 
        aboutDlg.DoModal(); 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CCheckerApp commands 
 
BOOL CAboutDlg::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	 
	okbutton.SubclassDlgItem(IDOK,this); 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
}