2009. 9. 21. 15:54
카테고리 없음
마우스 위치는 어딘지, 키는 뭐가 눌렸는지
이런 부가 정보는 메세지 구조체의 WPARAM, LPARAM에 들어감.
DWORD, POINT는 안씀. 앞에 4개만 사용.
외부에서 일이 발생되면 메세지를 계속 보내줌.
프로그램이 다른 일하다 메세지가 온걸 놓치면 처리를 못하니, 메세지 큐(버퍼)를 만들어 놓는다.
그래서 메세지 큐에서 메세지를 하나 하나 가져오면서 처리. 큐에 메세지 없으면 멈춰섬.(대부분 멈춰섬)
시스템은 시스템메세지큐가 있어서 외부에서 발생된 모든 얘들이 여기 들어가고,
시스템이 이놈은 얘꺼고 이놈은 쟤꺼고 이렇게 메세지를 분배해주고,
프로그램은 메세지큐에서 메세지를 받아오며 처리. (이벤트 드리븐 방식)
LRESULT CALLBACK WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
....
return DefWindowProc(....);
}
윈도우 프로시저 :
메세지가 발생되어 DispatchMessage()함수를 호출하면, 내부적으로 우리가 만든 WndProc함수가 호출됨. 인자 4개를 보면 Msg구조체의 앞4개 확인..
... 에 처리할것들 우리가 구현('A'키가 눌리면 뭘해라~, 마우스 좌클릭시 뭘해라~ 등등)
우리가 처리 안하는건 DefWindowProc에서 처리.
----------------------------------------------------------------------------------------------
hInstance, hwnd같이 앞에 h가 붙은 얘들은 핸들.
hInstance 핸들같이 주소값이 있는 얘도 있고
hCursor같이 임의의 값이 있는 얘도 있다.
핸들 : 윈도우가 얘들을 관리하기 위해 그냥 붙인 번호라고 생각하자.
----------------------------------------------------------------------------------------------
메모장 2개 실행된다~ 그러면 코드영역은 서로공유해서 씀.
데이터 영역은 개별적관리.(입력되는 문자열등)
Window프로그램으로 올라오면서부터 Resource를 많이 사용하게되었다.(메뉴,비트맵,커서,아이콘등..)
리소스의 특징은 덩어리가 크다.
ex)그림이다. 100*100에 그림을 그리겠다. 그러면 점하나 표현할때 RGB 3바이트가 필요하다는..
그러니 리소스는 필요할때 올리고 필요없을때 내린다.
리소스는 프로그램과 개별적 관리. 컴파일러도 따로(RC.exe)
이런 부가 정보는 메세지 구조체의 WPARAM, LPARAM에 들어감.
DWORD, POINT는 안씀. 앞에 4개만 사용.
외부에서 일이 발생되면 메세지를 계속 보내줌.
프로그램이 다른 일하다 메세지가 온걸 놓치면 처리를 못하니, 메세지 큐(버퍼)를 만들어 놓는다.
그래서 메세지 큐에서 메세지를 하나 하나 가져오면서 처리. 큐에 메세지 없으면 멈춰섬.(대부분 멈춰섬)
시스템은 시스템메세지큐가 있어서 외부에서 발생된 모든 얘들이 여기 들어가고,
시스템이 이놈은 얘꺼고 이놈은 쟤꺼고 이렇게 메세지를 분배해주고,
프로그램은 메세지큐에서 메세지를 받아오며 처리. (이벤트 드리븐 방식)
LRESULT CALLBACK WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
....
return DefWindowProc(....);
}
윈도우 프로시저 :
메세지가 발생되어 DispatchMessage()함수를 호출하면, 내부적으로 우리가 만든 WndProc함수가 호출됨. 인자 4개를 보면 Msg구조체의 앞4개 확인..
... 에 처리할것들 우리가 구현('A'키가 눌리면 뭘해라~, 마우스 좌클릭시 뭘해라~ 등등)
우리가 처리 안하는건 DefWindowProc에서 처리.
----------------------------------------------------------------------------------------------
hInstance, hwnd같이 앞에 h가 붙은 얘들은 핸들.
hInstance 핸들같이 주소값이 있는 얘도 있고
hCursor같이 임의의 값이 있는 얘도 있다.
핸들 : 윈도우가 얘들을 관리하기 위해 그냥 붙인 번호라고 생각하자.
----------------------------------------------------------------------------------------------
메모장 2개 실행된다~ 그러면 코드영역은 서로공유해서 씀.
데이터 영역은 개별적관리.(입력되는 문자열등)
Window프로그램으로 올라오면서부터 Resource를 많이 사용하게되었다.(메뉴,비트맵,커서,아이콘등..)
리소스의 특징은 덩어리가 크다.
ex)그림이다. 100*100에 그림을 그리겠다. 그러면 점하나 표현할때 RGB 3바이트가 필요하다는..
그러니 리소스는 필요할때 올리고 필요없을때 내린다.
리소스는 프로그램과 개별적 관리. 컴파일러도 따로(RC.exe)
(리소스는 코드와 분리)
----------------------------------------------------------------------------------------------
장치독립적 - 인터페이스 보고 코딩 ㅎ_ㅎ 구현은 장치드라이버에 있응게
KERNEL32.DLL(MSDOS file IO..), USER32.DLL(Mouse.drv, Keyboard.drv.Sound.drv..),
GDI32.DLL(Display.drv, Printer.drv..)
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
장치독립적 - 인터페이스 보고 코딩 ㅎ_ㅎ 구현은 장치드라이버에 있응게
KERNEL32.DLL(MSDOS file IO..), USER32.DLL(Mouse.drv, Keyboard.drv.Sound.drv..),
GDI32.DLL(Display.drv, Printer.drv..)
----------------------------------------------------------------------------------------------