MFC CHM eBook with samples.

源代码在线查看: regiondemo.cpp

软件大小: 8386 K
上传用户: glossary
关键词: samples eBook with MFC
下载地址: 免注册下载 普通下载 VIP

相关代码

  1. #include   
  2. #include   
  3. #include "RegionDemo.h"  
  4.   
  5. CMyApp myApp;  
  6.   
  7. /////////////////////////////////////////////////////////////////////////  
  8. // CMyApp member functions  
  9.   
  10. BOOL CMyApp::InitInstance ()  
  11. {  
  12.     m_pMainWnd = new CMainWindow;  
  13.     m_pMainWnd->ShowWindow (m_nCmdShow);  
  14.     m_pMainWnd->UpdateWindow ();  
  15.     return TRUE;  
  16. }  
  17.   
  18. /////////////////////////////////////////////////////////////////////////  
  19. // CMainWindow message map and member functions  
  20.   
  21. BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd)  
  22.     ON_WM_PAINT ()  
  23. END_MESSAGE_MAP ()  
  24.   
  25. CMainWindow::CMainWindow ()  
  26. {  
  27.     Create (NULL, _T ("Region Demo"));  
  28. }  
  29.   
  30. void CMainWindow::OnPaint ()  
  31. {  
  32.     CPaintDC dc (this);  
  33.   
  34.     //  
  35.     // Create a 72-point Times New Roman font.  
  36.     //  
  37.     CFont font;  
  38.     font.CreatePointFont (720, _T ("Times New Roman"));  
  39.   
  40.     //  
  41.     // Create a clipping region from the text string "Hello, MFC."  
  42.     //  
  43.     CRect rect;  
  44.     GetClientRect (&rect);  
  45.     CString string ("Hello, MFC");  
  46.   
  47.     CFont* pOldFont = dc.SelectObject (&font);  
  48.     CSize size = dc.GetTextExtent (string);  
  49.     int x = (rect.Width () - size.cx) / 2;  
  50.   
  51.     TEXTMETRIC tm;  
  52.     dc.GetTextMetrics (&tm);  
  53.     int y = (rect.Height () - tm.tmHeight) / 2;  
  54.   
  55.     dc.BeginPath ();  
  56.     dc.TextOut (x, y, string);  
  57.     dc.EndPath ();  
  58.     dc.SelectObject (pOldFont);  
  59.   
  60.     CRect rcText;  
  61.     CRgn rgn1, rgn2;  
  62.     rgn1.CreateFromPath (&dc);  
  63.     rgn1.GetRgnBox (&rcText);  
  64.     rgn2.CreateRectRgnIndirect (&rcText);  
  65.     rgn1.CombineRgn (&rgn2, &rgn1, RGN_DIFF);  
  66.   
  67.     dc.SelectClipRgn (&rgn1);  
  68.   
  69.     //  
  70.     // Draw a radial array of lines.  
  71.     //  
  72.     dc.SetViewportOrg (rect.Width () / 2, rect.Height () / 2);  
  73.     double fRadius = hypot (rect.Width () / 2, rect.Height () / 2);  
  74.   
  75.     for (double fAngle = 0.0; fAngle < 6.283; fAngle += 0.01745) {  
  76.         dc.MoveTo (0, 0);  
  77.         dc.LineTo ((int) ((fRadius * cos (fAngle)) + 0.5),  
  78.             (int) ((fRadius * sin (fAngle)) + 0.5));  
  79.     }  
  80. }  
  81.               

相关资源