2012-11-12 5 views
0

나는 그 위에 어떤 아이템을 칠할 수있는 그리드 컨트롤을 가지고있는 CWnd (부모)를 가지고있다. 문제는 내가 그것에 정교한 CWnds 그리기 싶어하지만 그리드 컨트롤 만 CWnd 함께 할 수있는 "ItemBase"클래스에서 파생 된 항목을 칠할 수 있습니다.다른 CWnd에 CWnd 그리기

이 ItemBase 클래스는 제공된 CDC 및 클리핑 된 시제 CRect에서 도면을 그릴 수있는 drawItem (CDC *, CRect) 가상 함수를 재정의 할 수 있습니다.

내가 가진 정교한 CWnds 부모 창의 보이지 않는 자식으로 만든 다음 ItemBase drawItem CWnd :: Paint 제공된 CDC 사용하는 것입니다.

그래서 내가 할 것입니다 :

  1. 나는 그리드 컨트롤을했습니다.
  2. 가 나는 정교한 창 세트 만들
  3. 내가 (각 정교한 윈도우)를 만들 내가 기본 유형의 개체 집합 추가 할
  4. 이 drawItem에서 그리드 컨트롤
  5. 에 ItemBase ItemBase에서 파생 클래스의 객체 (CDC * dc, CRect 영역) 전화 :

    m_sophisticatedWindow-> MoveWindow (영역); // 적절한 위치에서 창 이동 m_sophisticatedWindow-> Print (dc, PRF_CLIENT); // render it

그래서 나는 그라인드 컨트롤의 적절한 장소에서 적절한 정교한 창이 그려 지리라 기대하고 있지만 아무 일도 일어나지 않습니다. 인쇄 대신 PrintClient/PrintWindow를 사용해 보았습니다. MoveWindow를 사용하여 실험을 수행했습니다. 위치를 고정 위치로 변경하는 것과 비슷하지만 도움이되지 않습니다.

drawItem에서 직접 CDC에 그림을 그렸을 때 (선, 점 등) 모든 것이 좋지만 인쇄 기능이 예상대로 작동하지 않는 것 같습니다.

실마리가 있습니까?

답변

0

내가 가진 문제는 CDC로 설정된 클리핑 영역이 있다는 것이 었습니다. "잘못된"장소를 그리는 동안 아무 것도 나타나지 않았습니다.

관련 문제