Method cast for WTL classes





1.00/5 (12 votes)
Feb 12, 2006

27150
Method cast for WTL classes
Introduction
There is often a need to obtain the base class function from a parameter of the type HWND. How can this be done, if it is not possible to use the static_cast method ?
This problem can be solved sufficiently simply for MFC. For example, for CScrollView, you should obtain the function method GetScrollPosition(). This is solved simply for MFC: CMyClass::MyFunction(HWND hWnd) { CScrollView * p = (CScrollView *) CScrollView::FromHandle(hWnd); CPoint ptScroll = pScroll->GetScrollPosition(); } How can the analogous problem be solved in WTL?. Let us assume we need to obtain the function void GetScrollOffset( POINT& ptOffset) public class CScrollWindowImpl from a parameter of the type hWnd. We create the prototype of the class of the parameter. class CScrollView : public CScrollWindowImpl<CScrollView> { public: CScrollView(HWND hWnd){ m_hWnd = hWnd; } }; And then in MyFunction method we make CMyClass::MyFunction(HWND hWnd) { …… CScrollView tScroll(hWnd); POINT pt; tScroll.GetScrollOffset(pt); WTL::CPoint ptScroll(pt); }