先敲一段代码先class CA:public CTreeView,CAExt<int>
{
void CTestView::OnInitialUpdate()
{
CTreeView::OnInitialUpdate();
CTreeViewExt<int>::OnInitialUpdate();
}
LONG CTestView::OnDataAvailable(WPARAM wParam, LPARAM lParam)
{
return CTreeViewExt<int>::OnDataAvailable(wParam, lParam);
}
//以下三个函数的具体实现过程省略
CTreeCtrl& GetTreeCtrl() const { return CTreeView::GetTreeCtrl(); }
virtual void GetRootItems(list<TreeData>& List);
virtual void GetChildItems(list<TreeData>::iterator it, list<TreeData>& List);
}template <class T>
class CAExt
{ static UINT InitialThreadProc(LPVOID pData)
{
ASSERT(pData!=NULL);
CTreeViewExt* pThis = static_cast<CTreeViewExt*>(pData);
ASSERT(pThis!=NULL);
return pThis->ThreadProc();
} OnInitialUpdate()
{
AfxBeginThread(InitialThreadProc, (LPVOID)this,THREAD_PRIORITY_LOWEST);
}
//以下是三个纯虚函数
virtual void GetRootItems(list<TreeData>& List) = 0;
virtual void GetChildItems(list<TreeData>::iterator it, list<TreeData>& List) = 0;
virtual CTreeCtrl& GetTreeCtrl() const = 0;
//下面两个函数的具体过程省略
ThreadProc()
{
//这里调用了GetRootItems,GetChildItems,GetTreeCtrl
}
OnDataAvailable()
{
//这里调用了GetRootItems,GetChildItems,GetTreeCtrl
}
}
我想问的是
1.CTreeViewExt* pThis = static_cast<CTreeViewExt*>(pData);里的pData,也就是this,指向的是CA还是CAExt
2.ThreadProc和OnDataAvailable怎么可以调用GetRootItems,GetChildItems,GetTreeCtrl,他们不是都是纯虚函数么,还是因为它们都是调用CA里的GetRootItems,GetChildItems,GetTreeCtrl,请指教
{
void CTestView::OnInitialUpdate()
{
CTreeView::OnInitialUpdate();
CTreeViewExt<int>::OnInitialUpdate();
}
LONG CTestView::OnDataAvailable(WPARAM wParam, LPARAM lParam)
{
return CTreeViewExt<int>::OnDataAvailable(wParam, lParam);
}
//以下三个函数的具体实现过程省略
CTreeCtrl& GetTreeCtrl() const { return CTreeView::GetTreeCtrl(); }
virtual void GetRootItems(list<TreeData>& List);
virtual void GetChildItems(list<TreeData>::iterator it, list<TreeData>& List);
}template <class T>
class CAExt
{ static UINT InitialThreadProc(LPVOID pData)
{
ASSERT(pData!=NULL);
CTreeViewExt* pThis = static_cast<CTreeViewExt*>(pData);
ASSERT(pThis!=NULL);
return pThis->ThreadProc();
} OnInitialUpdate()
{
AfxBeginThread(InitialThreadProc, (LPVOID)this,THREAD_PRIORITY_LOWEST);
}
//以下是三个纯虚函数
virtual void GetRootItems(list<TreeData>& List) = 0;
virtual void GetChildItems(list<TreeData>::iterator it, list<TreeData>& List) = 0;
virtual CTreeCtrl& GetTreeCtrl() const = 0;
//下面两个函数的具体过程省略
ThreadProc()
{
//这里调用了GetRootItems,GetChildItems,GetTreeCtrl
}
OnDataAvailable()
{
//这里调用了GetRootItems,GetChildItems,GetTreeCtrl
}
}
我想问的是
1.CTreeViewExt* pThis = static_cast<CTreeViewExt*>(pData);里的pData,也就是this,指向的是CA还是CAExt
2.ThreadProc和OnDataAvailable怎么可以调用GetRootItems,GetChildItems,GetTreeCtrl,他们不是都是纯虚函数么,还是因为它们都是调用CA里的GetRootItems,GetChildItems,GetTreeCtrl,请指教
解决方案 »
- VC++ 用正则提取XML文件中特殊的信息
- 请教有关Xtreme ToolkitPro的问题
- 如何获取指定进程的内存占用,线程列表,以及每个线程的cpu占用,和线程的EIP,ESP?
- 怎么样从一个文件中分析出其中的所有IP地址.比如xxx.xx.xxx.xx这样的字符啊
- 动态创建的datagrid在不同环境下无法显示的问题?
- 急问;出现了这样的问题, Linking... 如何解决
- 给一个较快的大记录查询方法。链表、数组、列表。。。?
- 我想改变对话框的字体的颜色和大小,在vc6.0编译器中应该怎么设置阿
- 如何用程序控制edit框的readonly属性
- 请问:哪位见过—“回车”等于“退出”?????!!!!
- 关于系统关机消息
- 还是窗口重绘的问题
2。纯虚函数,自动调用子类的函数。