Study Memos/Windows Programming (66) 썸네일형 리스트형 CreateSolidBrush 함수 (Section 36) 참고> blog.naver.com/tipsware/221121185151 1. CreateSolidBrush 함수: Brush 객체를 만드는 함수 -> 파라미터로 색깔 정보를 넣으면 됨. RGB(0, 0, 255) 처럼 RGB 매크로를 사용해도 되고 0x00FF0000 처럼 직접 바이트를 입력해도 됨. 단, 바이트를 입력할때는 리틀엔디언을 적용해서 0xAABBGGRR 순서로 적어야 함. 2. Rectangle 함수: DC에 연결된 BRUSH 객체와 PEN 객체를 이용해 사각형 영역을 그려줌. -> 프로그래머가 직접 DC에 BRUSH 객체와 PEN 객체를 바인딩한 후 Rectangle 함수를 호출해야 함. 3. FillRect 함수: Rectangle 함수 대신에 FillRect 함수를 사용하면 테두리 선.. GetStockObject 함수 (Section 35) 참고> blog.naver.com/tipsware/220988417978 1. Windows 운영체제는 사용빈도가 높고 내용이 바뀌지 않는 자원들을 미리 만들어서 가지고 있음. -> 'Stock Resoure' 또는 'Stock Object' 라고 부름. 2. GetStockObject 함수: 'Stock Object'의 핸들 값을 얻을 때 사용 -> GDI Object와 관련된 자원을 얻어옴. Brush, Pen, Font, Palette에 대한 핸들 값. 3. GetStockObject 함수로 얻은 핸들 값은 DeleteObject나 CloseHandle을 사용해서 제거하면 안됨. 왜냐하면 이 핸들 값은 Windows 운영체제가 원래부터 가지고 있었고 당연히 있을 거라고 생각하는 자원이기 때문. 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() : '윈.. 이전 1 ··· 3 4 5 6 7 8 9 다음