|
안녕하세요.^^
마우스 휠 기능에 대해서 질문을 하나 드립니다.
메인폼에 스크롤 박스가 있어서 거기서 마우스 휠을 먹인다고 밑에 ApplicationEvents1콤포넌트를 사용해서
마우스 휠 기능을 구현했습니다.
문제는 이 마우스 휠이 다른 창이 떠서 그안에서 마우스 휠을 휙휙 돌리면 메인폼 스크롤박스가 휠로 이동됩니다.
서브창에서 그리드 등이 있어서 휠을 사용하기도 하는데
뒤에 깔린 메인창까지 같이 돌아가니 조금 답답해 하고 있습니다.ㅜㅜ
포커스를 다른 창을 뛰울 때 메인폼 다른쪽으로 포커스를 주기도 해봤는데도 안되네요 ㅜㅜ
- 궁금한것은 메인폼에서 서브창이 뜰때 FindGlobalComponent();로 특정창이 아닌
서브창 어느하나라도 떠있으면 확인 할 수 있는 방법이 궁금합니다.(밑에 이벤트에서 걸러버리려고 합니다.)
- 아니면 다른 방법으로 서브창이 떳을때 메인폼의 휠을 막을수 있는 방법이 궁금합니다.
- 참고로 FormMouseWheel 이벤트는 안먹어서 ApplicationEvents1를 사용해서 구현했습니다.
고수님들의 조언 부탁드립니다.
void __fastcall TfrmMain::ApplicationEvents1Message(tagMSG &Msg,
bool &Handled)
{
if(Msg.message==WM_MOUSEWHEEL){
// Msg 를 확인하면 휠의 정보를 알수 있습니다.
SendMessage(Handle,Msg.message,Msg.wParam,Msg.lParam);
if(Msg.pt.x > TePanel2->Left && Msg.pt.x < (TePanel2->Left + TePanel2->Width)
&& Msg.pt.y > TePanel2->Top && Msg.pt.y < (TePanel2->Top + TePanel2->Height))
{
if(Msg.wParam == 4287102976 ) { //wheel down.
if(focus == 0)
scrollboxBackLcs->VertScrollBar->Position+= 30; // VertScrollBar의 증가치
else if(focus ==1)
scrollboxBackLcsB->VertScrollBar->Position+= 30; // VertScrollBar의 증가치
}
else if(Msg.wParam == 7864320 ){ //wheel up.
if(focus == 0)
scrollboxBackLcs->VertScrollBar->Position-= 30; // VertScrollBar의 감소치
else if(focus ==1)
scrollboxBackLcsB->VertScrollBar->Position-= 30; // VertScrollBar의 감소치
}
}
return;
}
}
|