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.
 
 
 
 
 
 

82 lines
1.8 KiB

//+----------------------------------------------------------------------------
//
// File: cm_misc.h
//
// Module: CMDIAL32.DLL
//
// Synopsis: Implements the CFreezeWindow Class
//
// Copyright (c) 1998-1999 Microsoft Corporation
//
// Author: henryt Created 01/13/98
//
//+----------------------------------------------------------------------------
#ifndef _CM_MISC_INC
#define _CM_MISC_INC
extern HINSTANCE g_hInst; // the instance handle for resource
//
// A helper class to auto disable/enable window
// The constructor will disable the window, the distructor will enable the window
//
class CFreezeWindow
{
public:
CFreezeWindow(HWND hWnd, BOOL fDisableParent = FALSE)
{
//
// Disable the window
// To disable a property page, the property sheet also need to be disabled
//
m_hWnd = hWnd;
if (m_hWnd)
{
m_fDisableParent = fDisableParent;
//
// Store the currently focuse window
//
m_hFocusWnd = GetFocus();
EnableWindow(m_hWnd, FALSE);
if (fDisableParent)
{
EnableWindow(GetParent(m_hWnd), FALSE);
}
}
}
~CFreezeWindow()
{
if (m_hWnd)
{
EnableWindow(m_hWnd, TRUE);
if (m_fDisableParent)
{
EnableWindow(GetParent(m_hWnd), TRUE);
}
//
// Restore focus to the previously focuses window if any.
// Its just the right thing to do.
//
if (m_hFocusWnd)
{
SetFocus(m_hFocusWnd);
}
}
}
protected:
HWND m_hWnd;
HWND m_hFocusWnd;
BOOL m_fDisableParent;
};
#endif