서브 클래싱
윈도우 프로시저로 보내는 메세지를 중간에 가로채는 기법
운영체제 ㅡㅡㅡㅡ→ 서브클래스 프로시저
↑ |
└ㅡㅡ윈도우 프로시저ㅡㅡ┘
인스턴스 서브 클래싱
윈도우 생성 후 그 윈도우 하나에 대해서만 윈도 프로시저를 교체.
형태)
이전 서브클래싱 윈도우 프로시저 = SetWindowLongPtr(HWND hWnd, GWLP_WNDPROC, (LONG_PTR)서브클래싱 윈도우 프로시저);
hWnd : 서브클래싱할 윈도우
서브클래싱 윈도우 프로시저에서는 더 이상 처리할 메세지가 없으면 CallWindowProc호출.
CallWindowProc(이전 서브클래싱 윈도우 프로시저, hWnd, iMessage, wParam, lParam);
전역 서브 클래싱
윈도우 클래스에 대해 서브 클래싱.
앞으로 만들어질 모든 윈도우에 영향을 준다. (도면을 바꾼 후 생성)
SetClassLong함수 사용.
형태)
이전 서브클래싱 윈도우 프로시저 = SetClassLongPtr(HWND hWnd, GWLP_WNDPROC, (LONG_PTR)서브클래싱 윈도우 프로시저);
hWnd : 서브클래싱할 윈도우
서브클래싱 윈도우 프로시저에서는 더 이상 처리할 메세지가 없으면 CallWindowProc호출.
CallWindowProc(이전 서브클래싱 윈도우 프로시저, hWnd, iMessage, wParam, lParam);
슈퍼클래싱
기존 클래스를 바탕으로 완전히 새로운 클래스를 만드는 것.
예시)
GetClassInfo(NULL,"edit",&wc);
wc는 수정하여 새로운 형태의 클래스를 만들 수 있다.
BOOL GetClassInfo(HINSTANCE hInstance, LPCTSTR lpClassName, LPWNDCLASS lpWndClass);
윈도우 클래스에 관한 정보를 얻는다.
리턴 : 성공적으로 매치되는 윈도우 클래스 구조체를 찾았다면 TRUE 그렇지 않으면 FALSE
hInstance (in) : 인스턴스(프로그램) 핸들.
lpClassName(in) : 윈도우 클래스 명.
lpWndClass(out) : 윈도우 클래스 구조체를 얻는다.
후킹
메세지가 목표 윈도우로 전달되기 전에 메세지를 가로채는 프로시저
HOOK Chain : 훅 프로시저 함수들의 번지를 담고 있는 함수 포인터 배열. (체인을 따라 다움 훅 프로시저에게 메세지를 반복 전달)
...
'컴퓨터 공부 > Win32 API 프로그래밍' 카테고리의 다른 글
[숙제] 메세지 크래커 (0) | 2009.05.06 |
---|---|
[5월 6일 3교시] 메세지 크래커 + 공통 컨트롤 1 (0) | 2009.05.06 |
[5월 6일 1교시] 메세지2 (0) | 2009.05.06 |
[스터디] 윈도우즈 API 정복2 - 35장 레지스트리. (0) | 2009.05.06 |
[5월 1일 3교시] 대화상자 2 + 메세지1 (0) | 2009.05.01 |