ReactOS  0.4.14-dev-1338-g0d187f7
ATL::CWindowImplBaseT< TBase, TWinTraits > Class Template Reference

#include <atlwin.h>

Inheritance diagram for ATL::CWindowImplBaseT< TBase, TWinTraits >:
Collaboration diagram for ATL::CWindowImplBaseT< TBase, TWinTraits >:

Public Member Functions

 CWindowImplBaseT ()
 
virtual void OnFinalMessage (HWND)
 
BOOL SubclassWindow (HWND hWnd)
 
virtual WNDPROC GetWindowProc ()
 
LRESULT DefWindowProc (UINT uMsg, WPARAM wParam, LPARAM lParam)
 
HWND Create (HWND hWndParent, _U_RECT rect, LPCTSTR szWindowName, DWORD dwStyle, DWORD dwExStyle, _U_MENUorID MenuOrID, ATOM atom, LPVOID lpCreateParam)
 
- Public Member Functions inherited from ATL::CWindowImplRoot< TBase >
 CWindowImplRoot ()
 
virtual ~CWindowImplRoot ()
 
- Public Member Functions inherited from ATL::CMessageMap
virtual BOOL ProcessWindowMessage (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &lResult, DWORD dwMsgMapID)=0
 

Static Public Member Functions

static DWORD GetWndStyle (DWORD dwStyle)
 
static DWORD GetWndExStyle (DWORD dwExStyle)
 
static LRESULT CALLBACK StartWindowProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static LRESULT CALLBACK WindowProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 

Public Attributes

WNDPROC m_pfnSuperWindowProc
 
- Public Attributes inherited from ATL::CWindowImplRoot< TBase >
CWndProcThunk m_thunk
 
const _ATL_MSGm_pCurrentMsg
 
DWORD m_dwState
 

Additional Inherited Members

- Public Types inherited from ATL::CWindowImplRoot< TBase >
enum  { WINSTATE_DESTROYED = 0x00000001 }
 

Detailed Description

template<class TBase = CWindow, class TWinTraits = CControlWinTraits>
class ATL::CWindowImplBaseT< TBase, TWinTraits >

Definition at line 1462 of file atlwin.h.

Constructor & Destructor Documentation

◆ CWindowImplBaseT()

template<class TBase = CWindow, class TWinTraits = CControlWinTraits>
ATL::CWindowImplBaseT< TBase, TWinTraits >::CWindowImplBaseT ( )
inline

Definition at line 1474 of file atlwin.h.

1475  {
1477  }
LRESULT DefWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1522
WNDPROC m_pfnSuperWindowProc
Definition: atlwin.h:1471

Member Function Documentation

◆ Create()

template<class TBase = CWindow, class TWinTraits = CControlWinTraits>
HWND ATL::CWindowImplBaseT< TBase, TWinTraits >::Create ( HWND  hWndParent,
_U_RECT  rect,
LPCTSTR  szWindowName,
DWORD  dwStyle,
DWORD  dwExStyle,
_U_MENUorID  MenuOrID,
ATOM  atom,
LPVOID  lpCreateParam 
)
inline

Definition at line 1592 of file atlwin.h.

