|
아래와 같이 해보시기 바랍니다.
Application->OnMessage 를 사용하여 적당히 원하는 결과를 만들어 봤습니다.
Msg.hwnd==Panel1->Handle 부분과 Handled = true 를 적절히 사용하면 버튼클릭도 잡아내더군요.
void __fastcall TForm1::AppMessage(tagMSG &Msg, bool &Handled)
{
if (Msg.message == WM_LBUTTONDOWN && Msg.hwnd==Panel1->Handle)
{
POINT p;
GetCursorPos(&p);
if(PtInRect(&(Panel1->ClientRect),Panel1->ScreenToClient(p))){
Panel1Click(Panel1);
}
Handled = true;
}
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Application->OnMessage = AppMessage;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Panel1Click(TObject *Sender)
{
ShowMessage("click");
}
.끝.
이돈진 님이 쓰신 글 :
: 하나의 패널위에 여러개의 다른 컴포넌트가 있습니다.
:
: 예를 들면 이미지, 라벨과 같은 것들이 있을 때..
:
: 이미지 위에서 마우스를 클릭하면 이미지의 클릭에 대한
:
: 이벤트가 발생하는데,,이걸
:
: 패널에 대한 이벤트가 발생하게 할 수 없나요?
:
: 무식한 방법으로 하면 이미지의 클릭이벤트에서 다시
:
: 패널의 이벤트를 불러주면 되겠지만,,,
:
: 베벨이 있는 경우는 그거 마저도 안되더라구요..
:
: 베벨은 클릭 이벤트가 없기 땜에...
:
: 이럴 때 패널위에 있는 모든 것들을 클릭할 때
:
: 패널의 클릭이벤트가 동작하는 방법좀 가르쳐 주시기를....
:
: 그럼 이만..
|