home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tricks of the Windows Gam…ming Gurus (2nd Edition)
/
Disc2.iso
/
vc98
/
mfc
/
src
/
appui.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1998-06-16
|
4KB
|
147 lines
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1998 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"
#ifdef AFX_CORE2_SEG
#pragma code_seg(AFX_CORE2_SEG)
#endif
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CWinApp User Interface Extensions
void CWinApp::OnAppExit()
{
// same as double-clicking on main window close box
ASSERT(m_pMainWnd != NULL);
m_pMainWnd->SendMessage(WM_CLOSE);
}
#ifdef AFX_CORE3_SEG
#pragma code_seg(AFX_CORE3_SEG)
#endif
void CWinApp::HideApplication()
{
ASSERT_VALID(m_pMainWnd);
// hide the application's windows before closing all the documents
m_pMainWnd->ShowWindow(SW_HIDE);
m_pMainWnd->ShowOwnedPopups(FALSE);
// put the window at the bottom of zorder, so it isn't activated
m_pMainWnd->SetWindowPos(&CWnd::wndBottom, 0, 0, 0, 0,
SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE);
}
void CWinApp::DoWaitCursor(int nCode)
{
// 0 => restore, 1=> begin, -1=> end
ASSERT(nCode == 0 || nCode == 1 || nCode == -1);
ASSERT(afxData.hcurWait != NULL);
AfxLockGlobals(CRIT_WAITCURSOR);
m_nWaitCursorCount += nCode;
if (m_nWaitCursorCount > 0)
{
HCURSOR hcurPrev = ::SetCursor(afxData.hcurWait);
if (nCode > 0 && m_nWaitCursorCount == 1)
m_hcurWaitCursorRestore = hcurPrev;
}
else
{
// turn everything off
m_nWaitCursorCount = 0; // prevent underflow
::SetCursor(m_hcurWaitCursorRestore);
}
AfxUnlockGlobals(CRIT_WAITCURSOR);
}
BOOL CWinApp::SaveAllModified()
{
if (m_pDocManager != NULL)
return m_pDocManager->SaveAllModified();
return TRUE;
}
void CWinApp::AddToRecentFileList(LPCTSTR lpszPathName)
{
ASSERT_VALID(this);
ASSERT(lpszPathName != NULL);
ASSERT(AfxIsValidString(lpszPathName));
if (m_pRecentFileList != NULL)
m_pRecentFileList->Add(lpszPathName);
}
CDocument* CWinApp::OpenDocumentFile(LPCTSTR lpszFileName)
{
ASSERT(m_pDocManager != NULL);
return m_pDocManager->OpenDocumentFile(lpszFileName);
}
void CWinApp::CloseAllDocuments(BOOL bEndSession)
{
if (m_pDocManager != NULL)
m_pDocManager->CloseAllDocuments(bEndSession);
}
/////////////////////////////////////////////////////////////////////////////
// MRU file list default implementation
void CWinApp::OnUpdateRecentFileMenu(CCmdUI* pCmdUI)
{
ASSERT_VALID(this);
if (m_pRecentFileList == NULL) // no MRU files
pCmdUI->Enable(FALSE);
else
m_pRecentFileList->UpdateMenu(pCmdUI);
}
/////////////////////////////////////////////////////////////////////////////
// DDE and ShellExecute support
BOOL CWinApp::OnDDECommand(LPTSTR lpszCommand)
{
if (m_pDocManager != NULL)
return m_pDocManager->OnDDECommand(lpszCommand);
else
return FALSE;
}
/////////////////////////////////////////////////////////////////////////////
// MRU file list default implementation
BOOL CWinApp::OnOpenRecentFile(UINT nID)
{
ASSERT_VALID(this);
ASSERT(m_pRecentFileList != NULL);
ASSERT(nID >= ID_FILE_MRU_FILE1);
ASSERT(nID < ID_FILE_MRU_FILE1 + (UINT)m_pRecentFileList->GetSize());
int nIndex = nID - ID_FILE_MRU_FILE1;
ASSERT((*m_pRecentFileList)[nIndex].GetLength() != 0);
TRACE2("MRU: open file (%d) '%s'.\n", (nIndex) + 1,
(LPCTSTR)(*m_pRecentFileList)[nIndex]);
if (OpenDocumentFile((*m_pRecentFileList)[nIndex]) == NULL)
m_pRecentFileList->Remove(nIndex);
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////