|
코드까지 써주시면서 답변 감사합니다만,
이미 그부분은 했습니다.
제가 문제가 삼는 부분은 그부분이 아닙니다.
제 질문을 다시한번 봐주시면 감사하겠습니다.
정재훈 님이 쓰신 글 :
: ilys4 님이 쓰신 글 :
: : 하나의 폼이 있습니다. 그 안에 컴포넌트들이 있구요.
: : 그중 하나는 opengl 화면으로 마우스로 내용을 조작하는겁니다.
: :
: : 마우스 up, down, move 이벤트를 사용하는데,
: : 그 패널에 연관 시키면 커서가 패널밖으로 넘어가면 (당연히) up, down, move 가 듣질 않으니 제대로 작동을 안합니다.
: : 그래서 패널 전체에 대해 이벤트를 걸고자 form 에다가 걸었더니
: : 이번엔 폼의 보이는 부분에대해서만 작동을 하고 컴포넌트 위에서는 작동을 안합니다.
: :
: : 이거 어떻게 해야하나요?
: : 간단한 힌트만이라도 주시면 찾아서 해보겠습니다.
: : 왠지 간단하게 해결할 수 있을 것 같은데, 검색해봐도 뭘 해야하는지 모르겠네요.
: :
: : 답변 부탁드립니다.
:
: OpenGL화면을 쓰신다면 GL화면에서 마우스를 누르고 드래그하면 스크롤이나 줌이 되는 이런기능일듯 한데요..맞는지... 이건 GL컴포넌트에서의 마우스 처리이벤트만으로 충분히 해결이 됩니다.
: Down, Up, Move 이벤트에 버튼상태와 기능을 표시하는 Bool변수를 몇개 조합하시면 될거라고 봅니다.
:
:
: void __fastcall TViewer::ViewMouseDown(TObject *Sender,
: TMouseButton Button, TShiftState Shift, int X, int Y)
: {
: TPoint point = TPoint(X,Y);
: m_ptPrev = point;
: if(Button == mbLeft) MouseLBtnDown = true;
: .................
: }
:
: void __fastcall TViewer::ViewMouseUp(TObject *Sender,
: TMouseButton Button, TShiftState Shift, int X, int Y)
: {
: if(Button == mbLeft) MouseLBtnDown = false;
: ....................
: }
:
: void __fastcall TViewer::ViewMouseMove(TObject *Sender,
: TShiftState Shift, int X, int Y)
: {
: TPoint point = TPoint(X,Y);
: MouseCurPos = point;
:
: if(Shift.Contains(ssLeft)) /// 좌측버튼인가?
: {
: FullModeDraw = false; // 전체를 다 그릴려면 부하가 많으니까 Move동안은 1/4 수준만 그린다
: if(m_MouseMode == MOUSEMODE_ZOOM)
: //현재 기능 선택에 따라서 여러가지 처리
: ...................
: }
: }
|