1594  {
1595  HWND hWnd;
1596 
1597  ATLASSERT(m_hWnd == NULL);
1598  ATLASSERT(atom != 0);
1599  if (atom == 0)
1600  return NULL;
1601  if (m_thunk.Init(NULL, NULL) == FALSE)
1602  {
1604  return NULL;
1605  }
1606 
1607  _AtlWinModule.AddCreateWndData(&m_thunk.cd, this);
1608  if (MenuOrID.m_hMenu == NULL && (dwStyle & WS_CHILD) != 0)
1609  MenuOrID.m_hMenu = (HMENU)(UINT_PTR)this;
1610  if (rect.m_lpRect == NULL)
1611  rect.m_lpRect = &TBase::rcDefault;
1612  hWnd = ::CreateWindowEx(dwExStyle, reinterpret_cast<LPCWSTR>(MAKEINTATOM(atom)), szWindowName, dwStyle, rect.m_lpRect->left,
1613  rect.m_lpRect->top, rect.m_lpRect->right - rect.m_lpRect->left, rect.m_lpRect->bottom - rect.m_lpRect->top,
1614  hWndParent, MenuOrID.m_hMenu, _AtlBaseModule.GetModuleInstance(), lpCreateParam);
1615 
1616  ATLASSERT(m_hWnd == hWnd);
1617 
1618  return hWnd;
1619  }
#define ATLASSERT(x)
Definition: CComVariant.cpp:10
HWND hWnd
Definition: settings.c:17
#define WS_CHILD
Definition: pedump.c:617
_AtlCreateWndData cd
Definition: atlwin.h:231
& rect
Definition: startmenu.cpp:1413
BOOL Init(WNDPROC proc, void *pThis)
Definition: atlwin.h:245
#define CreateWindowEx
Definition: winuser.h:5730
smooth NULL
Definition: ftsmooth.c:416
#define SetLastError(x)
Definition: compat.h:417
unsigned __int3264 UINT_PTR
Definition: mstsclib_h.h:274
CWndProcThunk m_thunk
Definition: atlwin.h:1311
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
#define MAKEINTATOM(i)
Definition: winbase.h:1429
#define ERROR_OUTOFMEMORY
Definition: deptool.c:13

Referenced by ATL::CWindowImpl< CShellBrowser, CWindow, CFrameWinTraits >::Create().

◆ DefWindowProc()

template<class TBase = CWindow, class TWinTraits = CControlWinTraits>
LRESULT ATL::CWindowImplBaseT< TBase, TWinTraits >::DefWindowProc ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
inline

Definition at line 1522 of file atlwin.h.

1523  {
1524  CWindowImplBaseT<TBase, TWinTraits> *pThis;
1525 
1526  pThis = reinterpret_cast<CWindowImplBaseT<TBase, TWinTraits> *>(this);
1528  }
#define CallWindowProc
Definition: winuser.h:5710
WPARAM wParam
Definition: combotst.c:138
WNDPROC m_pfnSuperWindowProc
Definition: atlwin.h:1471
LPARAM lParam
Definition: combotst.c:139

Referenced by ATL::CWindowImplBaseT< CToolbar< TASK_ITEM >, CControlWinTraits >::CWindowImplBaseT(), CShellBrowser::WindowProc(), and ATL::CWindowImplBaseT< CToolbar< TASK_ITEM >, CControlWinTraits >::WindowProc().

◆ GetWindowProc()

template<class TBase = CWindow, class TWinTraits = CControlWinTraits>
virtual WNDPROC ATL::CWindowImplBaseT< TBase, TWinTraits >::GetWindowProc ( )
inlinevirtual

Reimplemented in CShellBrowser, and CDefView.

Definition at line 1507 of file atlwin.h.

1508  {
1509  return WindowProc;
1510  }
static LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1548

Referenced by ATL::CWindowImplBaseT< CToolbar< TASK_ITEM >, CControlWinTraits >::StartWindowProc(), and ATL::CWindowImplBaseT< CToolbar< TASK_ITEM >, CControlWinTraits >::SubclassWindow().

◆ GetWndExStyle()

template<class TBase = CWindow, class TWinTraits = CControlWinTraits>
static DWORD ATL::CWindowImplBaseT< TBase, TWinTraits >::GetWndExStyle ( DWORD  dwExStyle)
inlinestatic

Definition at line 1517 of file atlwin.h.

1518  {
1519  return TWinTraits::GetWndExStyle(dwExStyle);
1520  }

◆ GetWndStyle()

template<class TBase = CWindow, class TWinTraits = CControlWinTraits>
static DWORD ATL::CWindowImplBaseT< TBase, TWinTraits >::GetWndStyle ( DWORD  dwStyle)
inlinestatic

Definition at line 1512 of file atlwin.h.

1513  {
1514  return TWinTraits::GetWndStyle(dwStyle);
1515  }

◆ OnFinalMessage()

