다음과 같이 화면이 구성되어있습니다.
그리고 다음과 같이 쓰레드에서 코딩했습니다.
//---------------------------------------------------------------------------
// 쓰레드 클래스 소스
class TMyThread: public TThread
{
public:
__fastcall TMyThread()
: TThread(false)
{
FreeOnTerminate=true;
}
void __fastcall Execute()
{
while(!Application->Terminated)
{
Sleep(1000);
//1초 간격으로 Form1의 Panel에 user메세지를 보냄
SendMessage(Form1->Panel1->Handle,WM_USER+1,0,0);
PostMessage(Form1->Panel2->Handle,WM_USER+1,0,0);
}
}
};
//--------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//Form생성완료후 쓰레드를 생성해줌
new TMyThread;
}
//---------------------------------------------------------------------------
위와같이 해서 실행하면...
이상한 에러가 나거나 화면이 버벅거림 또는 행이 걸릴수 있습니다.
왜 그럴까요?
//----------------------------
위코드에서
Form1이 global객체라서 위험요소일 수 있는데..
예전에 다뤘던 사항이라 논외로 하겠습니다.
그럼..
|
1. Panel1에 SendMessage로 보냈기 때문에 리턴을 기다린다.
2. Panel1이 TabSheet상에서 활성일때 Panel2로 PostMessage를 보내고 Panel2가 TabSheet 상에서 활성일때 Panel1에 SendMessage를 보내기 때문이 아닐까요...