모든 Window에는
Window로 가는 메세지를 처리하기 위한 Window-Procedure(윈도우 프로시져)가 있습니다.
1. 윈도우로 가는 메세지를 중간에서 가로채서 무엇인가를 처리하는것을
Hooking(후킹)이라고 하구요
2. 기본 윈도우프로시켜져 함수를 override하거나 , 다른 함수로 바꿔치기 해서
처리하는것을 sub-classing(서브클래싱)이라고 합니다.
링크에 예제같은 경우는..
메세지 맵(WM_LBUTTONDOWN) 으로 처리해도 되구..
hooking , sub-classing 어느것으로도 가능합니다만..
확장이 편리한 sub-classing으로 처리한것뿐입니다.
sub-classing에 대해 조금더 설명드리면..
1. Original-WindowProc를 따로 저장해두고
2. WindowProc를 내가 만든것으로 대체 ..
3. 내가만든 WindowProc에서 원하는 작업을 하고..
나머지 기본적인 처리는 저장해둔 Original-WindowProc를 호출해줘서 처리하는것입니다.
VCL(Delphi 또는 CBuilder)에서 sub-classing하는 방법은
여러가지가 있는데요
위 방법은 여러가지 sub-classing방법중에 한가지일 뿐입니다.
그럼..
똑똑 님이 쓰신 글 :
:
: TWndMethod OrgProc;
: void __fastcall TForm1::FormCreate(TObject *Sender)
: {
: InitRichEditURLDetection(RichEdit1);
: OrgProc=this->WindowProc; // <--
: this->WindowProc=MyWndProc; // <--
: }
:
:
: RichEdit에 하이퍼링크 달기
: http://together.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=771
:
: 이부분소스코드에서 MyWndProc; 이걸로 WindowProc를 설정해주는데 이걸 왜하는건지 알수있을까요?
:
: 책기초부분에 나와있을꺼같은데 책이없어서 질문드립니다
|