게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
InvalidateRect에 관하여
게시물ID : freeboard_690820짧은주소 복사하기
작성자 : 치즈킹
추천 : 0
조회수 : 1637회
댓글수 : 0개
등록시간 : 2013/06/10 22:57:43
InvalidateRect 가 뭐 하는 함수냐면 WM_PAINT에 있는 내용을 그대로 출력해준다. 이건 따로 호출하지 않아도 창 크기를 변경할 때에도 불러지는 함수다. 한마디로 새로 그려주는 함수.

첫 번쨰 인자는 hWnd. 부를 윈도우 핸들인데, 나중에 자식 윈도우 서너개 생기면 그 때 살짝 골치가 아프다.

두 번째 인자는 RECT. 지울 공간을 선택하라는데 일반적으로는 NULL로 싹 지어주고 새로 그려준다.
...지만, 나중에 버튼 같은 컨트롤 박스 만들 때나 자식 윈도우를 만들면, 걔네들은 PAINT에서 그리는 게 아니라 새로 그린다. 그래서 더블 버퍼링이고 나발이고 하나도 쓸모없이 깜빡거린다. 이 때에는 눈물을 머금고 지울 곳만 지정해줘야 한다. 역시 주소값을 받기 때문에 &RECT 다.

세 번째 인자는 TRUE or FALSE . 기존 그림을 지우고 다시 그릴 것인가의 여부인데, 나중엔 어지간하면 FALSE로 한다. 더블버퍼링을 할 때에는 FALSE로 해야 깜빡임이 완전히 사라진다. 새로 그리는 그 찰나도 깜빡임이니까.

-> 초기에는 얘를 어떻게 쓸 줄 몰라서 WM_LBUTTONDOWN 같은 데에 사각형 그려놓고 InvalidateRect 불러서 안된다고 징징거렸다.
일단 부른다고 생각하면 GetDC로 그려줬던 건 싹 날라간다고 봐야 한다. 그러니까 지속적으로 그려줄 필요가 있는 건 WM_PAINT에서 처리하자.
꼬릿말 보기
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호