WindowsXP-SP1/enduser/stuff/hhctrl/lockout.h

65 lines
1.4 KiB
C++

///////////////////////////////////////////////////////////
//
//
// lockout.h - Header file for CLockOut
//
//
/*
Before creating any dialog box. Create and instance of this class.
This class will disable all toplevel windows which are in the same process.
This prevents the user from distroying the window while a dialog box is up.
*/
#ifndef __LOCKOUT_H__
#define __LOCKOUT_H__
///////////////////////////////////////////////////////////
//
// constants
//
const int c_MaxWindows = 256 ;
///////////////////////////////////////////////////////////
//
//
class CLockOut
{
public:
// Construction
CLockOut() ;
virtual ~CLockOut() ;
// Main function.
void LockOut(HWND hwndOwner) ;
// Enable the windows.
void Unlock() ;
//--- Callbacks
private:
// Member callback
BOOL EnumWindowProc(HWND hwnd) ;
// Static callback
static BOOL CALLBACK s_EnumWindowProc(HWND hwnd, LPARAM lparam) ;
//--- Member Variables.
private:
// Array which holds the disabled top level windows.
HWND m_HwndDisabled[c_MaxWindows] ; //TODO: This array needs to grow.
// Status flag
bool m_bLocked ;
//--- Variables used in the EnumWindows Proc.
// Number of windows disabled.
int m_CountDisabled ;
// The process id of the dialogs app.
DWORD m_ProcessId ;
};
#endif // __LOCKOUT_H__