Study Memos (206) 썸네일형 리스트형 CreatePen 함수 (Section 34) 참고> blog.naver.com/tipsware/221120557339 1. Pen 객체: GDI를 사용하여 그림을 그릴 때 선의 색상이나 형태(실선, 점선, ...)를 관리하는 객체 2. fnPenStyle: 선의 종류 3. nWidth: 선의 굵기 => 1부터 적을 수 있고 1을 적으면 선의 굵기가 1점(pixel)의 크기로 그려짐 => 선의 굵기에 0을 적으면 1을 적은 것과 동일하게 처리 => 1을 넘으면 fnPenStyle 속성이 모두 PS_SOLID 형식으로만 그려짐.. 1보다 큰 값에서 다른 fnPenStyle을 사용하려면 ExtCreatePen 함수를 사용해서 Pen 객체를 생성해야 함 4. crColor: 선의 색상 (RGB) SelectObject 함수 (Section 33) 참고> blog.naver.com/tipsware/220988055352 1. SelectObject 함수: DC에 저장된 GDI Object의 핸들 값을 변경할 때 사용 2. DC의 특정 GDI Object를 기존 것과 다르게 사용하고 싶은 경우 SelectObject 함수로 GDI Object를 교체해서 사용하면 됨 3. Bitmap은 SelectObject 함수로 교체할 경우 'Memory DC' 에서만 교체할 수 있음. => GetDC() 함수를 통해 얻은 DC의 경우에는 Bitmap 객체가 출력장치와 직접 관련이 있기 때문에 교체 불가능 4. SelectObject 함수가 성공할 경우 기존 GDI Object의 핸들값을 반환하고, 실패할 경우 NULL을 반환함 5. HGDIOBJ 자료형은 HBI.. WM_MOVING (Section 32) 참고> blog.naver.com/tipsware/221233728191 1. Window를 움직이는 작업은 Windows 운영체제가 알아서 해주기 때문에 응용 프로그램은 Window가 움직이는지 알 수 없음 2. WM_MOVING: Windows 운영체제는 해당 프로그램이 움직이고 있다는 것을 알려주기 위해 WM_MOVING이라는 메시지를 Window가 움직일 때마다 보내줌 WM_CLOSE (Section 31) 참고> blog.naver.com/tipsware/221124184150 1. 'X' 버튼이 눌러지면 제일 먼저 WM_CLOSE 메시지가 프로그램으로 전송됨. -> 이 메시지를 DefWindowProc 함수로 전달하지 않으면 윈도우가 종료되는 것을 막을 수 있음. 2. WM_CLOSE 와 WM_DESTROY -> WM_CLOSE: 사용자의 선택에 따라서 윈도우의 종료를 막을 수 있음. -> WM_DESTROY: 이미 윈도우의 파괴가 진행되었기 때문에 이 메시지가 전달되면 윈도우는 무조건 파괴가 된다는 의미. ValidateRect 함수 (Section 29) 참고> blog.naver.com/tipsware/221123687243 1. ValidateRect() : 윈도우의 특정 영역 또는 전체 영역을 유효화 상태로 변경하는 작업을 수행 -> 즉, 해당 영역을 정상적으로 출력했기 때문에 다시 출력할 필요가 없다고 설정함. -> InvalidateRect 함수의 반대 역할 2. ValidateRect 함수와 InvalidateRect함수 -> ValidateRect(): 무효화된 영역을 유효화시켜서 WM_PAINT 메시지가 발생하는 것을 막음 -> InvalidateRect(): 윈도우의 특정 영역을 무효화 시켜서 WM_PAINT 메시지를 발생시킴 3. WM_PAINT 메시지의 플래그를 0으로 변경하는 방법 -> 1) BeginPaint() 함수 호출 -> 2.. 윈도우 좌표 구성 (Section 28) 참고> blog.naver.com/tipsware/220974096116 1. Windows 운영체제에서 Window는 다른 Window를 소유할 수 있기 때문에 '절대 좌표'와 '상대 좌표' 개념을 동시에 가짐 2. GetWindowRect() : 모니터 화면을 기준으로 하는 절대 좌표계 -> 모니터 화면의 좌측 상단이 (0, 0) -> '윈도우 영역(Window Area)'은 캡션과 테두리를 포함하기 때문에 좌표 계산 시 유의해야 함 3. GetClientRect() : 클라이언트 영역의 좌표계 -> '클라이언트 영역(Client Area)'은 개별 윈도우를 위한 상대 좌표계 -> 캡션과 테두리 영역 제외 -> '클라이언트 영역'의 좌측 상단이 (0, 0) 4. ScreenToClient() : '윈.. 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에 연결된 비트맵 객체의 폭과 높이가 복사될 비트맵 객체의 폭과 높이와 일치하지 않으면 그림의 '비트 패턴'이 엉망이 되기 때문에 이를 보.. 이전 1 ··· 17 18 19 20 21 22 23 ··· 26 다음