|
^^ 감사합니다 새로운 방법이네요..^^;
너무 제가 접근 방법을 고질적인 부분만 추구 하는 것 같습니다.
여러 방면으로 생각하는게 좋을꺼 같네요. 산뜻한 댓글 정말 감사합니다. ^^;
좋은 하루 아니 즐거운 한주 되세요..
강재호.만해 님이 쓰신 글 :
: 둥이네 님이 쓰신 글 :
: : 드래그 작업시.어느 판넬에서 에서 다른 판넬로 드래그 하는 부분에..
: : 중간 이동 경로를 나타 낼려고 합니다.
: : MouseMovie 동안... 작은 투명한 상자를 옮겨야 하는데...
: : 아무래도 사각형을 그렸다가 지웠다가 하는건 너무 비효율 적이라는 생각이 듭니다.
: :
: : 그렇다고 투명 폼을 만들려고 하니..이거 또한 작은 가로세로 1cm 도 안되는 투명한 외각선 있는 사각형을 만들려고 하니 조금은 비효율 적이라는 생각이 드네요....
: :
: : 시각적으로 투명한 사각형이 이동하는 것을 보여주는게 어떻게 제일 좋을지 조언 부탁 드리겠습니다.
: : 지금 생각으로 마우스 클릭시 투명폼을 생성해서
: : 투명폼을 옮기는게 제일 좋을꺼 같은데..과연 이것이 효율적일지.. 조언좀 부탁 드리겠습니다.
: :
: : PS:Panel 에서 드래그는 어떻게 알수 있는지 조언 부탁 드립니다.
: : DragOver ,DragDrop,EndDrag,StartDrag 다 해봤는데..
: : 각각 함수에 ShowMessage 해서 확인해보니...아무것도 안보이네요..
: : 마우스 Down,Up ,Move 만 보이던데..드래그 중인 이벤트는 어떻게 알아 내야하는지도 조언 부탁 드립니다.
: : 한 판넬에서 다른 판넬로의 드래그를 확인해야 하는데 이걸 어떻게 확인할지...조언 부탁 드립니다.
: :
: : 마우스 up Event 가 드래그 후 다른 판넬이나 폼 위치에서도 생기던데..
: : 이때 처리를 해야 하는지요...
: :
: : 제가 적고 나서도 너무 뒤죽 박죽인거 같습니다. ^^; 담부터는 한개의 질문만 올려야 겠네요..죄송합니다.
:
: 안녕하세요 만해입니다.
:
: 저희 회사 프로그램인 이지클릭의 경우에는( 광고성글 아니예요 ㅋㅋ~ ^^a;)
:
: 패널을 이동시키는 부분을 Application->OnMessage 이벤트를 오버 로딩 시켜서
:
: 메세지가 별로 해당 하는 부분을 처리 하는 방식을 이용 합니다.
:
: 그러니깐 소스의 일부를 보여 드리면요 다음과 같습니다.
:
: switch (Msg.message)
: {
: case WM_MOUSEWHEEL :
: 여기에 해당 이벤트에서 처리 해야할 내용을 입력
: break;
:
: case WM_LBUTTONDOWN:
: break;
:
: case WM_LBUTTONUP:
: break;
:
: case WM_MOUSEMOVE:
: break;
:
: case WM_RBUTTONDOWN:
: break;
:
: }
:
: 그리고 해당하는 컨트롤을 알아 내는 방식은 getCursorPos함수로 포인터를 가져온다음에
:
: 그 포인터에 존재하는 Control을 알아 내는 방식을 이용합니다.
:
: 제 개인적으로는 저 방식이 나쁘진 않는데 별로 맘에 안들어서
:
: Panel의 이벤트를 오버 로딩 하는 방식을 사용하고 싶은데 기존에 만들어진 소스를 제가 아직 다 파악 못해서
:
: 아직 바꾸기엔 좀 이르네요 ㅋ~
:
: 그리고 선택된 Panel을 드래그 하는것은 WM_LBUTTONDOWN이벤트에서
:
: 마우스를 눌렀다고 프로그램에서 인식 하게 하고, 그리고 WM_MOUSEMOVE 이벤트에서 그 태그값이 온이면
:
: 해당 컨트롤을 움직이게 되어 있습니다.
:
: 그리고 WM_RBUTTONUP이벤트 일때 태그값 초기화 시키는 방식을 이용하고 있습니다.
:
: 참고만 하세요 이게 정답은 아니니깐요 분명히 더 좋은 방법은 존재 합니다.
:
: 그리고 포인터를 가져와서 컨트롤을 가져 올려면
:
: GetCursorPos(&p);
: if (FindControl(WindowFromPoint(p)) == NULL)
: return NULL;
:
: 이런식으로 현재 마우스 포지션이 전체 윈도우에서 어디에 있는지를 변환 시키고 난 다음에
:
: 컨트롤을 가져 와야 합니다.
:
: 참고만 하시고요 좋은 방법 찾으셔서 좋은 프로그램 만드세요
:
: 주저리 주저리 말만 많네요 ㅋ~
|