65.9K
CodeProject is changing. Read more.
Home

Method cast for WTL classes

starIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

1.00/5 (12 votes)

Feb 12, 2006

viewsIcon

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);

     

}