WTL 类的方法转换





1.00/5 (12投票s)
2006年2月12日

27670
WTL 类的方法转换
引言
通常需要从类型为 HWND 的参数中获取基类函数。如果无法使用 static_cast 方法,该如何操作?
对于 MFC,可以相当简单地解决这个问题。例如,对于 CScrollView,您应该获取函数方法 GetScrollPosition()。对于 MFC,这可以简单地解决:
CMyClass::MyFunction(HWND hWnd)
{
CScrollView * p = (CScrollView *) CScrollView::FromHandle(hWnd);
CPoint ptScroll = pScroll->GetScrollPosition();
}
如何在 WTL 中解决类似的问题?
假设我们需要获取函数
voidGetScrollOffset( POINT& ptOffset)
来自类型为 hWnd 的参数的 public class CScrollWindowImpl。
class CScrollView : public CScrollWindowImpl<CScrollView>
{
public:
CScrollView(HWND hWnd){ m_hWnd = hWnd; }
};
然后在 MyFunction 方法中,我们执行
CMyClass::MyFunction(HWND hWnd)
{
……
CScrollView tScroll(hWnd);
POINT pt;
tScroll.GetScrollOffset(pt);
WTL::CPoint ptScroll(pt);
}