2024-12-21 10:04:04 +08:00
// ==========================================================================
// Class Implementation: COXCustomizeInstanceManagerPage
// ==========================================================================
// Version: 9.3
// This software along with its related components, documentation and files ("The Libraries")
// is <20> 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.
// //////////////////////////////////////////////////////////////////////////
# include "stdafx.h"
# include "OXCustomizeInstanceManagerPage.h"
# include "UTB64Bit.h"
# ifdef _DEBUG
# define new DEBUG_NEW
# undef THIS_FILE
static char THIS_FILE [ ] = __FILE__ ;
# endif
const UINT IDT_OXCUSTOMIZEINSTANCEMANAGER_CHECK_INTANCES = 278 ;
const UINT ID_OXCUSTOMIZEINSTANCEMANAGER_CHECK_INTANCES_DELAY = 1000 ;
/////////////////////////////////////////////////////////////////////////////
// COXCustomizeInstanceManagerPage dialog
IMPLEMENT_DYNCREATE ( COXCustomizeInstanceManagerPage , COXCustomizePage )
COXCustomizeInstanceManagerPage : : COXCustomizeInstanceManagerPage ( ) :
m_instanceManager ( GetCurrentInstanceName ( ) )
{
//{{AFX_DATA_INIT(COXCustomizeInstanceManagerPage)
m_nInstanceLimitType = 0 ;
m_nMaxAllowedInstanceNumber = 2 ;
//}}AFX_DATA_INIT
m_nDialogID = IDD ;
m_sProfileName . Empty ( ) ;
m_nTimerCheckInstancesID = 0 ;
}
COXCustomizeInstanceManagerPage : : ~ COXCustomizeInstanceManagerPage ( )
{
}
BOOL COXCustomizeInstanceManagerPage : :
InitializeInstanceManager ( int nMaxAllowedInstances /*=OX_MAX_NUM_INSTANCES_IN_LIST*/ ,
LPCTSTR lpszProfileName /*=_T("CustomizeInstanceManager")*/ )
{
ASSERT ( nMaxAllowedInstances > 0 & &
nMaxAllowedInstances < = OX_MAX_NUM_INSTANCES_IN_LIST ) ;
if ( nMaxAllowedInstances < 1 | |
nMaxAllowedInstances > OX_MAX_NUM_INSTANCES_IN_LIST )
{
TRACE ( _T ( " COXCustomizeInstanceManagerPage::InitializeInstanceManager: the maximum allowed number of instances=%d is out of range: %d...%d \n " ) , nMaxAllowedInstances , 1 , OX_MAX_NUM_INSTANCES_IN_LIST ) ;
return FALSE ;
}
m_nMaxAllowedInstanceNumber = nMaxAllowedInstances ;
CWinApp * pApp = AfxGetApp ( ) ;
ASSERT ( pApp ! = NULL ) ;
if ( lpszProfileName ! = NULL )
{
m_sProfileName = lpszProfileName ;
m_nMaxAllowedInstanceNumber = pApp - > GetProfileInt ( m_sProfileName ,
_T ( " MaxAllowedInstanceNumber " ) , m_nMaxAllowedInstanceNumber ) ;
}
ASSERT ( m_nMaxAllowedInstanceNumber > 0 & &
m_nMaxAllowedInstanceNumber < = OX_MAX_NUM_INSTANCES_IN_LIST ) ;
m_instanceManager . SetMaxAllowedInstances ( m_nMaxAllowedInstanceNumber ) ;
m_nInstanceLimitType =
( m_nMaxAllowedInstanceNumber = = OX_MAX_NUM_INSTANCES_IN_LIST ? 0 :
( m_nMaxAllowedInstanceNumber = = 1 ? 1 : 2 ) ) ;
return TRUE ;
}
BOOL COXCustomizeInstanceManagerPage : : OnCloseManager ( BOOL bIsOk )
{
CWinApp * pApp = AfxGetApp ( ) ;
ASSERT ( pApp ! = NULL ) ;
if ( bIsOk )
{
if ( ! ApplyChanges ( ) )
return FALSE ;
if ( ! m_sProfileName . IsEmpty ( ) )
{
pApp - > WriteProfileInt ( m_sProfileName ,
_T ( " MaxAllowedInstanceNumber " ) , m_nMaxAllowedInstanceNumber ) ;
}
}
else
{
if ( ! m_sProfileName . IsEmpty ( ) )
{
m_nMaxAllowedInstanceNumber = pApp - > GetProfileInt ( m_sProfileName ,
_T ( " MaxAllowedInstanceNumber " ) , m_nMaxAllowedInstanceNumber ) ;
m_instanceManager . SetMaxAllowedInstances ( m_nMaxAllowedInstanceNumber ) ;
}
}
return TRUE ;
}
void COXCustomizeInstanceManagerPage : : DoDataExchange ( CDataExchange * pDX )
{
COXCustomizePage : : DoDataExchange ( pDX ) ;
//{{AFX_DATA_MAP(COXCustomizeInstanceManagerPage)
DDX_Control ( pDX , IDC_OX_SPIN_LIMIT_NUMBER , m_spinMaxAllowedInstances ) ;
DDX_Control ( pDX , IDC_OX_LIST_INSTANCES , m_listInstances ) ;
DDX_Control ( pDX , IDC_OX_STATIC_INSTANCE_COUNT , m_staticInstanceCount ) ;
DDX_Control ( pDX , IDC_OX_SEPARATOR_OPTIONS , m_sepOptions ) ;
DDX_Control ( pDX , IDC_OX_SEPARATOR_OPERATIONS , m_sepOperations ) ;
DDX_Control ( pDX , IDC_OX_SEPARATOR_INSTANCES , m_sepInstances ) ;
DDX_Radio ( pDX , IDC_OX_RADIO_MAXNUMBER_INSTANCE_NOLIMIT , m_nInstanceLimitType ) ;
DDX_Text ( pDX , IDC_OX_EDIT_LIMIT_NUMBER , m_nMaxAllowedInstanceNumber ) ;
DDV_MinMaxUInt ( pDX , m_nMaxAllowedInstanceNumber , 1 , OX_MAX_NUM_INSTANCES_IN_LIST ) ;
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP ( COXCustomizeInstanceManagerPage , COXCustomizePage )
//{{AFX_MSG_MAP(COXCustomizeInstanceManagerPage)
ON_BN_CLICKED ( IDC_OX_RADIO_MAXNUMBER_INSTANCE_LIMITTO , OnRadioMaxnumberInstanceLimitto )
ON_BN_CLICKED ( IDC_OX_RADIO_MAXNUMBER_INSTANCE_NOLIMIT , OnRadioMaxnumberInstanceNolimit )
ON_BN_CLICKED ( IDC_OX_RADIO_MAXNUMBER_INSTANCE_ONLYONE , OnRadioMaxnumberInstanceOnlyone )
ON_EN_CHANGE ( IDC_OX_EDIT_LIMIT_NUMBER , OnChangeEditLimitNumber )
ON_NOTIFY ( LVN_ITEMCHANGED , IDC_OX_LIST_INSTANCES , OnItemchangedListInstances )
ON_WM_TIMER ( )
ON_WM_DESTROY ( )
ON_BN_CLICKED ( IDC_OX_BUTTON_BRING_TO_FRONT , OnButtonBringToFront )
ON_BN_CLICKED ( IDC_OX_BUTTON_CLOSE , OnButtonClose )
ON_BN_CLICKED ( IDC_OX_BUTTON_MAXIMIZE , OnButtonMaximize )
ON_BN_CLICKED ( IDC_OX_BUTTON_MINIMIZE , OnButtonMinimize )
ON_BN_CLICKED ( IDC_OX_BUTTON_RESTORE , OnButtonRestore )
ON_BN_CLICKED ( IDC_OX_BUTTON_SWITCH_TO , OnButtonSwitchTo )
//}}AFX_MSG_MAP
END_MESSAGE_MAP ( )
CString COXCustomizeInstanceManagerPage : : GetCurrentInstanceName ( )
{
CString sFileName ( _T ( " " ) ) ;
: : GetModuleFileName ( NULL , sFileName . GetBuffer ( MAX_PATH ) , MAX_PATH ) ;
sFileName . ReleaseBuffer ( ) ;
# if _MFC_VER>0x0421
sFileName . Remove ( _T ( ' \\ ' ) ) ;
# else
int nPos = sFileName . Find ( _T ( ' \\ ' ) ) ;
while ( nPos ! = - 1 )
{
sFileName = sFileName . Left ( nPos ) + sFileName . Mid ( nPos + 1 ) ;
nPos = sFileName . Find ( _T ( ' \\ ' ) ) ;
}
# endif // _MFC_VER>0x0421
return sFileName ;
}
/////////////////////////////////////////////////////////////////////////////
// COXCustomizeInstanceManagerPage message handlers
BOOL COXCustomizeInstanceManagerPage : : Load ( const COXCustomizeManager * pCustomizeManager )
{
// Call default implementation. It will load this demo dialog as the first
// page and will create About and CodeSample pages if specified.
if ( ! COXCustomizePage : : Load ( pCustomizeManager ) )
return FALSE ;
return TRUE ;
}
void COXCustomizeInstanceManagerPage : : Unload ( )
{
// add here code for cleaning up all objects created by demo
//
//
//////////////////////////////////////////////////////////////////////////
COXCustomizePage : : Unload ( ) ;
}
void COXCustomizeInstanceManagerPage : : OnInitDialog ( )
{
// must call default implementation
COXCustomizePage : : OnInitDialog ( ) ;
// add here initialization code for your demo dialog. Treat it as a
// normal COXCustomizePage::OnInitDialog function
m_nTimerCheckInstancesID = SetTimer ( IDT_OXCUSTOMIZEINSTANCEMANAGER_CHECK_INTANCES ,
ID_OXCUSTOMIZEINSTANCEMANAGER_CHECK_INTANCES_DELAY , NULL ) ;
ASSERT ( m_nTimerCheckInstancesID ! = 0 ) ;
m_spinMaxAllowedInstances . SetRange ( 1 , OX_MAX_NUM_INSTANCES_IN_LIST ) ;
CString sItem ;
VERIFY ( sItem . LoadString ( IDS_OX_CSTMZEINSTANCEINSTANCE ) ) ;
m_listInstances . InsertColumn ( 0 , sItem , LVCFMT_LEFT , 100 ) ; //"Instance"
VERIFY ( sItem . LoadString ( IDS_OX_CSTMZEINSTANCEPID ) ) ;
m_listInstances . InsertColumn ( 1 , sItem , LVCFMT_CENTER , 40 ) ; //"PID"
VERIFY ( sItem . LoadString ( IDS_OX_CSTMZEINSTANCESTATUS ) ) ;
m_listInstances . InsertColumn ( 2 , sItem , LVCFMT_CENTER , 50 ) ; //"Status"
PopulateInstancesList ( ) ;
m_staticInstanceCount . SetTextColor ( RGB ( 0 , 0 , 128 ) ) ;
CFont font ;
VERIFY ( font . CreatePointFont ( 140 , _T ( " Times New Roman " ) ) ) ;
m_staticInstanceCount . SetTextFont ( & font ) ;
// layout
//
m_LayoutManager . TieChild ( & m_sepOptions , OX_LMS_LEFT | OX_LMS_RIGHT , OX_LMT_SAME ) ;
m_LayoutManager . TieChild ( & m_sepInstances , OX_LMS_LEFT | OX_LMS_RIGHT , OX_LMT_SAME ) ;
m_LayoutManager . TieChild ( & m_listInstances , OX_LMS_ANY , OX_LMT_SAME ) ;
m_LayoutManager . TieChild ( & m_sepOperations , OX_LMS_RIGHT , OX_LMT_SAME ) ;
m_LayoutManager . TieChild ( IDC_OX_BUTTON_CLOSE , OX_LMS_RIGHT , OX_LMT_SAME ) ;
m_LayoutManager . TieChild ( IDC_OX_BUTTON_SWITCH_TO , OX_LMS_RIGHT , OX_LMT_SAME ) ;
m_LayoutManager . TieChild ( IDC_OX_BUTTON_BRING_TO_FRONT , OX_LMS_RIGHT , OX_LMT_SAME ) ;
m_LayoutManager . TieChild ( IDC_OX_BUTTON_MAXIMIZE , OX_LMS_RIGHT , OX_LMT_SAME ) ;
m_LayoutManager . TieChild ( IDC_OX_BUTTON_MINIMIZE , OX_LMS_RIGHT , OX_LMT_SAME ) ;
m_LayoutManager . TieChild ( IDC_OX_BUTTON_RESTORE , OX_LMS_RIGHT , OX_LMT_SAME ) ;
//
///////////////////////////////////////
m_bInitialized = TRUE ;
UpdateData ( FALSE ) ;
ShowVars ( ) ;
}
BOOL COXCustomizeInstanceManagerPage : : ApplyChanges ( )
{
if ( ! UpdateData ( TRUE ) )
return FALSE ;
switch ( m_nInstanceLimitType )
{
case 0 :
m_nMaxAllowedInstanceNumber = OX_MAX_NUM_INSTANCES_IN_LIST ;
break ;
case 1 :
m_nMaxAllowedInstanceNumber = 1 ;
break ;
}
m_instanceManager . SetMaxAllowedInstances ( m_nMaxAllowedInstanceNumber ) ;
return TRUE ;
}
void COXCustomizeInstanceManagerPage : : OnRadioMaxnumberInstanceLimitto ( )
{
// TODO: Add your control notification handler code here
ShowVars ( ) ;
}
void COXCustomizeInstanceManagerPage : : OnRadioMaxnumberInstanceNolimit ( )
{
// TODO: Add your control notification handler code here
ShowVars ( ) ;
}
void COXCustomizeInstanceManagerPage : : OnRadioMaxnumberInstanceOnlyone ( )
{
// TODO: Add your control notification handler code here
ShowVars ( ) ;
}
void COXCustomizeInstanceManagerPage : : PopulateInstancesList ( )
{
int nInstanceRunningCount = m_instanceManager . GetNumberOfInstances ( ) ;
CString sInstanceRunningCount ;
sInstanceRunningCount . Format ( _T ( " %d " ) , nInstanceRunningCount ) ;
m_staticInstanceCount . SetWindowText ( sInstanceRunningCount ) ;
int nSelectedItem = - 1 ;
# if _MFC_VER > 0x0421
POSITION pos = m_listInstances . GetFirstSelectedItemPosition ( ) ;
# else
ASSERT ( : : IsWindow ( m_listInstances . m_hWnd ) ) ;
POSITION pos = ( POSITION ) ( 1 + m_listInstances . GetNextItem ( - 1 , LVIS_SELECTED ) ) ;
# endif
if ( pos ! = NULL )
{
# if _MFC_VER > 0x0421
int nSelectedItem = m_listInstances . GetNextSelectedItem ( pos ) ;
# else
ASSERT ( : : IsWindow ( m_listInstances . m_hWnd ) ) ;
int nSelectedItem = ( int ) pos - 1 ;
POSITION npos = ( POSITION ) ( 1 + m_listInstances . GetNextItem ( nSelectedItem , LVIS_SELECTED ) ) ;
# endif
ASSERT ( pos = = NULL ) ;
ASSERT ( nSelectedItem ! = - 1 ) ;
}
m_listInstances . DeleteAllItems ( ) ;
// populate list of all running instances
CDWordArray arrInstances ;
VERIFY ( m_instanceManager . GetInstanceCollection ( arrInstances ) ) ;
ASSERT ( arrInstances . GetSize ( ) = = nInstanceRunningCount ) ;
DWORD dwCurrentPID = m_instanceManager . GetCurrentInstanceID ( ) ;
for ( int nIndex = 0 ; nIndex < nInstanceRunningCount ; nIndex + + )
{
CString sItem ;
sItem . Format ( IDS_OX_CSTMZEINSTANCEINSTANCEF , nIndex + 1 ) ; //"Instance %d"
VERIFY ( m_listInstances . InsertItem ( nIndex , sItem ) = = nIndex ) ;
CString sPID ;
sPID . Format ( _T ( " %d " ) , arrInstances [ nIndex ] ) ;
m_listInstances . SetItemText ( nIndex , 1 , sPID ) ;
VERIFY ( sItem . LoadString ( IDS_OX_CSTMZEINSTANCECURRENT ) ) ; //"Current"
if ( arrInstances [ nIndex ] = = dwCurrentPID )
m_listInstances . SetItemText ( nIndex , 2 , sItem ) ;
m_listInstances . SetItemData ( nIndex , ( LPARAM ) arrInstances [ nIndex ] ) ;
}
if ( nSelectedItem > = 0 & & nSelectedItem < m_listInstances . GetItemCount ( ) )
{
m_listInstances . SetItemState ( nSelectedItem , LVIS_SELECTED | LVIS_FOCUSED ,
LVIS_SELECTED | LVIS_FOCUSED ) ;
}
}
void COXCustomizeInstanceManagerPage : : ShowVars ( )
{
if ( ! m_bInitialized )
return ;
if ( ! UpdateData ( TRUE ) )
return ;
GetDlgItem ( IDC_OX_EDIT_LIMIT_NUMBER ) - > EnableWindow ( m_nInstanceLimitType = = 2 ) ;
GetDlgItem ( IDC_OX_SPIN_LIMIT_NUMBER ) - > EnableWindow ( m_nInstanceLimitType = = 2 ) ;
# if _MFC_VER > 0x0421
POSITION pos = m_listInstances . GetFirstSelectedItemPosition ( ) ;
# else
ASSERT ( : : IsWindow ( m_listInstances . m_hWnd ) ) ;
POSITION pos = ( POSITION ) ( 1 + m_listInstances . GetNextItem ( - 1 , LVIS_SELECTED ) ) ;
# endif
if ( pos ! = NULL )
{
# if _MFC_VER > 0x0421
int nSelectedItem = m_listInstances . GetNextSelectedItem ( pos ) ;
# else
ASSERT ( : : IsWindow ( m_listInstances . m_hWnd ) ) ;
int nSelectedItem = ( int ) pos - 1 ;
POSITION npos = ( POSITION ) ( 1 + m_listInstances . GetNextItem ( nSelectedItem , LVIS_SELECTED ) ) ;
# endif
ASSERT ( pos = = NULL ) ;
ASSERT ( nSelectedItem ! = - 1 ) ;
DWORD_PTR dwPID = m_listInstances . GetItemData ( nSelectedItem ) ;
BOOL bCurrentInstance = ( dwPID = = m_instanceManager . GetCurrentInstanceID ( ) ) ;
GetDlgItem ( IDC_OX_BUTTON_CLOSE ) - > EnableWindow ( TRUE ) ;
GetDlgItem ( IDC_OX_BUTTON_SWITCH_TO ) - > EnableWindow ( ! bCurrentInstance ) ;
GetDlgItem ( IDC_OX_BUTTON_BRING_TO_FRONT ) - > EnableWindow ( ! bCurrentInstance ) ;
DWORD dwStyle =
: : GetWindowLongPtr ( m_instanceManager . GetMainWindow ( dwPID ) , GWL_STYLE ) ;
BOOL bSysMenu = ( dwStyle & WS_SYSMENU ) ! = 0 ;
BOOL bMaximizeBtn = bSysMenu & ( ( dwStyle & WS_MAXIMIZEBOX ) ! = 0 ) ;
BOOL bCanMaximize = bMaximizeBtn & ( ( dwStyle & WS_MAXIMIZE ) = = 0 ) ;
BOOL bMinimizeBtn = bSysMenu & ( ( dwStyle & WS_MINIMIZEBOX ) ! = 0 ) ;
BOOL bCanMinimize = bMinimizeBtn & ( ( dwStyle & WS_MINIMIZE ) = = 0 ) ;
GetDlgItem ( IDC_OX_BUTTON_MAXIMIZE ) - > EnableWindow ( bCanMaximize ) ;
GetDlgItem ( IDC_OX_BUTTON_MINIMIZE ) - > EnableWindow ( bCanMinimize ) ;
GetDlgItem ( IDC_OX_BUTTON_RESTORE ) - >
EnableWindow ( ! ( ( bCanMaximize & & bCanMinimize ) | |
( ! bMaximizeBtn & & bCanMinimize ) | | ! bSysMenu ) ) ;
}
else
{
GetDlgItem ( IDC_OX_BUTTON_CLOSE ) - > EnableWindow ( FALSE ) ;
GetDlgItem ( IDC_OX_BUTTON_SWITCH_TO ) - > EnableWindow ( FALSE ) ;
GetDlgItem ( IDC_OX_BUTTON_BRING_TO_FRONT ) - > EnableWindow ( FALSE ) ;
GetDlgItem ( IDC_OX_BUTTON_MAXIMIZE ) - > EnableWindow ( FALSE ) ;
GetDlgItem ( IDC_OX_BUTTON_MINIMIZE ) - > EnableWindow ( FALSE ) ;
GetDlgItem ( IDC_OX_BUTTON_RESTORE ) - > EnableWindow ( FALSE ) ;
}
}
void COXCustomizeInstanceManagerPage : : OnChangeEditLimitNumber ( )
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the COXCustomizePage::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
if ( ! m_bInitialized )
return ;
if ( ! UpdateData ( TRUE ) )
return ;
}
void COXCustomizeInstanceManagerPage : : OnItemchangedListInstances ( NMHDR * pNMHDR ,
LRESULT * pResult )
{
NM_LISTVIEW * pNMListView = ( NM_LISTVIEW * ) pNMHDR ;
UNREFERENCED_PARAMETER ( pNMListView ) ;
// TODO: Add your control notification handler code here
ShowVars ( ) ;
* pResult = 0 ;
}
// v9.3 - update 03 - 64-bit - using OXTPARAM here - see UTB64Bit.h
void COXCustomizeInstanceManagerPage : : OnTimer ( OXTPARAM nIDEvent )
{
// TODO: Add your message handler code here and/or call default
if ( nIDEvent = = m_nTimerCheckInstancesID )
{
int nNewInstanceCount = m_instanceManager . GetNumberOfInstances ( ) ;
if ( nNewInstanceCount ! = m_listInstances . GetItemCount ( ) )
{
PopulateInstancesList ( ) ;
}
return ;
}
COXCustomizePage : : OnTimer ( nIDEvent ) ;
}
void COXCustomizeInstanceManagerPage : : OnDestroy ( )
{
COXCustomizePage : : OnDestroy ( ) ;
// TODO: Add your message handler code here
if ( m_nTimerCheckInstancesID ! = 0 )
{
KillTimer ( m_nTimerCheckInstancesID ) ;
m_nTimerCheckInstancesID = 0 ;
}
}
void COXCustomizeInstanceManagerPage : : OnButtonBringToFront ( )
{
// TODO: Add your control notification handler code here
# if _MFC_VER > 0x0421
POSITION pos = m_listInstances . GetFirstSelectedItemPosition ( ) ;
# else
ASSERT ( : : IsWindow ( m_listInstances . m_hWnd ) ) ;
POSITION pos = ( POSITION ) ( 1 + m_listInstances . GetNextItem ( - 1 , LVIS_SELECTED ) ) ;
# endif
ASSERT ( pos ! = NULL ) ;
# if _MFC_VER > 0x0421
int nSelectedItem = m_listInstances . GetNextSelectedItem ( pos ) ;
# else
ASSERT ( : : IsWindow ( m_listInstances . m_hWnd ) ) ;
int nSelectedItem = ( int ) pos - 1 ;
POSITION npos = ( POSITION ) ( 1 + m_listInstances . GetNextItem ( nSelectedItem , LVIS_SELECTED ) ) ;
# endif
ASSERT ( pos = = NULL ) ;
ASSERT ( nSelectedItem ! = - 1 ) ;
DWORD_PTR dwPID = m_listInstances . GetItemData ( nSelectedItem ) ;
BOOL bCurrentInstance = ( dwPID = = m_instanceManager . GetCurrentInstanceID ( ) ) ;
ASSERT ( ! bCurrentInstance ) ;
HWND hWnd = ( HWND ) ( DWORD_PTR ) m_instanceManager . GetMainWindow ( dwPID ) ;
if ( : : GetWindowLongPtr ( hWnd , GWL_STYLE ) & WS_MINIMIZE )
{
OnButtonRestore ( ) ;
AfxGetMainWnd ( ) - > SetForegroundWindow ( ) ;
}
else
{
: : SetWindowPos ( hWnd , AfxGetMainWnd ( ) - > GetSafeHwnd ( ) , 0 , 0 , 0 , 0 ,
SWP_SHOWWINDOW | SWP_ASYNCWINDOWPOS | SWP_NOACTIVATE |
SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW ) ;
}
ShowVars ( ) ;
}
void COXCustomizeInstanceManagerPage : : OnButtonClose ( )
{
// TODO: Add your control notification handler code here
# if _MFC_VER > 0x0421
POSITION pos = m_listInstances . GetFirstSelectedItemPosition ( ) ;
# else
ASSERT ( : : IsWindow ( m_listInstances . m_hWnd ) ) ;
POSITION pos = ( POSITION ) ( 1 + m_listInstances . GetNextItem ( - 1 , LVIS_SELECTED ) ) ;
# endif
ASSERT ( pos ! = NULL ) ;
# if _MFC_VER > 0x0421
int nSelectedItem = m_listInstances . GetNextSelectedItem ( pos ) ;
# else
ASSERT ( : : IsWindow ( m_listInstances . m_hWnd ) ) ;
int nSelectedItem = ( int ) pos - 1 ;
POSITION npos = ( POSITION ) ( 1 + m_listInstances . GetNextItem ( nSelectedItem , LVIS_SELECTED ) ) ;
# endif
ASSERT ( pos = = NULL ) ;
ASSERT ( nSelectedItem ! = - 1 ) ;
DWORD_PTR dwPID = m_listInstances . GetItemData ( nSelectedItem ) ;
VERIFY ( m_instanceManager . CloseInstance ( dwPID ) ) ;
ShowVars ( ) ;
}
void COXCustomizeInstanceManagerPage : : OnButtonMaximize ( )
{
// TODO: Add your control notification handler code here
# if _MFC_VER > 0x0421
POSITION pos = m_listInstances . GetFirstSelectedItemPosition ( ) ;
# else
ASSERT ( : : IsWindow ( m_listInstances . m_hWnd ) ) ;
POSITION pos = ( POSITION ) ( 1 + m_listInstances . GetNextItem ( - 1 , LVIS_SELECTED ) ) ;
# endif
ASSERT ( pos ! = NULL ) ;
# if _MFC_VER > 0x0421
int nSelectedItem = m_listInstances . GetNextSelectedItem ( pos ) ;
# else
ASSERT ( : : IsWindow ( m_listInstances . m_hWnd ) ) ;
int nSelectedItem = ( int ) pos - 1 ;
POSITION npos = ( POSITION ) ( 1 + m_listInstances . GetNextItem ( nSelectedItem , LVIS_SELECTED ) ) ;
# endif
ASSERT ( pos = = NULL ) ;
ASSERT ( nSelectedItem ! = - 1 ) ;
DWORD_PTR dwPID = m_listInstances . GetItemData ( nSelectedItem ) ;
HWND hWnd = m_instanceManager . GetMainWindow ( dwPID ) ;
if ( : : GetWindowLongPtr ( hWnd , GWL_STYLE ) & WS_MINIMIZE )
{
: : SendMessage ( hWnd , WM_SYSCOMMAND , SC_MAXIMIZE , ( LPARAM ) hWnd ) ;
AfxGetMainWnd ( ) - > SetForegroundWindow ( ) ;
}
else
{
: : SendMessage ( hWnd , WM_SYSCOMMAND , SC_MAXIMIZE , ( LPARAM ) hWnd ) ;
}
ShowVars ( ) ;
}
void COXCustomizeInstanceManagerPage : : OnButtonMinimize ( )
{
// TODO: Add your control notification handler code here
# if _MFC_VER > 0x0421
POSITION pos = m_listInstances . GetFirstSelectedItemPosition ( ) ;
# else
ASSERT ( : : IsWindow ( m_listInstances . m_hWnd ) ) ;
POSITION pos = ( POSITION ) ( 1 + m_listInstances . GetNextItem ( - 1 , LVIS_SELECTED ) ) ;
# endif
ASSERT ( pos ! = NULL ) ;
# if _MFC_VER > 0x0421
int nSelectedItem = m_listInstances . GetNextSelectedItem ( pos ) ;
# else
ASSERT ( : : IsWindow ( m_listInstances . m_hWnd ) ) ;
int nSelectedItem = ( int ) pos - 1 ;
POSITION npos = ( POSITION ) ( 1 + m_listInstances . GetNextItem ( nSelectedItem , LVIS_SELECTED ) ) ;
# endif
ASSERT ( pos = = NULL ) ;
ASSERT ( nSelectedItem ! = - 1 ) ;
DWORD_PTR dwPID = m_listInstances . GetItemData ( nSelectedItem ) ;
HWND hWnd = m_instanceManager . GetMainWindow ( dwPID ) ;
: : SendMessage ( hWnd , WM_SYSCOMMAND , SC_MINIMIZE , ( LPARAM ) hWnd ) ;
ShowVars ( ) ;
}
void COXCustomizeInstanceManagerPage : : OnButtonRestore ( )
{
// TODO: Add your control notification handler code here
# if _MFC_VER > 0x0421
POSITION pos = m_listInstances . GetFirstSelectedItemPosition ( ) ;
# else
ASSERT ( : : IsWindow ( m_listInstances . m_hWnd ) ) ;
POSITION pos = ( POSITION ) ( 1 + m_listInstances . GetNextItem ( - 1 , LVIS_SELECTED ) ) ;
# endif
ASSERT ( pos ! = NULL ) ;
# if _MFC_VER > 0x0421
int nSelectedItem = m_listInstances . GetNextSelectedItem ( pos ) ;
# else
ASSERT ( : : IsWindow ( m_listInstances . m_hWnd ) ) ;
int nSelectedItem = ( int ) pos - 1 ;
POSITION npos = ( POSITION ) ( 1 + m_listInstances . GetNextItem ( nSelectedItem , LVIS_SELECTED ) ) ;
# endif
ASSERT ( pos = = NULL ) ;
ASSERT ( nSelectedItem ! = - 1 ) ;
DWORD_PTR dwPID = m_listInstances . GetItemData ( nSelectedItem ) ;
HWND hWnd = m_instanceManager . GetMainWindow ( dwPID ) ;
if ( : : GetWindowLongPtr ( hWnd , GWL_STYLE ) & WS_MINIMIZE )
{
: : SendMessage ( hWnd , WM_SYSCOMMAND , SC_RESTORE , ( LPARAM ) hWnd ) ;
AfxGetMainWnd ( ) - > SetForegroundWindow ( ) ;
}
else
{
: : SendMessage ( hWnd , WM_SYSCOMMAND , SC_RESTORE , ( LPARAM ) hWnd ) ;
}
ShowVars ( ) ;
}
void COXCustomizeInstanceManagerPage : : OnButtonSwitchTo ( )
{
// TODO: Add your control notification handler code here
# if _MFC_VER > 0x0421
POSITION pos = m_listInstances . GetFirstSelectedItemPosition ( ) ;
# else
ASSERT ( : : IsWindow ( m_listInstances . m_hWnd ) ) ;
POSITION pos = ( POSITION ) ( 1 + m_listInstances . GetNextItem ( - 1 , LVIS_SELECTED ) ) ;
# endif
ASSERT ( pos ! = NULL ) ;
# if _MFC_VER > 0x0421
int nSelectedItem = m_listInstances . GetNextSelectedItem ( pos ) ;
# else
ASSERT ( : : IsWindow ( m_listInstances . m_hWnd ) ) ;
int nSelectedItem = ( int ) pos - 1 ;
POSITION npos = ( POSITION ) ( 1 + m_listInstances . GetNextItem ( nSelectedItem , LVIS_SELECTED ) ) ;
# endif
ASSERT ( pos = = NULL ) ;
ASSERT ( nSelectedItem ! = - 1 ) ;
DWORD_PTR dwPID = m_listInstances . GetItemData ( nSelectedItem ) ;
BOOL bCurrentInstance = ( dwPID = = m_instanceManager . GetCurrentInstanceID ( ) ) ;
ASSERT ( ! bCurrentInstance ) ;
HWND hWnd = m_instanceManager . GetMainWindow ( dwPID ) ;
: : SetForegroundWindow ( hWnd ) ;
if ( : : GetWindowLongPtr ( hWnd , GWL_STYLE ) & WS_MINIMIZE )
{
: : SendMessage ( hWnd , WM_SYSCOMMAND , SC_RESTORE , ( LPARAM ) hWnd ) ;
}
ShowVars ( ) ;
}