|
MainThread가 아닌 Working Thread(Main Thread를 제외한 Thread)에서는 VCL을 직접 건드리면 안됩니다.
TThread를 사용하지 않았다면
SendMessage나 PostMessage를 사용해서 처리하시기 바랍니다.
예제)
DWORD WINAPI MyThreadProc(LPVOID p)
{
//...
Form1->Label1->Visible = false;
//...
}
다음과 같이)
DWORD WINAPI MyThreadProc(LPVOID p)
{
//...
SendMessage(Form1->Handle, WM_MYMESSAGE, 0, 0);}
//...
}
"Unit1.h"
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_MYMESSAGE, TMessage, WmMyMessage)
END_MESSAGE_MAP(TForm)
"Unit1.cpp"
void TForm1::WmMyMessage(TMessage & Msg)
{
Label1->Visible = false;
}
지오 님이 쓰신 글 :
: 제가 지금 짜고 있는 프로그램은 쓰레드가 3개가 돌고 있읍니다...
: 툴은 C++Builder 5.0 이구여...
: 쓰레드는 그냥 CreateThread() 함수로 생성 해서 썼는데요...
: 쓰레드 함수 내에서 메인 폼의 컴퍼넌트의 속성중 Visible 속성을 건딜면 프로그램이 멈추어 버리네요... 왜 그렇죠... 아무리 생각 해도 왜 그런지 모르겠습니다...
: 혹시 이런 문제로 고민 하셨던분 있으시면 답변 부탁 드릴께요...^^
|