C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[45564] Re:[질문] TrackBar 등에서 마우스 휠 작동 안하게 하는 방법? - 서브클래싱을 이용해서 ...
장성호 [nasilso] 1470 읽음    2006-07-05 18:18
기본적으로 원인은 마우스 휠에 동작하는것은 Focus가 되어있을때 그러네요...
Mouse의 Focus를 다른Control에 옮겨주면 괜찮습니다.

그리고 Focus되어있는 상태에서는 서브클래싱을 통해서 해결할수 있습니ㅏㄷ.

MouseWheel 메세지만 걸러주면 되는데
기본 Event에 MouseWheel이벤트가 없기때문에
서브클래싱을 통하여서 해결할 수 있습니다.


아래에 예제가 있습니다ㅏ. 그대로 이용해도 무방할 겁니다.


typedef void __fastcall (__closure *TWNDPROC)(TMessage &msg); //VCL용 WNDPROC 타입 선언
TWNDPROC OriginalProc;                                                                 //TarckBar 원래의 WinProc 저장할 변수

//-----------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    OriginalProc=TrackBar1->WindowProc;  // 프로그램이 시작되면서 원래 WndProc를 따로 저장해두고..
    TrackBar1->WindowProc=TracMessageProc; //내가  만든 WndProc함수를 TracBar에 설정해줍니다.
}

//---------------------------------------------------------------------------
void __fastcall TForm1::TracMessageProc(TMessage &msg)
{
    if(msg.Msg==WM_MOUSEWHEEL)return; //MouseWheel 이벤트는 모두 return 해버리고
    OriginalProc(msg); //그밖에 메세지는 원래 tracbar의 WndProc함수를 돌려서 동작하도록 합니다.
}



이 서브 클래싱 기법은 윈도우 프로그램에 많이 쓰일수 있습니다.
사용하는 Control에 기본 Event가 없는경우 이렇게 하고..
기본적으로 배경을 넣을수 없는 Control같은 경우에도 서브클래싱을
WM_PAINT 메세지에 직접 그려주는 방법으로 할수있습니다.

이방법을 익혀두면 유용하게 쓰실수 있을것입니다.

그럼


왕초보 님이 쓰신 글 :
: 안녕하세요
:
: 다른것이 아니라 TrackBar와 EditBox 와 같은 곳에서 마우스 휠로 값이 변경되는걸
: 막는 방법이 없을까요?
:
: 마우스 휠을 다른곳에 사용하는데 자꾸 값이 변경되서 어떻게 해야 할지 모르겠네요
:
:
: 답변 꼭 부탁들입니다.

+ -

관련 글 리스트
45563 [질문] TrackBar 등에서 마우스 휠 작동 안하게 하는 방법? 왕초보 1014 2006/07/05
45564     Re:[질문] TrackBar 등에서 마우스 휠 작동 안하게 하는 방법? - 서브클래싱을 이용해서 ... 장성호 1470 2006/07/05
45567         Re:Re:[질문] TrackBar 등에서 마우스 휠 작동 안하게 하는 방법? - ㅠㅠ 아직 정확이 안됩니다. 왕초보 982 2006/07/05
45571             Re:Re:Re:[질문] TrackBar 등에서 마우스 휠 작동 안하게.. .. 장성호 1599 2006/07/06
45574                 Re:Re:Re:Re: 장성호님 답변 감사 합니다. 왕초보 1255 2006/07/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.