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.
 
 
 
 
 
 

248 lines
5.9 KiB

/*--------------------------------------------------------------------------*
*
* Microsoft Windows
* Copyright (C) Microsoft Corporation, 1992 - 1999
*
* File: wrapper.cpp
*
* Contents: Implementation file for simple wrapper classes
*
* History: 02-Feb-98 jeffro Created
*
*--------------------------------------------------------------------------*/
#include "stdafx.h"
#include "wrapper.h"
/*+-------------------------------------------------------------------------*
* CAccel::CAccel
*
*
*--------------------------------------------------------------------------*/
CAccel::CAccel (HACCEL hAccel /* =NULL */)
:
m_hAccel (hAccel)
{
}
CAccel::CAccel (LPACCEL paccl, int cEntries)
:
m_hAccel (::CreateAcceleratorTable (paccl, cEntries))
{
}
/*+-------------------------------------------------------------------------*
* CAccel::~CAccel
*
*
*--------------------------------------------------------------------------*/
CAccel::~CAccel ()
{
DestroyAcceleratorTable ();
}
/*+-------------------------------------------------------------------------*
* CAccel::CreateAcceleratorTable
*
*
*--------------------------------------------------------------------------*/
bool CAccel::CreateAcceleratorTable (LPACCEL paccl, int cEntries)
{
DestroyAcceleratorTable ();
ASSERT (m_hAccel == NULL);
if(paccl != NULL)
m_hAccel = ::CreateAcceleratorTable (paccl, cEntries);
return (m_hAccel != NULL);
}
/*+-------------------------------------------------------------------------*
* CAccel::CopyAcceleratorTable
*
*
*--------------------------------------------------------------------------*/
int CAccel::CopyAcceleratorTable (LPACCEL paccl, int cEntries) const
{
return (::CopyAcceleratorTable (m_hAccel, paccl, cEntries));
}
/*+-------------------------------------------------------------------------*
* CAccel::DestroyAcceleratorTable
*
*
*--------------------------------------------------------------------------*/
void CAccel::DestroyAcceleratorTable ()
{
if (m_hAccel != NULL)
{
::DestroyAcceleratorTable (m_hAccel);
m_hAccel = NULL;
}
}
/*+-------------------------------------------------------------------------*
* CAccel::LoadAccelerators
*
*
*--------------------------------------------------------------------------*/
bool CAccel::LoadAccelerators (int nAccelID)
{
return (LoadAccelerators (MAKEINTRESOURCE (nAccelID)));
}
/*+-------------------------------------------------------------------------*
* CAccel::LoadAccelerators
*
*
*--------------------------------------------------------------------------*/
bool CAccel::LoadAccelerators (LPCTSTR pszAccelName)
{
HINSTANCE hInst = AfxFindResourceHandle (pszAccelName, RT_ACCELERATOR);
return (LoadAccelerators (hInst, pszAccelName));
}
/*+-------------------------------------------------------------------------*
* CAccel::LoadAccelerators
*
*
*--------------------------------------------------------------------------*/
bool CAccel::LoadAccelerators (HINSTANCE hInst, LPCTSTR pszAccelName)
{
DestroyAcceleratorTable ();
ASSERT (m_hAccel == NULL);
m_hAccel = ::LoadAccelerators (hInst, pszAccelName);
return (m_hAccel != NULL);
}
/*+-------------------------------------------------------------------------*
* CAccel::TranslateAccelerator
*
*
*--------------------------------------------------------------------------*/
bool CAccel::TranslateAccelerator (HWND hwnd, LPMSG pmsg) const
{
return ((m_hAccel != NULL) &&
::TranslateAccelerator (hwnd, m_hAccel, pmsg));
}
/*+-------------------------------------------------------------------------*
* CDeferWindowPos::CDeferWindowPos
*
*
*--------------------------------------------------------------------------*/
CDeferWindowPos::CDeferWindowPos (
int cWindows,
bool fSynchronousPositioningForDebugging)
: m_hdwp (NULL),
m_fSynchronousPositioningForDebugging (fSynchronousPositioningForDebugging)
{
Begin (cWindows);
}
/*+-------------------------------------------------------------------------*
* CDeferWindowPos::~CDeferWindowPos
*
*
*--------------------------------------------------------------------------*/
CDeferWindowPos::~CDeferWindowPos ()
{
if (m_hdwp)
End();
}
/*+-------------------------------------------------------------------------*
* CDeferWindowPos::Begin
*
*
*--------------------------------------------------------------------------*/
bool CDeferWindowPos::Begin (int cWindows)
{
ASSERT (m_hdwp == NULL);
ASSERT (cWindows > 0);
m_hdwp = ::BeginDeferWindowPos (cWindows);
return (m_hdwp != NULL);
}
/*+-------------------------------------------------------------------------*
* CDeferWindowPos::End
*
*
*--------------------------------------------------------------------------*/
bool CDeferWindowPos::End ()
{
ASSERT (m_hdwp != NULL);
HDWP hdwp = m_hdwp;
m_hdwp = NULL;
if ( hdwp == NULL )
return false;
return (::EndDeferWindowPos (hdwp) != 0);
}
/*+-------------------------------------------------------------------------*
* CDeferWindowPos::AddWindow
*
*
*--------------------------------------------------------------------------*/
bool CDeferWindowPos::AddWindow (
const CWnd* pwnd,
const CRect& rect,
DWORD dwFlags,
const CWnd* pwndInsertAfter /* =NULL */)
{
ASSERT (IsWindow (pwnd->GetSafeHwnd()));
if (pwndInsertAfter == NULL)
dwFlags |= SWP_NOZORDER;
if ( m_hdwp == NULL )
return false;
m_hdwp = ::DeferWindowPos (m_hdwp,
pwnd->GetSafeHwnd(),
pwndInsertAfter->GetSafeHwnd(),
rect.left, rect.top,
rect.Width(), rect.Height(),
dwFlags);
#ifdef DBG
if (m_fSynchronousPositioningForDebugging)
{
End ();
Begin (1);
}
#endif
return (m_hdwp != NULL);
}