본문 바로가기

컴퓨터219

a required resource was unavailable DC를 제대로 해제하지 않을 경우, 프로그램이 지속적으로 느려지다가 결국은 멈추거나 a required resource was unavailable 이라는 오류 메세지가 나타난다. 그리고 이 경우 GDI object 가 사용된 것이기 때문에 다음과 같이 화면의 갱신이 제대로 일어나지 않게 된다. 환경 : Visual C++ 10.0 (VS2010) on Windows 7 Professional SP1, 64 bit 위 그림에서 검게 표시된 부분이 WM_PAINT message 를 받아서 다시 그려져야 하지만 아직 그려지지 못한 부분들이다. 심지어 capture program으로 capture조차 제대로 되지 않는다. 오류 메세지 또한 정확히 나타나지 않고, 다음과 같이 나타난다. 우선, 이러한 경우는 일.. 2011. 8. 7.
사용자 친화적 오류 메세지 프로그래머는 최종 사용자(end-user)에게 유용한 오류 메세지를 출력해야 한다. 에러 처리가 난해한 경우가 많은데, 길지는 않지만 약간의 경험에 의하면 오류 메세지를 누구에게 보여줄 것인가, 를 명확히 정하면 에러 처리가 어느 정도 일관성이 있게 되기는 한다. 라이브러리의 경우 그 라이브러리 사용자를 위한 에러 메세지를 출력해야 할 것이고, 일반 GUI 프로그램이라면 최종 사용자를 위한 오류 메세지를 출력하게 될 것이다. 최종 사용자를 위한 오류 메세지가 아래와 같다면 난감하지 않을 수 없다. 아니면, 대체 저 하나은행 오류는 뭘 어쩌라는 거지? 밑의 오류도 마찬가지이다. 두 오류 메세지 모두 프로그래머에게 보여 줄 메세지가 최종 사용자에게 보여진 것 같은데, 최종 사용자 입장에서는 이런 오류를 만났.. 2011. 8. 6.
테트리스 우승 전략 ㅋ, 약간 낚는 제목이긴 한데, 여튼, 페이스북의 2인 대결 테트리스에서 이길 수 있는 방법을 얘기해 보자. 나보다 잘하는 사람이 많을텐데 이런 글을 쓰는 것이 조금 망설여지긴 하는데, 50단계에서 하다 보면 참 답답한 사람이 많아서 써본다. (ㅋㅋㅋ, 한 일주일 전부터 테트리스를 끊었는데, 마지막으로 순위를 확인했을 때 43 등인가 그랬다, 페이스북에서 테트리스를 하는 사람 전체를 기준으로. 아래 녹화 영상은 오래된 것이라 상당히 느리게 하고 패턴도 지금보다 단순하다. 최고랭크가 바뀌어도 쉽게 올라갔다, 50에서 100 으로 바뀌었을 때 10번 이내로 지고 올라갔고, 100에서 105인가로 바뀌었을 때도 10번 이내로 지고 올라갔다. 10판을 하면 대략 3번 정도는 100 줄을 넘기고, 상대를 잘 만나.. 2011. 8. 1.
CScrollView의 OnDraw의 좌표 CScrollView를 상속받은 뷰를 갖고 코딩을 하는데, 아래와 같이 그림의 표현이 잘못 되고 있다. 위에서 표시한 바와 같이, 원래의 그림이 뿌려진 다음, 위쪽에 살짝 잘못된 그림 영역이 뿌려지고 있다. 현재, 화면의 확대/축소 기능을 구현하다 문제가 발생한 것인데, 조금 더 자세히 설명하면 이렇다. 원래 그려야 할 그림을 필요한 만큼 확대를 한 후, 그 크기만큼 스크롤 영역을 설정해 준다(CScrollView::SetScrollSizes). 그 후, 실제 화면의 크기(눈에 보이는 크기, CWnd::GetClientRect로 얻는 것)와 동일한 크기를 갖는 CBitmap instance 를 만들어서 확대된 이미지에서 화면으로 나타낼 영역을 bitmap에 BitBlt 시켜서 복사하고, 그것을 다시 화면.. 2011. 7. 30.