Study Memos/Windows Programming (66) 썸네일형 리스트형 CreateCompatibleDC (Section 27) 참고> blog.naver.com/tipsware/220995733415 1. Memory DC: DC의 특성을 대부분 가지고는 있지만 출력 장치와는 연결이 안 된 DC -> CreateCompatibleDC() 함수로 생성 2. CreateCompatibleDC 함수: 이름 그대로 어떤 DC와 호환되는(Compatible) DC를 만드는 함수 3. Memory DC를 사용하는 이유 -> 화면 출력용 DC는 GDI 함수를 사용할 때마다 바로 화면에 출력되기 때문에 복잡한 그림을 그리기 위해 많은 GDI 함수를 사용하면 "화면이 깜빡이는 현상"이 발생 -> Memory DC를 생성하고 복잡한 그림을 비트맵 객체에 그리게 되면 Memory DC로 그린 그림이 화면에 출력되지 않기 때문에 "화면이 깜빡이는 현.. BitBlt (Section 26) 참고> blog.naver.com/tipsware/220994341959 1. 응용 프로그램은 대부분 "장치 종속적인 비트맵(DDB)" 을 사용. -> 개발자가 비트맵 복사 시 이런 장치 종속적인 문제를 고민하지 않도록 Windows 운영체제는 "BitBlt"라는 비트맵 복사 함수를 제공 2. 개발자가 직접 비트맵에 접근해서 복사를 시도하면... -> DC에 연결된 비트맵 객체와 그림이 복사될 비트맵 객체의 색상 수가 일치하지 않으면 색상 수를 변환하는 작업을 직접 해야 함. ex) DC에 연결된 비트맵은 32비트 색상, 그림이 복사될 비트맵은 16비트 색상 -> DC에 연결된 비트맵 객체의 폭과 높이가 복사될 비트맵 객체의 폭과 높이와 일치하지 않으면 그림의 '비트 패턴'이 엉망이 되기 때문에 이를 보.. 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... 이전 1 ··· 4 5 6 7 8 9 다음