|
안녕하세요
서브클래싱을 하면 되겠네요.. 그러니까 윈도우들은 자신만의 프로시져를 갖잖아요..
그러니까 그 프로시져를 우리가 만든 프로시져로 바꿔치면 되겠죠..
말보다는 코드로 보여드리는게...
헤더 입니다...
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 에서 지금 스크롤하고 있다는 것을 감지할수있는
: 이벤트나 그외 다른 방법은 없는지요?
: 이벤트 방식이면 좋겠습니다.
: 계속 검사하고 있을수는 없거든요.
: 알고 계신분은 이곳에 말씀 부탁드립니다.
|