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
[8140] 답변 감사, 감사 (내용무)
김영균 [] 1322 읽음    2001-06-12 09:44
이경문 님이 쓰신 글 :
: Synchronize도 내부적으로 살펴 보면 전부
: Main Thread에게 message를 보내는 SendMessage API를 사용하고 있습니다.
: COM의 EventHandler에서 VCL Main Thread를 제어하고 싶으면
: message를 사용하시면 됩니다.
:
: ---------------------------------------------------------------------------
: h file
: ---------------------------------------------------------------------------
:
: #define WM_MYEVENT WM_USER + 10
: ...
: class TForm1 : public TForm
: {
:   void __fastcall ComEvent(TObject *Sender); // Com(Type Library에서 제공하는 Event)
:   void WmMyEvent(TMessage & Msg); // 내가 정의한 Event
: ...
:
:   BEGIN_MESSAGE_MAP // message map을 만들고
:     VCL_MESSAGE_HANDLER(WM_COMEVENT, TMessage, WmMyEvent)
:   END_MESSAGE_MAP(TForm)
: };
:
: ---------------------------------------------------------------------------
: cpp file
: ---------------------------------------------------------------------------
: void __fastcall TForm1::ComEvent(TObject *Sender) // Com에서 요 이벤트가 발생하면
: {
:   SendMessage(this->Handle, WM_MYEVENT, 0, 0); // message를 보내 WmMyEvent가 실행되게 한다.
: }
:
: void TForm1::WmConEvent(TMessage & Msg) // 이 코드를 수행할 때는 main thread로 전환된다. 디버깅 때 Ctrl+Atl+T를 눌러 확인해 보시라.
: {
:   ShowMessage("쓰벌, main thread 기능들을 마음대로 쓰자!!!");
:   ...
: }
:
: 그리고 인자 전달은 전역변수(TForm1에 선언해 놓거나 Globa로 선언해 놓거나)와 CriticalSection 변수를 동시에 사용하는 방법이 있고
: SendMessage에 wParam, lParam을 사용하는 방법이 있습니다.
: 만약 인자가 많아 질 경우에는 WM_COPYDATA를 사용하는 방법도 있습니다.
: WM_COPYDATA는 다른 Process간에도 메모리공유와 비슷한 기능을 하기 때문에 유용하게 사용되어 지고 있습니다.
:
:
: 김영균 님이 쓰신 글 :
: : C++빌더 5.0으로 프로그램을 만들고 있습니다.
: Thread Library 를 직접 만들어서 사용하고 있는데.
: VCL main thread 와의 동기문제가  발생했습니다.
: Synchronize 와 비슷한 메쏘드를 구현하는 방법은 없나요?
: 또, Critical Section 이나 세마포어로 직접 VCL main thread 와
: 동기시키는 방법은 없나요?
: Synchronize 메쏘드는 인자 전달이 힘들어서요.
: 그럼,

+ -

관련 글 리스트
8108 [질문] Synchronize()와 비슷한 메쏘드의 구현? 김영균 1307 2001/06/11
8131     Re:[질문] Synchronize()와 비슷한 메쏘드의 구현? 이경문 1644 2001/06/12
8140         답변 감사, 감사 (내용무) 김영균 1322 2001/06/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.