본문 바로가기
나머지/IT개발.잡다한것.

간단한 CWinThread 사용법과 MSDN 링크

by 무늬만학생 2012. 10. 31.
반응형

Class Wizard로 CWinThread를 상속받은 MyThread를 만든다.

 그리고 dlg같은 스레드를 쓰려는 클래스의 맴버변수로

 CWinThread* m_pWinThread; 를 만든다.


 다음은 스레드 생성


 m_pWinThread = AfxBeginThread(RUNTIME_CLASS(MyThread)); 


 다음은 윈스레드의 메세지 핸들링 방법이다.

 MyThread가 받을 메세지로 TM_MYMSG라는 것이 

 Resource.h에 있다고 치자. 없으면 쓰자

 #define TM_MYMSG                       700

 그리고 MyThread.h에 void MyMsg();를 하고


 BEGIN_MESSAGE_MAP(MyThread, CWinThread)

    //{{AFX_MSG_MAP(TestWinThread)

        // NOTE - the ClassWizard will add and 

        // remove mapping macros here.

    //}}AFX_MSG_MAP

    ON_THREAD_MESSAGE(TM_MYMSG,MyMsg)

 END_MESSAGE_MAP()


 이렇게 하면  TM_MYMSG가 윈스레드로 오면 MyMsg() 함수가 불리게 된다.


 dlg에서 

 ((MyThread*)m_pWinThread)->PostThreadMessage(TM_MYMSG,0,0);


 다음은 윈스레드를 죽이는 방법이다.

 ((MyThread*)m_pWinThread)->PostThreadMessage(WM_QUIT,0,0);    

 이렇게 하면 죽게 된다.

 그리고 한번 AfxBeginThread로 생기게 되면 속안에서 

  CreateThread를 호출하면서 스레드 객체가 생기며 CWinThread의 

 경우 Run함수가 호출된다. CwinThread::Run안에서 메세지 루프가 돌게 된다.


출처 : http://blog.naver.com/hushath/100009524349


MSDN은 필수 

http://msdn.microsoft.com/en-us/library/48xz4yz9(v=vs.100).aspx


유용한 정보 얻으셨으면 아래 광고나 손가락 클릭해주세요~  (로그인 불필요합니다)

반응형