Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

224 lines
5.5 KiB

//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1999 - 1999
//
// File: amc.h
//
//--------------------------------------------------------------------------
// AMC.h : main header file for the AMC application
//
#ifndef __AMC_H__
#define __AMC_H__
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
class CAMCDoc;
/////////////////////////////////////////////////////////////////////////////
// CAMCApp:
// See AMC.cpp for the implementation of this class
//
class CMainFrame;
class CAMCApp : public CWinApp, public CAMCViewObserver,
public CAMCViewToolbarsObserver, public CConsoleEventDispatcher
{
friend class CMMCApplication;
DECLARE_DYNAMIC (CAMCApp)
typedef std::list<HWND> WindowList;
typedef std::list<HWND>::iterator WindowListIterator;
// object model
public:
SC ScGet_Application(_Application **pp_Application);
SC ScRegister_Application(_Application *p_Application);
private:
_ApplicationPtr m_sp_Application;
public:
SC ScCheckMMCPrerequisites();
virtual BOOL PumpMessage(); // low level message pump
virtual BOOL PreTranslateMessage(MSG* pMsg);
virtual void RegisterShellFileTypes(BOOL bCompat);
CAMCApp();
// Attributes
public:
CMainFrame * GetMainFrame();
// Operations
public:
void SetDefaultDirectory();
void SaveUserDirectory(LPCTSTR pszUserDir);
CString GetUserDirectory();
CString GetDefaultDirectory();
HMENU GetMenu () const
{
return (m_Menu);
}
ProgramMode GetMode() const
{
ASSERT (IsValidProgramMode (m_eMode));
return (m_eMode);
}
bool IsInitializing() const
{
return (m_fInitializing);
}
bool DidCloseComeFromMainPump() const
{
return (m_fCloseCameFromMainPump);
}
void ResetCloseCameFromMainPump()
{
m_fCloseCameFromMainPump = false;
}
void DelayCloseUntilIdle (bool fDelay = true)
{
m_fDelayCloseUntilIdle = fDelay;
}
bool IsWin9xPlatform() const
{
return m_fIsWin9xPlatform;
}
bool IsMMCRunningAsOLEServer() const { return m_fRunningAsOLEServer;}
void UpdateFrameWindow(bool bUpdate);
void InitializeMode (ProgramMode eMode);
void SetMode (ProgramMode eMode);
void HookPreTranslateMessage (CWnd* pwndHook);
void UnhookPreTranslateMessage (CWnd* pwndUnhook);
CIdleTaskQueue * GetIdleTaskQueue ();
SC ScShowHtmlHelp(LPCTSTR pszFile, DWORD_PTR dwData);
// helpers for script event firing
SC ScOnNewDocument(CAMCDoc *pDocument, BOOL bLoadedFromConsole);
SC ScOnCloseDocument(CAMCDoc *pDocument);
SC ScOnQuitApp();
SC ScOnSnapinAdded (CAMCDoc *pDocument, PSNAPIN pSnapIn);
SC ScOnSnapinRemoved(CAMCDoc *pDocument, PSNAPIN pSnapIn);
SC ScOnNewView(CAMCView *pView);
bool IsUnderUserControl() { return m_fUnderUserControl;}
protected:
void SetUnderUserControl(bool bUserControl = true);
// Interfaces
private:
BOOL InitializeOLE();
void DeinitializeOLE();
SC ScUninitializeHelpControl();
HRESULT DumpConsoleFile (CString strConsoleFile, CString strDumpFile);
private:
SC ScProcessAuthorModeRestrictions();
private:
BOOL m_bOleInitialized;
BOOL m_bDefaultDirSet;
bool m_fAuthorModeForced;
bool m_fInitializing;
bool m_fDelayCloseUntilIdle;
bool m_fCloseCameFromMainPump;
int m_nMessagePumpNestingLevel;
bool m_fUnderUserControl;
bool m_fRunningAsOLEServer;
CIdleTaskQueue m_IdleTaskQueue;
ProgramMode m_eMode;
CMenu m_Menu;
CAccel m_Accel;
WindowList m_TranslateMessageHookWindows;
bool m_fIsWin9xPlatform;
static const TCHAR m_szSettingsSection[];
static const TCHAR m_szUserDirectoryEntry[];
bool m_bHelpInitialized;
DWORD m_dwHelpCookie;
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAMCApp)
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
virtual BOOL OnIdle(LONG lCount);
//}}AFX_VIRTUAL
// Implementation
#ifdef _DEBUG
virtual void AssertValid() const;
#endif
//{{AFX_MSG(CAMCApp)
afx_msg void OnAppAbout();
afx_msg void OnFileNewInUserMode(); // do nothing in user mode when CTRL+N is pressed. This handler prevents the hotkey from going to any WebBrowser controls
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
// Observed view events - each fires a com event
protected:
virtual SC ScOnCloseView( CAMCView *pView );
virtual SC ScOnViewChange( CAMCView *pView, HNODE hNode );
virtual SC ScOnResultSelectionChange( CAMCView *pView );
virtual SC ScOnContextMenuExecuted( PMENUITEM pMenuItem );
virtual SC ScOnListViewItemUpdated(CAMCView *pView , int nIndex);
// toolbar events
virtual SC ScOnToolbarButtonClicked( );
// Object model related code - these are in a private block
// because CMMCApplication is a friend class
private:
SC ScHelp();
SC ScRunTestScript();
};
inline CAMCApp* AMCGetApp()
{
extern CAMCApp theApp;
return (&theApp);
}
inline CIdleTaskQueue * AMCGetIdleTaskQueue()
{
return (AMCGetApp()->GetIdleTaskQueue());
}
extern const CRect g_rectEmpty;
#ifdef DBG
extern CTraceTag tagForceMirror;
#endif
/////////////////////////////////////////////////////////////////////////////
#endif //__AMC_H__