// MainFrm.cpp:CMainFrameִ 
// 

#include "stdafx.h" 
#include "NokiaComposer.h" 

#include "MainFrm.h" 

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif 

///////////////////////////////////////////////////////////// 
// CMainFrame 

IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd) 

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)  
//{{AFX_MSG_MAP(CMainFrame) 
// ע C ClassWizardӲɾ mapping macros.
// Ҫ˳ɵĴ!  
ON_WM_CREATE()  
//}}AFX_MSG_MAP
END_MESSAGE_MAP() 

static UINT indicators[] = 
{
 ID_SEPARATOR,           //״ָ̬ʾ
 ID_INDICATOR_CAPS,
 ID_INDICATOR_NUM,
 ID_INDICATOR_SCRL,
 }; 

//////////////////////////////////////////////////////////// 
// CMainFrame construction/destruction 

CMainFrame::CMainFrame() 
{ 
 // TODO:ӳԱʼ 

} 

CMainFrame::~CMainFrame() 
{ 
} 

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{ 
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1) 
return -1; 

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) 
{ 
    TRACE0("Failed to create toolbar\n"); 
    return -1;      // ʧ
} 

if (!m_wndStatusBar.Create(this) || 
       !m_wndStatusBar.SetIndicators(indicators, 
        sizeof(indicators)/sizeof(UINT))) 

{ 
    TRACE0("Failed to create status bar\n"); 
    return -1;      // ʧ
 } 

// TODO:ǲϣɾɾ
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); 
 EnableDocking(CBRS_ALIGN_ANY); 
 DockControlBar(&m_wndToolBar); 

 return 0;
} 

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 
{ 
if( !CMDIFrameWnd::PreCreateWindow(cs) ) 
        return FALSE; 
 // TODO: Window 
// the CREATESTRUCT cs 

 return TRUE;
} 

///////////////////////////////////////////////////////////////// 
// CMainFrameж 

#ifdef _DEBUG void CMainFrame::AssertValid() const
{ 
 CMDIFrameWnd::AssertValid();
} 

void CMainFrame::Dump(CDumpContext& dc) const 
{ 
 CMDIFrameWnd::Dump(dc); 
} 

#endif //_DEBUG 

////////////////////////////////////////////////////////// 
// CMainFrame message handlers 
11.2.2  Nokiacomposer.cppģ
nokiaֻƽֵ̨֧ࡣ 
// NokiaComposer.cpp:Ϊ. 
// 

#include "stdafx.h" 
#include "NokiaComposer.h" 

#include "MainFrm.h" 
#include "ChildFrm.h" 
#include "NokiaComposerDoc.h" 
#include "NokiaComposerView.h" 

#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 

////////////////////////////////////////////////////////////////// 
// CNokiaComposerApp 

BEGIN_MESSAGE_MAP(CNokiaComposerApp, CWinApp) 
 //{{AFX_MSG_MAP(CNokiaComposerApp)
 ON_COMMAND(ID_APP_ABOUT, OnAppAbout) 
    //ע C ClassWizardӲɾmapping macros. 
    // Ҫ˳ɵĴ !
//}}AFX_MSG_MAP
// ĵı׼ĵ
ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
// ׼ӡ
ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup) 
END_MESSAGE_MAP() 

/////////////////////////////////////////////////////////// 
// CNokiaComposerApp ܹ

CNokiaComposerApp::CNokiaComposerApp() 
{  
// TODO:Ӽܹ,
//  InitInstanceҪĳʼ 
} 

//////////////////////////////////////////////////////////
// һΨһһCNokiaComposerApp 

CNokiaComposerApp theApp; 

//////////////////////////////////////////////////////// 
// CNokiaComposerApp ʼ 

BOOL CNokiaComposerApp::InitInstance() 
{ 
 AfxEnableControlContainer();

  AfxInitRichEdit(); 

// ׼ʼ 
// ǲЩԲϣִеĳߴ磬 
// ӦɾǲҪָĳʼ. 

#ifdef _AFXDLL
 Enable3dControls(); //ڹDLLеʹMFCʱ
#else 
 Enable3dControlsStatic(); // MFCǵ 
#endif 

// Ǳõ޸ע. 
// TODO:Ӧʵ޸ĸַ
// ǹ˾Ƶ. 
SetRegistryKey(_T("Local AppWizard-Generated Applications")); 

LoadStdProfileSettings(); // ر׼INIļѡ( MRU) 

// עĵģ. ĵģ 
// Ϊĵܴͼ֮ӱ. 

CMultiDocTemplate* pDocTemplate; 
pDocTemplate = new CMultiDocTemplate( 
    IDR_NOKIACTYPE, 
    RUNTIME_CLASS(CNokiaComposerDoc), 
    RUNTIME_CLASS(CChildFrame), // MDI
    RUNTIME_CLASS(CNokiaComposerView));    
AddDocTemplate(pDocTemplate); 

// MDI Frame
CMainFrame* pMainFrame = new CMainFrame; 
if (!pMainFrame->LoadFrame(IDR_MAINFRAME)) 
       return FALSE;
m_pMainWnd = pMainFrame; 

// shell,DDE,ĵ
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo); 

// ָϵ
if (!ProcessShellCommand(cmdInfo))
       return FALSE; 

// ѱʼ,ʾ.
pMainFrame->ShowWindow(m_nCmdShow); 
pMainFrame->UpdateWindow(); 

 return TRUE;
} 

/////////////////////////////////////////////////////////// 
// App AboutCAboutDlgԻ

class CAboutDlg : public CDialog 
{ 
public: 
CAboutDlg(); 

// Dialog Data 
//{{AFX_DATA(CAboutDlg) 
enum { IDD = IDD_ABOUTBOX };  
//}}AFX_DATA 

// ClassWizard ⺯ѵ 
//{{AFX_VIRTUAL(CAboutDlg)  
protected: 
virtual void DoDataExchange(CDataExchange* pDX); // ֧ DDX/DDV 
//}}AFX_VIRTUAL 

// ִ
protected:  
//{{AFX_MSG(CAboutDlg) 
// ûϢ 
//}}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жԻ 
void CNokiaComposerApp::OnAppAbout() 
{  
CAboutDlg aboutDlg; 
aboutDlg.DoModal(); 

} 

/////////////////////////////////////////////////////////////// 
// CNokiaComposerAppϢ



