|
// ==========================================================================
// Class Specification: COXCustomizeInstanceManagerPage
// ==========================================================================
// Header file : OXCustomizeInstanceManagerPage.h
// Version: 9.3
// This software along with its related components, documentation and files ("The Libraries")
// is � 1994-2007 The Code Project (1612916 Ontario Limited) and use of The Libraries is
// governed by a software license agreement ("Agreement"). Copies of the Agreement are
// available at The Code Project (www.codeproject.com), as part of the package you downloaded
// to obtain this file, or directly from our office. For a copy of the license governing
// this software, you may contact us at legalaffairs@codeproject.com, or by calling 416-849-8900.
// //////////////////////////////////////////////////////////////////////////
/*
Overview
COXCustomizeInstanceManagerPage is COXCustomizePage-derived class. It implements one of the
predefined (standard) customize pages that is responsible for customizing Instance
Manager settings. Instance manager allows you to get information about all running
instances of the application. You can specify the maximum number of instances running
simultaneously. Also it allows you to apply some standard operations to the currently
running instances ("Close", "Switch to...", "Bring To Front", "Maximize", "Minimize",
"Restore").
This standard page will be automatically inserted in the customize manager if you
add the following define to your stdafx.h file:
#define OX_CUSTOMIZE_INSTANCE_MANAGER
In order to initialize the page you must call the following function:
virtual BOOL InitializeInstanceManager(
int nMaxAllowedInstances=OX_MAX_NUM_INSTANCES_IN_LIST,
LPCTSTR lpszProfileName=_T("CustomizeInstanceManager"))
Internally we use COXInstanceManager object to handle all issues related to
the functionality of this customize page. Refere to the documentation on this class
for more details.
!!!!!
In order to use Instance Manager in your application you have to call the
COXCustomizeManager::CheckMaxAllowedInstances() function in OnCreate() handler
of the main window of the application before creating it. In the case this
function returns FALSE you have to return -1 from OnCreate() right away;
otherwise you can go on with creation of the main window of the application.
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
. . . . . . . . . . . . . . . . . . . . . . . . . .
if(m_customizeManager.CheckMaxAllowedInstances())
{
TRACE(_T("CMainFrame::OnCreate: the maximum allowed number of instances has been reached. The application won't be loaded\n"));
return -1;
}
. . . . . . . . . . . . . . . . . . . . . . . . . .
}
!!!!!
This class implements the set of virtual functions defined in the COXCustomizePage
class that must be implemented by any page.
The best way of learning about Customize manager capabilities is to take look at the
VisualStudioLikeDemo sample that can be found in the
.\Samples\Advanced\VisualStudioLikeDemo subdirectory of your Ultimate Toolbox
directory. In the sample menu choose "View"-"Customize" in order to display the
Customize manager window.
Dependency:
#include "OXCustomizeInstanceManagerPage.h"
Source code files:
"OXCustomizeInstanceManagerPage.cpp"
"OXCustomizePage.cpp"
"OXLayoutManager.cpp"
"OXSeparator.cpp"
"OXStatic.cpp"
"OXInstanceManager.cpp"
Resource files:
"OXCustomizeManager.rc"
*/
#if !defined(_OXCUSTOMIZEINSTANCEMANAGERPAGE_H__)
#define _OXCUSTOMIZEINSTANCEMANAGERPAGE_H__
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "OXDllExt.h"
// v9.3 - update 03 - 64bit - included for OXTPARAM
#include "UTB64Bit.h"
#include "OXCustomizePage.h"
#include "OXSeparator.h"
#include "OXStatic.h"
#include "OXInstanceManager.h"
#include "OXMainRes.h"
/////////////////////////////////////////////////////////////////////////////
// COXCustomizeInstanceManagerPage dialog
class OX_CLASS_DECL COXCustomizeInstanceManagerPage : public COXCustomizePage
{
DECLARE_DYNCREATE(COXCustomizeInstanceManagerPage)
// Construction
public:
// --- In :
// --- Out :
// --- Returns:
// --- Effect : Constructs the object
COXCustomizeInstanceManagerPage(); // standard constructor
// Dialog Data
//{{AFX_DATA(COXCustomizeInstanceManagerPage)
enum { IDD = IDD_OX_PAGE_INSTANCE_MANAGER };
CSpinButtonCtrl m_spinMaxAllowedInstances;
CListCtrl m_listInstances;
COXStatic m_staticInstanceCount;
COXSeparator m_sepOptions;
COXSeparator m_sepOperations;
COXSeparator m_sepInstances;
int m_nInstanceLimitType;
UINT m_nMaxAllowedInstanceNumber;
//}}AFX_DATA
protected:
// instance manger object
COXInstanceManager m_instanceManager;
// timer for updating the list of currently active instances of the application
UINT_PTR m_nTimerCheckInstancesID;
public:
// --- In : pCustomizeManager - a pointer to COXCustomizeManager object
// that contains this page and is about to
// load it
// --- Out :
// --- Returns: TRUE if page was successfully loaded; FALSE otherwise
// --- Effect : Called by customize manager while activating the page.
// This function might be called multiple times. Before
// activating another page customize manager will call
// Unload() function
virtual BOOL Load(const COXCustomizeManager* pCustomizeManager);
// --- In :
// --- Out :
// --- Returns:
// --- Effect : Called by customize manager when currently active page is about
// to be deactivated. Matches Load() function call
virtual void Unload();
// --- In :
// --- Out :
// --- Returns: TRUE if changes can be applied immediately; FALSE otherwise
// --- Effect : Retrieves the flag that specifies that changes in toolbar
// appearance settingd can be applied immediately.
// Called internally by customize manager in order to enable/disable
// the "Apply" button.
virtual BOOL IsSupportingApplyChanges() { return TRUE; }
// --- In :
// --- Out :
// --- Returns: TRUE if changes were applied successfully; FALSE otherwise
// --- Effect : Applies the changes. Called internally by customize manager when
// "Apply" button is pressed.
virtual BOOL ApplyChanges();
// --- In :
// --- Out :
// --- Returns: The title of the page as it appears in customize manager's
// shortcut bar
// --- Effect : Retrieves the title of the page. This string will appear on the
// corresponding item in the customize manager's shortcut bar
virtual CString GetTitle() const {
CString sRet;
VERIFY(sRet.LoadString(IDS_OX_CSTMZEINSTANCETITLE));
return sRet;
/*_T("Instance Manager"); */
}
// --- In :
// --- Out :
// --- Returns: The resource string of the image of the page as it appears in
// customize manager's shortcut bar
// --- Effect : Retrieves the resource string of the image of the page.
// This image will appear on the corresponding item in the customize
// manager's shortcut bar
virtual LPCTSTR GetImageResource() const
{
return MAKEINTRESOURCE(IDB_OX_CUSTOMIZE_INSTANCE_MANAGER);
}
// --- In :
// --- Out :
// --- Returns: The tooltip for the page item as it appears in customize manager's
// shortcut bar
// --- Effect : Retrieves the tooltip for the page item.
virtual CString GetTooltip() const
{
CString sRet;
VERIFY(sRet.LoadString(IDS_OX_CSTMZEINSTANCETOOLTIP));
return sRet;
// _T("Instance Manager allows you to limit the number of running instances");
}
// --- In : bIsOk - TRUE if the customize manager window is being closed
// as a result of pressing "OK" button; FALSE otherwise
// --- Out :
// --- Returns: TRUE if the page was successfully closed; FALSE otherwise
// --- Effect : Called by customize manager to close the page. Advanced
// overridable, use your own implementation in the case you
// need to handle the close event.
virtual BOOL OnCloseManager(BOOL bIsOk);
// --- In : nMaxAllowedInstances - the maximum number of instances
// of the application allowed to run
// simultaneously (-1 means there is
// no limit)
// lpszProfileName - the name of the hive in the registry
// where instance manager settings is
// saved. If non-NULL value is set then
// settings is retrieved from the
// registry right away. These can
// overwrite the value specified in
// the previous parameter
// --- Out :
// --- Returns: TRUE if instance manager was initialized successfully;
// FALSE otherwise
// --- Effect : Initializes and retrieve settings for instance manager object
// that can be used in order to access instances of the same
// application running simultaneously
virtual BOOL InitializeInstanceManager(
int nMaxAllowedInstances=OX_MAX_NUM_INSTANCES_IN_LIST,
LPCTSTR lpszProfileName=_T("CustomizeInstanceManager"));
// --- In :
// --- Out :
// --- Returns: A pointer to internal COXInstanceManager object
// --- Effect : Retrieves internal COXInstanceManager object
virtual COXInstanceManager* GetInstanceManager() { return &m_instanceManager; }
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(COXCustomizeInstanceManagerPage)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
public:
// --- In :
// --- Out :
// --- Returns:
// --- Effect : Destructs the object
virtual ~COXCustomizeInstanceManagerPage(); // destructor
protected:
// --- In :
// --- Out :
// --- Returns:
// --- Effect : Called internally just after the page window was created.
// Override this function in order to initialize the controls
// on the page. Don't forget to call the default implementation
// unless you duplicate it in your code
virtual void OnInitDialog();
// populates list control with info on currently running instances of the
// application
virtual void PopulateInstancesList();
// displays the page controls
void ShowVars();
// retrieves current instance name
static CString GetCurrentInstanceName();
// Generated message map functions
//{{AFX_MSG(COXCustomizeInstanceManagerPage)
afx_msg void OnRadioMaxnumberInstanceLimitto();
afx_msg void OnRadioMaxnumberInstanceNolimit();
afx_msg void OnRadioMaxnumberInstanceOnlyone();
afx_msg void OnChangeEditLimitNumber();
afx_msg void OnItemchangedListInstances(NMHDR* pNMHDR, LRESULT* pResult);
// v9.3 - update 03 - 64-bit - using OXTPARAM here - see UTB64Bit.h
afx_msg void OnTimer(OXTPARAM nIDEvent);
afx_msg void OnDestroy();
afx_msg void OnButtonBringToFront();
afx_msg void OnButtonClose();
afx_msg void OnButtonMaximize();
afx_msg void OnButtonMinimize();
afx_msg void OnButtonRestore();
afx_msg void OnButtonSwitchTo();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(_OXCUSTOMIZEINSTANCEMANAGERPAGE_H__)
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
In January 2005, David Cunningham and Chris Maunder created TheUltimateToolbox.com, a new group dedicated to the continued development, support and growth of Dundas Software’s award winning line of MFC, C++ and ActiveX control products.
Ultimate Grid for MFC, Ultimate Toolbox for MFC, and Ultimate TCP/IP have been stalwarts of C++/MFC development for a decade. Thousands of developers have used these products to speed their time to market, improve the quality of their finished products, and enhance the reliability and flexibility of their software.