Q&A

  • 5버튼 짜리 마우스 인식에 대해서...
안녕하세요...

델파이는 자체적으로 좌/우/가운데 마우스 버튼을 인식할 수 있는걸로 알고 있습니다.

EmbeddedWb 컴포넌트를 사용하여 웹브라우저를 만들고 있는데,

5버튼 마우스의 4번째 5번째 버튼에 앞으로/뒤로 기능을 넣고자 합니다.

4번째 5번째 버튼을 인식할 수 있는 방법이 있을까요?
4  COMMENTS
  • Profile
    박성훈 2006.05.03 18:10


    도움이 되실 방법인지는 모르겠지만

    인터넷 익스플로러의 앞,뒤로 키값인 Alt+->,Alt+<-를 강제로 발생을 시켜주며 어떨런지...
  • Profile
    폐기처분中 2006.05.03 23:06
    답변 감사드립니다.
    웹브라우저의 앞으로, 뒤로 기능을 구현하는건 문제가 안되는데...

    4번, 5번 버튼을 어떻게 받아들여야 하나요?
    기본적으로 델파이 컴포넌트들은 4번, 5번 버튼에 대한 이벤트 정의가 안되어있어서...
    메시지를 받아서 직접 구현을 해야 되지 않을까...하고 막연히 추측만 하고 있습니다.

    혹시 좋은 의견 있으신분들은 가르침을 부탁드립니다.^^

  • Profile
    srookie 2006.05.04 02:17
    안녕하세요.
    질문 내용을 보고 저도 궁금해서 MSDN을 뒤져 보던 중 다음과 같은 정보를 알아냈네요.
    MS IntelliMouse Explorer 와 같은 마우스 버튼이 많이 달린(?) 마우스는 제4 버튼이나 제5 버튼을 클릭하게 되면 WM_XBUTTONDOWN, WM_XBUTTONUP 이벤트가 발생한답니다.
    위의 이벤트는 Windows 2000과 Windows XP에서 지원한다는군요.
    지금 회사에 마우스 버튼이 많은 마우스가 없어서 테스트는 못해봤습니다.
    참고해보셔요. 델파이에서는 WM_XBUTTONDOWN과 WM_XBUTTONUP이 정의되어있지는 않네요.
    Platform SDK의 Winuser.h 파일에 보면
    #define WM_XBUTTONDOWN                  0x020B
    #define WM_XBUTTONUP                        0x020C

    와같이 나와있습니다.
    이 메시지 처리 루틴을 만들어서 한번 테스트 해보심이 ^^;

    그럼 즐프 하십시오~

  • Profile
    폐기처분中 2006.05.04 10:57
    srookie 님 답변 감사드립니다.
    MSDN 과 볼랜드사이트를 뒤져서 답을 찾아냈습니다.

    가르쳐 주신대로, 마우스의 4번째, 5번째 버튼의 경우는
    WM_XBUTTONDOWN, WM_XBUTTONUP 메시지가 발생되더군요.

    이를 델파이에서 사용하려면, TApplicationEvents 컴포넌트를 사용하면 됩니다.
    TApplicationEvents 는 해당 어플리케이션 내부에서 발생하는 모든 메시지를 가로채는 것이더군요.
    따라서, TApplicationEvents 의 OnMessage 이벤트 핸들러에서 해당 메시지를 구현해주면 됩니다.

    이번과 같은 경우는 WM_XBUTTONDOWN 메시지에 대해서 처리해주면 되지요.

    볼랜드 사이트에서 입수한 코드는 아래와 같습니다.

    <!--CodeS-->
    procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
    const
      WM_XBUTTONDOWN = 524;  // $20C
      WM_XBUTTONUP  = 523;        // $20B
    begin

      // Check if special button
      if Msg.Message = WM_XBUTTONUP then
      begin

        if Lo(Msg.wParam) = $40 then
        begin
          // Forward button pressed  (MK_XBUTTON2 = $40)
        end
        else if Lo(Msg.wParam) = $20 then
        begin
          // Back button pressed  (MK_XBUTTON1 = $20)
        end;

        Handled := True;
      end;

    end;
    <!--CodeE-->

    관련 MSDN 은 URL 은 아래와 같습니다.

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/mouseinput/mouseinputreference/mouseinputmessages/wm_xbuttondown.asp

    볼랜드 사이트 URL 은 아래와 같습니다.
    http://qc.borland.com/wc/qcmain.aspx?d=1715



    • Crazy™
      2006.05.12 01:11
      resize의 이벤트에 refresh나 repaint를 한번 해보세요. 그렇게 처리했던거 같은데 기억이 가물하네욤
    • 이은주
      2006.05.13 09:14
      답변감사합니다. 말씀드린대로 여러곳에 refresh나 repaint 를 사용해 봤지만 여전히 잔상이 남더군요.
    • 김백원
      2006.05.08 23:50
      RichEdit1KeyPress Event 말고... OnChange Event 를 사용하면 될거 같은데요... 아래처럼..... proc...
    • CarmDel
      2006.05.09 00:44
      아.. 그렇게 하면 되는거였군요.. 정말 감사드립니다.^^ 잘 되네요. ^^ 이것때문에 고민하고 있었는데.....
    • 마르
      2006.05.06 11:41
      어떤 용도로 쓰시는지는 모르겠지만 좀 위험한 명령어네요 ^^;; rd . /s/q 라고 하시면 현재 위치로 부...
    • 정지호
    • 2006.05.05 03:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김성일
      2006.05.07 00:08
      제생각에는 TcpServer쪽으로 계속적인 신호가 들어와서 frmNew처리부분이 반복되다가 그러한 현상이 발생하...
    • 정지호
      2006.05.10 00:43
      답변 감사드립니다. 고민하다가 그냥 별도 실행화일을 만들어서 shellexecute로 처리해버렸습니다. ^^
    • 손희석
      2006.05.05 05:43
      델파이 도움말입니다. TApplication.Terminate Method Description : Call Terminate to end the ap...
    • 손희석
      2006.05.04 23:04
      스크롤 이벤트에서 다시 calculate하지 못하게 하면 되죠 즉 스크롤 이벤트를 nil 시키면 됩니다. 그리...
    • 정민경
      2006.05.06 03:39
      .
    • Crazy™
      2006.05.08 19:22
      안녕하세요. CalcFields를 달랑 한번만 하고 마실건지? 수시로 이벤트를 막고 붙이고 하실지에 따라 다르...
    • 최용일
      2006.05.04 05:22
      안녕하세요. 최용일입니다. 첨부파일에 있습니다. 사용법은 DATE처럼 리다이렉트하시면 됩니다. S...
    • 과학상자
      2006.05.04 05:29
      헉!! 최용일님께서 직접 만들어 주신거에요???? 이럴수가..너무 감사합니다.....ㅠㅠ 기록이... 2006-...
    • 최용일
      2006.05.04 05:57
      안녕하세요. 최용일입니다. 쩝~ 첨부파일에 있습니다. 49.71일마다 한번씩 초기화가 안되는 것은 불...
    • 과학상자
      2006.05.04 06:24
      정말 감사합니다 잘쓰도록 하겠습니다 ...
    • Ricky
    • 2006.05.04 03:11
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 마르
      2006.05.06 11:20
      http://www.delphi.co.kr/zboard/view.php?id=qanda&page=2&sn1=&divpage=11&sn=on&ss=on&sc=on&keyword=엑...
    • 박성훈
      2006.05.03 18:10
      도움이 되실 방법인지는 모르겠지만 인터넷 익스플로러의 앞,뒤로 키값인 Alt+->,Alt+<-를 강...
    • 폐기처분中
      2006.05.03 23:06
      답변 감사드립니다. 웹브라우저의 앞으로, 뒤로 기능을 구현하는건 문제가 안되는데... 4번, 5번 버튼...
    • srookie
      2006.05.04 02:17
      안녕하세요. 질문 내용을 보고 저도 궁금해서 MSDN을 뒤져 보던 중 다음과 같은 정보를 알아냈네요. MS I...
    • 폐기처분中
      2006.05.04 10:57
      srookie 님 답변 감사드립니다. MSDN 과 볼랜드사이트를 뒤져서 답을 찾아냈습니다. 가르쳐 주신대로, ...
    • 찌니찌니
      2006.05.03 01:36
      var iFocusIndex : Integer; begin iFocusIndex := sg_schListView.DataController.FocusedRo...
    • 박성훈
      2006.05.03 18:05
      Master-Detail 구조에서 DetailView를 선택했을 때를 말하는 것입니다.. cxGrid의 데모에서 Master-Detai...
    • 박성훈
      2006.05.03 20:19
      procedure TForm1.Button1Click(Sender: TObject);   iDetIdx : Integer;   A...
    • 김신광
    • 2006.05.02 19:10
    • 2 COMMENTS
    • /
    • 0 LIKES
    • Crazy™
      2006.05.03 21:06
      마지막만 실행될 수는 없습니다. 업데이트시 누락된 부분 처리할때마다 로그를 확인해보세요. 파라미터 ...
    • Charls
      2006.11.14 20:05
      스크립트 상에 문제가 없다면 사용하는 DBMS의 사용자 ID 가 해당테이블에 Insert 권한이 있는지를 확인해...
    • 문혜윤
    • 2006.05.02 08:07
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김남중
    • 2006.05.02 05:27
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이희진
      2006.05.02 19:10
      FormActivate => FormCreate FormActivate는 윈도우 간의 포커스 이동 시에 발생하는 겁니다. 올리...
    • 우기석
    • 2006.05.02 03:40
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 강인규
      2006.05.04 19:48
      이런 파일정보만 까주는 프로그램이 있는지는 잘 모르겠습니다. 파일을 깔 자신이 없으시면 TMediaPlayer...
    • 우기석
      2006.05.08 13:04
      답변 감사합니다. 그런데... TimeFormat의 옵션이 안먹내요. ㅜ,ㅜ 돌아오는 값은 총 프레임 값만 넘어 ...
    • 강인규
      2006.05.09 01:36
      파일은 오픈하셨나요. 제가 돌려보고 답변드렸는데 안되신다니 이상하네요. 델파이 7으로 테스트 했습니...
    • 김남중
      2006.05.02 05:18
    • 우기석
      2006.05.03 04:53
    • 민준기
    • 2006.05.01 23:31
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 강인규
      2006.05.04 20:04
      자바스크립트는 클라이언트 스크립트이고 ASP는 서버사이드 스크립트입니다. 자바 스크립트를 ASP로 변경...
    • 민준기
      2006.05.10 20:04
      답변 감사 드립니다.
    • 김정우
    • 2006.04.30 22:32
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김길현
      2009.01.20 21:39
      나중에 다른 사람이 볼때 도움이 될까 해서 지금 이라도 답변 답니다. 첫번째 문제는 저도 경험을 했...
    • 드기
      2006.04.30 07:55
      금방 블럭 그리는 부분만 랜덤으로 VC++로 구현해 봤는데.. 깜빡임 하나없이 무쟈게 빠르네요..ㅠ 내가 잘...