|
C++빌더의 VCL에서는 디폴트 쓰레드가 아닌 쓰레드에서는 UI에 접근할 수 없도록 설계되어 있습니다.
제가 아는 한, C++빌더가 VC보다 불편한 거의 유일한 문제입니다.
그럼...
김상면 님이 쓰신 글 :
: VC에서는 윈도우를 생성 할수 있는 스레드를 만들려면 CWinThread를 상속 받아서 만들어야합니다.
: 하지만 작업자 스레드는 AfxBeginThread로 만들수 있습니다.
: 물론 GetMessage를 쓰면 메세지를 받을 수 있고 DefWindowPoc를 오버라이딩하면 메세지를 처리 할수 있지만
:
: 저의 질문은
: TThread의 Excute는 작업자 스레드를 만드것 같더군요
: 하지만 제가 원하는것은 UI스레드입니다. MFC의 CWinThread가 하는것 처럼 스레드에서 메인 스레드와 독립된 윈도우를 만드고 싶습니다.
:
: 그럼
:
:
: 빌더맨 님이 쓰신 글 :
: : while(GetMessage(&Message,0,0,0))
: : {
: : TranslateMessage(&Message);
: : DispatchMessage(&Message);
: : }
: : return Message.wParam;
: :
: : 위와 같이 코딩을 하면 메세지를 받을수 있습니다.
: : 그런데, 어차피 윈도우는 WndClass.lpfnWndProc=(WNDPROC)WndProc; 이렇게 정의되기때문에
: : 이벤트를 받는건 WndProc 함수에서 받게 됩니다. 따라서 님께서 원하시는 것처럼 이벤트처리를 할려면
: : WndProc를 상속받는수밖에는 없을텐데요.
: : 왜 스레드에서 이벤트를 받으려고 하는지 알수가 없네요. ?.?
: :
: :
: : 김상면 님이 쓰신 글 :
: : : 메인 스레드는 윈도우를 만들고 윈도우 이벤트를 받습니다.
: : : 근대 TThread->Excute()에 윈도우를 만들고 윈도우 이벤트를 받는 코딩을 해도 되나요?
: : :
: : : 질문을 간략히 줄이면 메인 스레드와 똑같은 스레드를 또 만들고 싶어요
: : :
: : : 그럼
: : :
: : :
|