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
[69557] Re:TrackBar 마우스 조작
장성호 [nasilso] 2181 읽음    2013-05-30 10:28
완벽한것은 아니지만 대충 다음과 같이하면
님께서 원하시는것이 아닐까 생각됩니다.

VCL-Control은 WindowProc를 다음과 같이 쉽게 바꿀수 있습니다.


// Header에 다음과 같이 TWndMethod를 선언하시구요
class TForm8 : public TForm
{
__published:	// IDE-managed Components
	TTrackBar *TrackBar1;
	TLabel *Label1;
	void __fastcall TrackBar1Change(TObject *Sender);
	void __fastcall FormCreate(TObject *Sender);
private:	// User declarations
public:		// User declarations
	__fastcall TForm8(TComponent* Owner);

public:
        //Oritinal WindowProc저장할 변수 선언
	TWndMethod OrgTrackBarProc;

       //교체할 WindowProc메소드 선언 
	void __fastcall TrackBarWndProc(TMessage &Msg);
};



그리고 아래와 같이 코딩해 보세요


//TrackBar의 WindowProc교체 
void __fastcall TForm8::FormCreate(TObject *Sender)
{
	OrgTrackBarProc=TrackBar1->WindowProc;
	TrackBar1->WindowProc=TrackBarWndProc;
}

//---------------------------------------------------------------------------
//교체된WindowProc에서 LBUTTONDOWN(마우스 왼쪽 버튼 down)에 TrackBar의 Position조작
void __fastcall TForm8::TrackBarWndProc(TMessage &Msg)
{
	if(Msg.Msg==WM_LBUTTONDOWN)
	{
		TPoint ptTrPos=TrackBar1->ScreenToClient(Mouse->CursorPos);
		int iPos=TrackBar1->Min+(ptTrPos.x*(TrackBar1->Max-TrackBar1->Min))/TrackBar1->ClientWidth;
		if(iPos!=TrackBar1->Position)
		{
			TrackBar1->Position=iPos;
			return;
		}
	}
        // 원래 Oritinal WindowProc호출해줌
	OrgTrackBarProc(Msg);
}
//---------------------------------------------------------------------------
//화면 표시 
void __fastcall TForm8::TrackBar1Change(TObject *Sender)
{
	Label1->Caption=TrackBar1->Position;
}




그럼..

압9정 님이 쓰신 글 :
: 안녕하세요. TrackBar를 사용하여 동영상 플레이어를 만들고 있습니다.
:
: 현재 TrackBar->Min 이 0이고, TrackBar->Max 가 10 이고, TrackBar->Position 이 0 이고, TrackBar->PageSize = 1 일 때,
:
: 마우스로 3번째 위치를 눌르게 되면 TrackBar->Position 이 3이 되는 것이 아니라 TrackBar->PageSize 만큼 이동하여
:
: TrackBar->Position이 1이 됩니다.
:
: 이 때, 3번째 위치를 마우스로 눌렀을 때, TrackBar->Position이 3이 되도록 할 수 는 없나요?
:
: (그림을 보면 이해가 편하실 겁니다.)

+ -

관련 글 리스트
69554 TrackBar 마우스 조작 압9정 2359 2013/05/29
69557     Re:TrackBar 마우스 조작 장성호 2181 2013/05/30
69562         Re:Re: 아주 간단하게 처리하는 방법 지나다가 2323 2013/05/30
69563             Re:Re:Re: 지나가다님 상당이 간결하게 처리하시네요 aa 2078 2013/05/30
69579                 Re:Re:Re:Re: 장성호님, 지나가다님, aa님, 코딩님 모두 감사합니다.^^(냉무) 압9정 2059 2013/05/31
69555     Re:생각보다 간단한게 아님 코딩 1847 2013/05/29
69556         Re:Re:생각보다 간단한게 아님 압9정 1949 2013/05/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.