블로그 이미지
대갈장군

calendar

1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

Notice

2009. 11. 17. 04:50 프로그래밍/Windows API
윈도우 클래스 와 윈도우는 실행 중에도 그 속성을 변경할 수 있다. 다시 말해서 윈도우 클래스에서 설정했던 각종 속성을 실행중 변경가능 하다는 말이다. 이것이 대단한 이유는 서브클래싱이라는 기법을 가능하게 해주기 때문이다.

서브 클래싱이란 윈도우마다 설정되어 있는 동작 함수인 WndProc를 실행중에 교체함으로써 전혀 다른 동작을 할수 있게 만들어주는 기법이다. 

아무튼, 총 8가지의 윈도우 클래스 / 윈도우 속성 설정 함수가 있으나 64비트 운영체제가 도입된 이후로는 기왕이면 Ptr이 붙은 64 비트용 함수를 사용하는 것이 범용성 면에서 유리하다.

윈도우 클래스 속성 설정 함수는 (WNDCLASS 변경) GetClassLongPtr()과 SetClassLongPtr() 이고, 윈도우 속성 설정 함수는 GetWindowLongPtr()과 SetWindowLongPtr() 함수다. 여기서 윈도우 프로시져 함수의 주소를 바꾸고 싶다면 GWLP_WNDPROC를 인수로 넣으면 된다. 

주의 할 것은 스타일이 플래그 형식으로 비트의 On/Off에 의해서 판단하므로 대입연산이 아니라 & 또는 | 연산으로 플래그를 설정해야 한다는 점이다.


'프로그래밍 > Windows API' 카테고리의 다른 글

윈도우 메모리 - 1  (0) 2011.03.10
윈도우 - 차일드, 팝업  (0) 2009.11.17
윈도우 - WNDCLASS 구조체  (0) 2009.11.17
윈도우 - CreateWindow()  (0) 2009.11.17
메모리, Win32 vs. Win16  (2) 2009.05.22
posted by 대갈장군