|
사루짱 님이 쓰신 글 :
: 안녕하세요.^^
: 마우스 휠 기능에 대해서 질문을 하나 드립니다.
: 메인폼에 스크롤 박스가 있어서 거기서 마우스 휠을 먹인다고 밑에 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;
: }
: }
보통 휠이 다른창에서 떠아햔다면
다일로그박스를 Show(); 하지말고 Showmodal()함수로 써야죠
그러면 되실거임 보통 다이얼로그박스경우 쇼모달 함수로 띄웁니다
그러면 아래있는폼은 모드 disable 되어 동작안하죠 다이얼로그박스를 끄면 자동으로 eenable
되구요
|