2011-09-19 3 views
2

기본적으로, 나는 당신이 클릭 할 수있는 텍스트로 색칠 된 사각형을 특징으로하는 응용 프로그램을 만들려고 노력하고 있습니다. DrawText()를 사용하여 만든 각 단추의 텍스트가 계속 깜박 거리는 것을 제외하면 꽤 잘 돌아갑니다. 잠재적으로이 문제를 해결하기 위해 할 수있는 일이 있습니까?오, 안돼! 내 텍스트가 깜박입니까?

+3

물론 있습니다. 그렇다면 앱을 어떻게 구현했는지에 대한 지식이 필요합니다. –

+0

문제를 잘 보여주는 잘게 잘랐습니까? –

+1

그래서 기본적으로 프로그램의 메인 루프에서 응용 프로그램 객체의 그리기 절차를 호출합니다. 응용 프로그램 클래스에서 사용하는 특정 수의 RECT 개체가 있습니다.이 개체는 모두 그리기 절차에서 "FillRectangle"을 사용하여 흰색 블록으로 그려지며, 그리기 절차에서도 DrawText 호출의 사각형으로도 사용됩니다. –

답변

6

위의 사용자 의견에서 응용 프로그램 개체의 그리기 절차를 주 메시지 루프에서 호출하는 방법을 설명합니다. 이것은 거의 확실하게 문제의 근원입니다. 깜박임으로 이어질뿐 아니라 100 % CPU 사용률로 응용 프로그램을 실행하는 것처럼 들립니다.

당신이해야 할 일은 WM_PAINT 메시지를 처리하고 그 메시지에 대한 응답으로 만 페인트합니다. 이것이 Windows GUI 응용 프로그램의 작동 방식입니다. Windows GUI의 소개 책을 읽어 보는 것이 좋습니다. 정식 책은 Petzold 's Programming Windows입니다.

+0

또한 * 더 * 깜박임을 방지하려면 페인팅 할 때 이중 버퍼링 기술을 구현해야합니다 (protip : 터미널 서버/RDP 세션에서 실행 중일 때는 비활성화해야 함). –

+0

@Matteo 사실 나는 동의하지 않습니다. 플리커 프리 앱은 더블 버퍼링없이 구현할 수 있습니다. 더블 버퍼링은 종종 테마 API의 특정 부분, 예를 들어 펄스 버튼을 차단하기 때문에 선호됩니다. –

+0

@Matteo,이 충고를 따른다면 버튼 텍스트가 빠르게 변하지 않는 한 이중 버퍼링이 중복 될 수 있습니다. –

관련 문제