15,471
社区成员
发帖
与我相关
我的任务
分享
CWinThread *pUIThread;//界面线程
pUIThread=AfxBeginThread(RUNTIME_CLASS(CcbCopyFile));
class CSetting :
public CWinThread
{
DECLARE_DYNCREATE(CSetting)
它其实是创建了一个静态的CRuntimeClass 的成员变量
static const CRuntimeClass class##class_name;
传入的参数就是这个 static 类型的变量的地址 也就是指针类型
在CSeting类的实现中:
#define IMPLEMENT_DYNCREATE(class_name, base_class_name) \
CObject* PASCAL class_name::CreateObject() \
{ return new class_name; } \
IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, 0xFFFF, \
class_name::CreateObject, NULL)
这里new出来一个指向基类CObject的线程派生类对象
然后再AfxBeginThread中有代码:
CWinThread* pThread = (CWinThread*)pThreadClass->CreateObject();
确实是一个指向派生类对象的基类指针