2013-04-20 6 views
2

메시지를 처리하고 싶습니다. WM_PAINT입니다. 그러나 처음에는 시스템에서 기본 드로잉을 수행하도록하고 다른 드로잉을 수동으로 그립니다. 예를 들어메모리에있는 WM_PAINT의 기본 도면 DC

:

case WM_PAINT: 
     CallWindowProc(DefWndProcTabControl, hwnd, message, wParam, lParam); 
     TabControlOnPaint(hwnd); 
     return 0; 

이 작동하지만, 영화보고 있기 때문에, 매우 좋지 않다.

하나의 가능성은 기본 도면을 메모리 DC에서 수행하도록하는 것입니다. 그러나 CallWindowProc(DefWndProcTabControl...)을 사용하는 경우이 작업을 수행하는 방법을 알지 못합니다.

이 문제에 대한 제안이 있으십니까?

답변

4

페인팅중인 창에서 지원하는 경우 WM_PRINT 또는 WM_PRINTCLIENT을 사용하여 메모리 DC에 기본 페인팅을 수행하십시오.

( CallWindowProc를 통해 일을 할 가능성은 그렇게하려고합니다.)

+0

당신은 조금 더 설명을 줄까요? 확실하지는 않지만'WM_PRINT' 또는'WM_PRINTCLIENT'는 화면상의 어떤 것을 (메모리) DC에 "인쇄"합니까? 그렇다면 기본 그림을 수행하는 데 사용하는 방법 (아직 완료되지 않았으며 화면에 표시되지 않음). 고맙습니다. – user565739

+1

@ user565739 : MSDN : "WM_PRINT 메시지는 지정된 장치 컨텍스트에서 자체를 그리도록 요청하기 위해 창으로 보내집니다". 그래서'SendMessage'를 사용하여'WM_PRINT'를'hwnd'에 보내고 메모리 DC를 전달하면 그 DC에 그려집니다. – RichieHindle

+0

@ RichieHindle : 좋습니다! 다시 한번 감사드립니다. – user565739