{自定义一个类}
type
TwwThread = class
constructor Create; overload;
destructor Destroy; override;
private
m_hThread: THandle;
m_ThreadID : TThreadID;
protected
procedure Execute; virtual; abstract;
class function wwThreadProc(Thread: TwwThread): Integer;
end;
implementation
class function TwwThread.wwThreadProc(Thread: TwwThread): Integer;
begin
Thread.Execute();
end;
constructor TwwThread.Create;
begin
m_hThread := CreateThread(nil, 0, Pointer(@TwwThread.wwThreadProc), Pointer(Self), 0, m_ThreadID);
end;
destructor TwwThread.Destroy;
begin
inherited;
end;
{然后调用他}
TmyThread = class(TwwThread)
protected
procedure Execute; override;
end;
var
myThread : TmyThread;
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
myThread := TmyThread.Create;
end;
procedure TmyThread.Execute;
begin
inherited;
// 为什么这里会出错?
end;
纯虚函数吧?
virtual void Execute() = NULL;
class function wwThreadProc(Thread: TwwThread): Integer; static; stdcall;
function wwThreadProc(Thread: TwwThread): Integer; stdcall;
begin
Thread.Execute();
end;m_hThread := CreateThread(nil, 0, @wwThreadProc, Pointer(Self), 0, m_ThreadID);因为CreateThread第3个参数,是一个函数地址但这个函数不能是某个类函数