響應WM_PAINT消息的代碼如下:
1 void CTextView::OnDraw(CDC* pDC) 2 { 3 CTextDoc* pDoc = GetDocument(); 4 ASSERT_VALID(pDoc); 5 if (!pDoc) 6 return; 7 8 CString str( "VC++ 深入編程!" ); 9 /* 10 CString str; 11 str = "VC++ 深入編程!"; 12 */ 13 pDC->TextOutW( 50, 50, str ); 14 CSize sz = pDC->GetTextExtent( str ); 15 16 str.LoadStringW( IDS_STRINGVC ); 17 pDC->TextOutW( 0, 200, str ); 18 19 20 // 路徑層的妙用(使用路徑層可以實現與剪切區域的交互) 21 pDC->BeginPath(); 22 pDC->Rectangle( 50, 50, 50+sz.cx, 50+sz.cy ); 23 pDC->EndPath(); 24 pDC->SelectClipPath( RGN_DIFF ); // 使新的裁剪區域包含了當前的裁剪區域,但把當前的路徑層的范圍排除在外 25 //pDC->SelectClipPath( RGN_AND ); // 使新的裁剪區域是當前裁剪區域和當前路徑層的交集 26 //pDC->SelectClipPath( RGN_XOR ); 27 28 for( int i = 0; i <= 300; i += 10) 29 { 30 pDC->MoveTo(0, i); 31 pDC->LineTo(300, i); 32 pDC->MoveTo(i, 0); 33 pDC->LineTo(i, 300); 34 } 35 }
效果如下: