POSTSMPL.CPP

//========================================================================= 
// PostSmpl.CPP
//
// Copyright (C) 1986-1996. Microsoft Corp. All Rights Reserved.
//
//
// Purpose:
// Defines the class behaviors for the application.
//
//=========================================================================


#include "stdafx.h"
#include "PostSmpl.h"

#include "MainFrm.h"
#include "PostDoc.h"
#include "PostView.h"
#include "PostData.h"
#include "SummInfo.h"



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

// {5BE4EF30-71F7-11CF-A352-00AA006C41F8}
static const CLSID clsid =
{ 0x5be4ef30, 0x71f7, 0x11cf, { 0xa3, 0x52, 0x0, 0xaa, 0x0, 0x6c, 0x41, 0xf8 } };


/////////////////////////////////////////////////////////////////////////////
// CPostSmplApp

BEGIN_MESSAGE_MAP(CPostSmplApp, CWinApp)
//{{AFX_MSG_MAP(CPostSmplApp)
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
ON_COMMAND(ID_FILE_POSTMSG, OnFilePostmsg)
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
ON_COMMAND(ID_FILE_NEW, OnFileNew)
ON_COMMAND(ID_FILE_SUM_INFO, OnFileSumInfo)
//}}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()

/////////////////////////////////////////////////////////////////////////////
// CPostSmplApp construction

CPostSmplApp::CPostSmplApp()
{
// add construction code here,
// Place all significant initialization in InitInstance
m_bEmbedded = FALSE;
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CPostSmplApp object

CPostSmplApp theApp;

/////////////////////////////////////////////////////////////////////////////
// CPostSmplApp initialization

BOOL CPostSmplApp::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

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.

CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CPostSmplDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CPostSmplView));
AddDocTemplate(pDocTemplate);

// enable file manager drag/drop and DDE Execute open
EnableShellOpen();
RegisterShellFileTypes();

if (FAILED(PostData.HrInitialize()))
{
#ifdef _DEBUG
afxDump << "Logon failure\n" ;
#endif
return FALSE;
}

// 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;

//If some filename was passed in command line, then display its contents in view
if (cmdInfo.m_nShellCommand == CCommandLineInfo::FileOpen && cmdInfo.m_strFileName)
{
if (cmdInfo.m_bRunEmbedded)
m_bEmbedded = TRUE;

//Update all views
POSITION nPos = pDocTemplate->GetFirstDocPosition();
CDocument *pDoc = pDocTemplate->GetNextDoc(nPos);
pDoc->UpdateAllViews(NULL);
}

return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// 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:
//{{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 CPostSmplApp::OnAppAbout()
{
CAboutDlg aboutDlg;
aboutDlg.DoModal();
}

/////////////////////////////////////////////////////////////////////////////
// CPostSmplApp commands



int CPostSmplApp::ExitInstance()
{
// Add your specialized code here and/or call the base class
PostData.HrUninitialize();
m_lpBuffer.Empty();
return CWinApp::ExitInstance();
}


void CPostSmplApp::OnFilePostmsg()
{
// Add your command handler code here
PostData.CreateAndPostMessage();
}


void CPostSmplApp::OnFileOpen()
{
// Add your command handler code here
CWinApp::OnFileOpen();

}

void CPostSmplApp::OnFileNew()
{
// Add your command handler code here
m_lpBuffer= TEXT("");

//clear up the variables related to document.
PostData.szFile = TEXT("");
PostData.szFileTitle = TEXT("");
PostData.m_psTitle = TEXT("");
PostData.m_psAuthor = TEXT("");
PostData.m_psComments = TEXT("");
PostData.m_psKeywords = TEXT("");
PostData.m_psSubject = TEXT("");
PostData.m_psTitle = TEXT("");

CWinApp::OnFileNew();
}

void CPostSmplApp::OnFileSumInfo()
{
// TODO: Add your command handler code here
CSummInfo sumDlg;

sumDlg.m_pstitle = PostData.m_psTitle;
sumDlg.m_psauthor = PostData.m_psAuthor;
sumDlg.m_pscomments = PostData.m_psComments;
sumDlg.m_psdirectory = PostData.szFile;
sumDlg.m_psfilename = PostData.szFileTitle;
sumDlg.m_pskeywords = PostData.m_psKeywords;
sumDlg.m_pssubject = PostData.m_psSubject;
sumDlg.m_pstitle = PostData.m_psTitle;


if (IDOK == sumDlg.DoModal())
{
PostData.m_psTitle = sumDlg.m_pstitle;
PostData.m_psAuthor = sumDlg.m_psauthor;
PostData.m_psComments = sumDlg.m_pscomments;
PostData.m_psKeywords = sumDlg.m_pskeywords;
PostData.m_psSubject = sumDlg.m_pssubject;
PostData.m_psTitle = sumDlg.m_pstitle;
}
}