C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[54484] Re:빌더의 TThread 관련해서 예전부터 궁금하던 것...
권창구.태원아빠 [shiftcap] 1305 읽음    2008-09-04 14:23
// 아마 이런씩으로 되어 있을 겁니다.

class TThread
{
    // 정적 멤버 함수 : this는 쓸 수 없지만 인자로 받는 건 된다.
    static DWORD WINAPI Thread_Start_Routine(LPVOID param)
    {
        TThread *This = (TThread*)param;  // 받은 인자로 This를 구하여 멤버를 호출한다.
        This->Execute();
    }

    TThread()
    {
        hThread = CreateThread(NULL,
                                               0,
                                               (LPTHREAD_START_ROUTINE)Thread_Start_Routine,
                                               (LPVOID)this,       // 자신을 인자로 넘긴다.
                                               0,
                                               &dwThreadId);
    }

    // 가상 멤버 함수 : this를 쓸 수 있다.
    virtual void Execute()
    {
        //
    }
};

// 폼을 접근하고 싶다면 상속으로 약간 수정만 하시면
class TFormHandlerThread : public TThread
{
    TFrom* theForm;
public:
    TFormHandlerThread(TFrom* AForm, bool ...)
    {
        theForm = AForm;
    }

    // From 에 접근 할 수 있다.
    void PrintTime()
    {
        ((TfmMain*)theForm)->Caption = Now().DateTimeString();
    }

    // this 사용이 가능하다.
    virtual void Execute()
    {
        this->PrintTime()
    }
};

+ -

관련 글 리스트
54482 빌더의 TThread 관련해서 예전부터 궁금하던 것... 아제나 1240 2008/09/04
54486     Re:빌더의 TThread 관련해서 예전부터 궁금하던 것... 권창구.태원아빠 1503 2008/09/04
54484     Re:빌더의 TThread 관련해서 예전부터 궁금하던 것... 권창구.태원아빠 1305 2008/09/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.