template<class TBase = CWindow, class TWinTraits = CControlWinTraits>
virtual void ATL::CWindowImplBaseT< TBase, TWinTraits >::OnFinalMessage ( HWND  )
inlinevirtual

◆ StartWindowProc()

template<class TBase = CWindow, class TWinTraits = CControlWinTraits>
static LRESULT CALLBACK ATL::CWindowImplBaseT< TBase, TWinTraits >::StartWindowProc ( HWND  hWnd,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
inlinestatic

Definition at line 1530 of file atlwin.h.

1531  {
1532  CWindowImplBaseT<TBase, TWinTraits> *pThis;
1533  WNDPROC newWindowProc;
1534  WNDPROC GCCU(pOldProc);
1535 
1536  pThis = reinterpret_cast<CWindowImplBaseT<TBase, TWinTraits> *>(_AtlWinModule.ExtractCreateWndData());
1537  ATLASSERT(pThis != NULL);
1538  if (pThis == NULL)
1539  return 0;
1540  pThis->m_thunk.Init(pThis->GetWindowProc(), pThis);
1541  newWindowProc = pThis->m_thunk.GetWNDPROC();
1542  pOldProc = reinterpret_cast<WNDPROC>(::SetWindowLongPtr(hWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(newWindowProc)));
1543  Unused(pOldProc); // TODO: should generate trace message if overwriting another subclass
1544  pThis->m_hWnd = hWnd;
1545  return newWindowProc(hWnd, uMsg, wParam, lParam);
1546  }
#define ATLASSERT(x)
Definition: CComVariant.cpp:10
HWND hWnd
Definition: settings.c:17
#define SetWindowLongPtr
Definition: treelist.c:70
WPARAM wParam
Definition: combotst.c:138
smooth NULL
Definition: ftsmooth.c:416
#define GWLP_WNDPROC
Definition: treelist.c:66
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2881
#define GCCU(x)
Definition: atlwin.h:27
LPARAM lParam
Definition: combotst.c:139
#define Unused(x)
Definition: atlwin.h:28

◆ SubclassWindow()

template<class TBase = CWindow, class TWinTraits = CControlWinTraits>
BOOL ATL::CWindowImplBaseT< TBase, TWinTraits >::SubclassWindow ( HWND  hWnd)
inline

Definition at line 1483 of file atlwin.h.

1484  {
1485  CWindowImplBaseT<TBase, TWinTraits> *pThis;
1486  WNDPROC newWindowProc;
1487  WNDPROC oldWindowProc;
1488  BOOL result;
1489 
1490  ATLASSERT(m_hWnd == NULL);
1491  ATLASSERT(::IsWindow(hWnd));
1492 
1493  pThis = reinterpret_cast<CWindowImplBaseT<TBase, TWinTraits>*>(this);
1494 
1495  result = m_thunk.Init(GetWindowProc(), this);
1496  if (result == FALSE)
1497  return FALSE;
1498  newWindowProc = m_thunk.GetWNDPROC();
1499  oldWindowProc = reinterpret_cast<WNDPROC>(::SetWindowLongPtr(hWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(newWindowProc)));
1500  if (oldWindowProc == NULL)
1501  return FALSE;
1502  m_pfnSuperWindowProc = oldWindowProc;
1503  pThis->m_hWnd = hWnd;
1504  return TRUE;
1505  }
#define TRUE
Definition: types.h:120
BOOL WINAPI IsWindow(_In_opt_ HWND)
#define ATLASSERT(x)
Definition: CComVariant.cpp:10
HWND hWnd
Definition: settings.c:17
WNDPROC GetWNDPROC()
Definition: atlwin.h:253
#define SetWindowLongPtr
Definition: treelist.c:70
BOOL Init(WNDPROC proc, void *pThis)
Definition: atlwin.h:245
unsigned int BOOL
Definition: ntddk_ex.h:94
smooth NULL
Definition: ftsmooth.c:416
virtual WNDPROC GetWindowProc()
Definition: atlwin.h:1507
#define GWLP_WNDPROC
Definition: treelist.c:66
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2881
CWndProcThunk m_thunk
Definition: atlwin.h:1311
WNDPROC m_pfnSuperWindowProc
Definition: atlwin.h:1471
GLuint64EXT * result
Definition: glext.h:11304

Referenced by CDownloadManager::DownloadDlgProc().

◆ WindowProc()

template<class TBase = CWindow, class TWinTraits = CControlWinTraits>
static LRESULT CALLBACK ATL::CWindowImplBaseT< TBase, TWinTraits >::WindowProc ( HWND  hWnd,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
inlinestatic

Definition at line 1548 of file atlwin.h.

1549  {
1550  CWindowImplBaseT<TBase, TWinTraits> *pThis = reinterpret_cast<CWindowImplBaseT< TBase, TWinTraits> *>(hWnd);
1551  _ATL_MSG msg(pThis->m_hWnd, uMsg, wParam, lParam);
1552  LRESULT lResult;
1553  const _ATL_MSG *previousMessage;
1554  BOOL handled;
1555  LONG_PTR saveWindowProc;
1556 
1557  ATLASSERT(pThis != NULL && (pThis->m_dwState & WINSTATE_DESTROYED) == 0 && pThis->m_hWnd != NULL);
1558  if (pThis == NULL || (pThis->m_dwState & WINSTATE_DESTROYED) != 0 || pThis->m_hWnd == NULL)
1559  return 0;
1560 
1561  hWnd = pThis->m_hWnd;
1562  previousMessage = pThis->m_pCurrentMsg;
1563  pThis->m_pCurrentMsg = &msg;
1564 
1565  handled = pThis->ProcessWindowMessage(hWnd, uMsg, wParam, lParam, lResult, 0);
1566  ATLASSERT(pThis->m_pCurrentMsg == &msg);
1567 
1568  if (handled == FALSE)
1569  {
1570  if (uMsg == WM_NCDESTROY)
1571  {
1572  saveWindowProc = ::GetWindowLongPtr(hWnd, GWLP_WNDPROC);
1573  lResult = pThis->DefWindowProc(uMsg, wParam, lParam);
1574  if (pThis->m_pfnSuperWindowProc != ::DefWindowProc && saveWindowProc == ::GetWindowLongPtr(hWnd, GWLP_WNDPROC))
1575  ::SetWindowLongPtr(hWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(pThis->m_pfnSuperWindowProc));
1576  pThis->m_dwState |= WINSTATE_DESTROYED;
1577  }
1578  else
1579  lResult = pThis->DefWindowProc(uMsg, wParam, lParam);
1580  }
1581  ATLASSERT(pThis->m_pCurrentMsg == &msg);
1582  pThis->m_pCurrentMsg = previousMessage;
1583  if (previousMessage == NULL && (pThis->m_dwState & WINSTATE_DESTROYED) != 0)
1584  {
1585  pThis->m_dwState &= ~WINSTATE_DESTROYED;
1586  pThis->m_hWnd = NULL;
1587  pThis->OnFinalMessage(hWnd);
1588  }
1589  return lResult;
1590  }
#define ATLASSERT(x)
Definition: CComVariant.cpp:10
HWND hWnd
Definition: settings.c:17
#define SetWindowLongPtr
Definition: treelist.c:70
WPARAM wParam
Definition: combotst.c:138
LRESULT DefWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1522
unsigned int BOOL
Definition: ntddk_ex.h:94
smooth NULL
Definition: ftsmooth.c:416
#define WM_NCDESTROY
Definition: winuser.h:1666
#define GWLP_WNDPROC
Definition: treelist.c:66
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define msg(x)
Definition: auth_time.c:54
#define GetWindowLongPtr
Definition: treelist.c:73
LONG_PTR LRESULT
Definition: windef.h:209
LPARAM lParam
Definition: combotst.c:139

Referenced by ATL::CWindowImplBaseT< CToolbar< TASK_ITEM >, CControlWinTraits >::GetWindowProc().

Member Data Documentation

◆ m_pfnSuperWindowProc


The documentation for this class was generated from the following file: