본문 바로가기

Study Memos

(206)
WM_CREATE (Section 25) 참고> blog.naver.com/tipsware/221123732393 1. WM_CREATE 메시지: 윈도우를 생성하는 CreateWindow 또는 CreateWindowEx 함수를 호출하면 해당 장업을 요청한 프로그램으로 전달되는 메시지 2. WM_CREATE 메시지는 CreateWindow 함수 내부를 수행중일 때 발생하므로 WM_CREATE메시지를 받은 시점에서 보면 이미 윈도우는 만들어진 상태이지만 아직 화면에 출력된 상태는 아님. 3. WM_CREATE 메시지와 함께 전달되는 wParam에는 별 정보 없음. lParam에는 윈도우 생성 시 사용된 설정 정보의 시작 주소가 저장되어 있음. (CREATESTRUCT 구조체에 정보가 담겨있기 때문에 사용하려면 lParam을 CREATESTRUCT ..
WM_PAINT(Section 24) 참고> blog.naver.com/tipsware/221119932350 1. Windows 운영체제는 특정 Window의 일부 또는 전체 영역을 다시 그릴 필요가 있다고 판단하면 해당 WIndow에 WM_PAINT 메시지를 전송함 -> Window가 다른 Window에 의해 영역이 가려지는 경우, 모니터 바깥으로 Window가 나가는 경우 등 Window를 다시 그려야 하는 상황이 종종 발생. But, 정작 해당 Window의 응용 프로그램은 다시 그려야됨을 알지 못하기 때문에 Windows 운영체제가 WM_PAINT로 알려줌. 2. Windows 운영체제는 윈도우의 기본적인 동작을 관리하기 위해서 윈도우의 특정 영역에만 그림을 그릴 수 있도록 허용하고 있음. -> ex) 윈도우의 타이틀바나 윈도우의 ..
사각형 그리기 (Section 23) 참고> blog.naver.com/tipsware/221059977193 김성엽의 Windows 프로그래밍 이야기 기본적으로 Windows 프로그래밍을 배운다는 뜻은 Win32 API를 사용한 응용 프로그램을 만드는 방법에 ... blog.naver.com 소스코드> github.com/praivesi/WindowsProgrammingToy/commit/310d3ddd0ab95346afda2696a6cadf831e07f2a3
POINT (Section 22) 참고> blog.naver.com/tipsware/220975597682 1. POINT: 좌표의 한 점을 나타내는 구조체 2. CPoint: MFC에서 점 단위 정보를 저장하기 위해 사용되는 클래스 -> 좌표 정보 외에 추가적인 정보를 저장할 필요가 없기 때문에 tagPOINT 구조체에서 상속받아 선언됨. -> +, -, ==, != 과 같은 연산자를 재정의하여 점 간의 거리를 계산한다거나 좌표를 비교하는 등의 다양한 표현을 연산에서 사용 가능하기 때문에 MFC 클래스의 많은 함수가 POINT 대신에 CPoint 클래스의 포인터를 사용 3. CPoint 클래스를 꼭 MFC에서만 사용할 수 있는 건 아님. GetCursorPos() 같은 API 함수를 사용할 때도 POINT 구조체 대신에 CPoint 클..
GetDC & ReleaseDC (Section 21) 참고> blog.naver.com/tipsware/220987761947 1. Windows 운영체제에서 그림을 그리기 위해선 GDI가 제공하는 DC(Device Context)를 먼저 얻어 와야 함. -> ex) Rectangle(h_dc, 50, 50, 100, 100); 2. GetDC: '화면 전체' 또는 '특정 Window'에 그림을 그리기 위해 사용할 DC를 만드는 함수 3. DC는 기본 설정값(Pen은 검은색 실선, Brush는 흰색 채우기..)으로 GDI Object가 만들어져서 그 핸들 값이 저장되어 있음. -> 다른 GDI Object를 쓰고 싶으면 SelectObject() 함수를 사용하여 현재 사용중인 GDI Object를 다른 GDI Object로 변경해야 함. -> But, Ge..
Windows 컴퓨터의 설정 정보 (Section 20) 참고> blog.naver.com/tipsware/220983229873 1. GetSystemMetrics() : 컴퓨터에서 하드웨어에 따라 달라지거나 사용자에 의해서 재설정 가능한 정보들을 프로그램에서 얻을 때 사용 -> 파라미터로 얻고 싶은 정보의 상수값을 넣어주면 됨. ex) SM_CXSCREEN, SM_CYSCREEN, SM_CYCAPTION...
비트 패턴 (Section 19) 참고> blog.naver.com/tipsware/220986010426 1. Windows의 비트 패턴: Windows 운영체제는 핸들 개념을 쓰기 때문에 응용 프로그램이 직접 비트맵에 접근할 수 없음. -> 그래서 비트맵의 '비트 패턴'을 통째로 복사해오는 함수(GetBitmapBits)와 새로운 '비트 패턴'을 해당 비트맵에 설정하는 함수(SetBitmapBits)가 있음. 2. GetBitmapBits: 비트맵의 '비트 패턴'을 복사해오는 함수 3. SetBitmapBits (현재는 SetDIBits): 비트맵에 새로운 '비트 패턴'을 설정하는 함수 -> 이 함수는 16비트 Windows에서 쓰던 함수고 지금은 SetDIBits 함수로 대체됨
DC (Section 18) 참고> blog.naver.com/tipsware/220983425334 1. DC(Device Context)에는 여러 가지의 GDI Object(Pen, Brush, Bitmap, Font ...)가 연결되어 있는데 현재 사용중인 GDI Object를 확인할 때는 GetCurrentObject 함수를 사용하면 됨. -> ex) ::GetCurrentObject(h_dc, OBJ_BITMAP); (:: 는 Win API 네임스페이스를 의미) 2. 윈도우와 연결된 DC에서 비트맵 정보를 얻게 되면 비트맵의 크기가 클라이언트 영역의 크기와 일치하는 것이 아니라 윈도우 전체 크기(캡션, 테두리 영역 포함)와 일치함 -> 따라서 윈도우의 크기를 사용해야 할 경우, GetWidnowRect 함수를 사용할 필요 ..