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
[4595] Re:RichEdit 에서 Scroll 되는 것을 감지하기.
zoro [] 3421 읽음    2000-12-13 00:00
안녕하세요
서브클래싱을 하면 되겠네요.. 그러니까 윈도우들은 자신만의 프로시져를 갖잖아요..
그러니까 그 프로시져를 우리가 만든 프로시져로 바꿔치면 되겠죠..
말보다는 코드로 보여드리는게...

헤더 입니다...

class TForm1 : public TForm
{
__published:    // IDE-managed Components
  TRichEdit *RichEdit1;
  TLabel *Label1;
private:    // User declarations
  TWndMethod FOldProc;            //원래의 컨트롤의 윈도우프로시져를 받아놓을 변수
  void __fastcall RichEditProc(TMessage &msg);  // 새로 만들 프로시져..
public:        // User declarations
  __fastcall TForm1(TComponent* Owner);        // 생성자에서 프로시져를 바꿔칩니다.
  __fastcall ~TForm1();                        // 소멸자에서 원래로 돌려줍니다.
};

Cpp 파일입니다.

__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
  FOldProc = RichEdit1->WindowProc;
  RichEdit1->WindowProc = RichEditProc;
}

__fastcall TForm1::~TForm1()
{
  RichEdit1->WindowProc = FOldProc;
}

void __fastcall TForm1::RichEditProc(TMessage &msg)
{
  static count = 0;
  msg.Result = 0;
  switch (msg.Msg)
  {
    case WM_HSCROLL: case WM_VSCROLL:
// 이곳에다 하시고 싶은 일을 하시면 됩니다..
      Label1->Caption = IntToStr(count++);
      msg.Result = 0;
      break;
    default:
      FOldProc(msg);
      break;
  }
}

즐거운 하루 되십시요

김갑철 님이 쓰신 글 :
: RichEdit 에서 지금 스크롤하고 있다는 것을 감지할수있는
: 이벤트나 그외 다른 방법은 없는지요?
: 이벤트 방식이면 좋겠습니다.
: 계속 검사하고 있을수는 없거든요.
: 알고 계신분은 이곳에 말씀 부탁드립니다.

+ -

관련 글 리스트
4591 RichEdit 에서 Scroll 되는 것을 감지하기. 김갑철 2879 2000/12/13
4595     Re:RichEdit 에서 Scroll 되는 것을 감지하기. zoro 3421 2000/12/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.