하고 싶은 얘기를 마음대로 쓰는 게시판입니다. 개발 관련 이야기, 살면서 재미있었던 일, 인생 상담, 예쁘고 신기한 사진 등 마음대로 떠들어 보세요. 단, 개발관련 질문만은 별도의 게시판을 이용해 주십시오.
  • WinAPI에서 그래픽 깨짐 현상
  • 조회 수: 201, 추천 수: 0/0, 2017-07-21 18:37:12(2017-07-17)
  • 군 입대를 앞두고 프로그래밍 실력도 늘려볼 겸 재미삼아 캐치마인드를 제작하기로 마음먹었습니다.
    멀티플레이를 구현하기 전에 우선적으로 그림그리기 기능을 완벽히 구현하려고 했는데, 대부분의 기능은 거의 완성되었습니다.
    그런데 여러 번 테스트를 해본 결과, 어느 정도 그림을 그리다보면 갑자기 모든 그래픽이 깨져서 나오게 됩니다.
    아래는 정상 작동 시의 캡쳐입니다.


    아래가 비정상적으로 에러가 났을 때의 캡쳐입니다.


    작동 원리는 마우스가 눌린 상태에서 움직일 때마다 해당 마우스 위치들을 모두 Point 구조체에 담고, 이를 Linked List로 연결시켰습니다. 이렇게 생성된 Linked List 하나는 캐치마인드 상에서의 한붓그리기에 해당하고, 마우스를 땔 경우 해당 한붓그리기가 종료되는 형태입니다. 이러한 한붓그리기들을 OneDraw구조체에 담았고, 이를 또 Linked List로 연결했습니다.
    따라서 결론적으로 OneDraw Linked List를 순회하면서 각각의 OneDraw마다 Point Linked List를 순환하는 형태입니다.

    해당 그림들이 그려질 때 Point에서 다음 Point까지 LineTo함수를 이용해 직선을 그리구요. 해당 직선의 굵기는 radius 변수로 제어했습니다.
    위에서 보시다싶이 에러가 났을 때 지금까지 그린 선들의 색이 모두 검정색으로 변하고, 굵기 모두 1로 변합니다. 그런데 제가 직접 값을 Console 창에 찍어내보니 변수값이 실제로 변하지는 않았습니다. 이에 더해 프로그램 상단의 스크롤바 등의 그래픽이 모두 깨집니다. 아마 GUI 상에서만 오류가 난 듯 싶어요.

    WINAPI에 대해 무척 기초적인 지식만 갖고 있는 상태이고, 많이 어설픕니다. 그래서 그런지 이런 오류의 원인을 찾을 수가 없습니다. 소스코드도 첨부시켰는데, 혹시나 도움을 주실 분이 있다면 정말 감사하겠습니다.
    정확한 원인을 지적해주시면 정말 감사하겠습니다만, '이러이러한 이유 때문 아닌가'와 같은 불명확한 의견도 저에게 큰 도움이 됩니다. 부탁드립니다.

댓글 0

현재 게시판 기능 테스트중입니다. 디자인이나 게시판 구성은 언제든지 예고없이 변경될 수 있습니다.