home *** CD-ROM | disk | FTP | other *** search
/ Mastering Visual Basic 5 / MasteringVisualBasic5.iso / protview / demowinx / data.2 / line / samples / MFC / LINEDEMO / LINEDLG.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1996-10-20  |  4.6 KB  |  195 lines

  1. // LineDlg.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "LineDemo.h"
  6. #include "LineDlg.h"
  7. #include "Line3D.h"
  8.  
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14.  
  15. #define TIMER_ID 123
  16. /////////////////////////////////////////////////////////////////////////////
  17. // CLineDemoDlg dialog
  18.  
  19. CLineDemoDlg::CLineDemoDlg(CWnd* pParent /*=NULL*/)
  20.     : CDialog(CLineDemoDlg::IDD, pParent)
  21. {
  22.     //{{AFX_DATA_INIT(CLineDemoDlg)
  23.     m_solid = -1;
  24.     //}}AFX_DATA_INIT
  25.     // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  26.     m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  27. }
  28.  
  29. void CLineDemoDlg::DoDataExchange(CDataExchange* pDX)
  30. {
  31.     CDialog::DoDataExchange(pDX);
  32.     //{{AFX_DATA_MAP(CLineDemoDlg)
  33.     DDX_Radio(pDX, IDC_SOLID, m_solid);
  34.     //}}AFX_DATA_MAP
  35. }
  36.  
  37. BEGIN_MESSAGE_MAP(CLineDemoDlg, CDialog)
  38.     //{{AFX_MSG_MAP(CLineDemoDlg)
  39.     ON_WM_PAINT()
  40.     ON_WM_QUERYDRAGICON()
  41.     ON_BN_CLICKED(IDC_DASH, OnDash)
  42.     ON_BN_CLICKED(IDC_DASHDOT, OnDashdot)
  43.     ON_BN_CLICKED(IDC_DASHDOTDOT, OnDashdotdot)
  44.     ON_BN_CLICKED(IDC_DOT, OnDot)
  45.     ON_BN_CLICKED(IDC_SOLID, OnSolid)
  46.     ON_WM_DESTROY()
  47.     ON_WM_TIMER()
  48.     //}}AFX_MSG_MAP
  49. END_MESSAGE_MAP()
  50.  
  51. /////////////////////////////////////////////////////////////////////////////
  52. // CLineDemoDlg message handlers
  53.  
  54. BOOL CLineDemoDlg::OnInitDialog()
  55. {
  56.     CDialog::OnInitDialog();
  57.  
  58.     // Set the icon for this dialog.  The framework does this automatically
  59.     //  when the application's main window is not a dialog
  60.     SetIcon(m_hIcon, TRUE);            // Set big icon
  61.     SetIcon(m_hIcon, FALSE);        // Set small icon
  62.     
  63.     // TODO: Add extra initialization here
  64.     m_uTimer = 0;
  65.     m_solid = 0;
  66.     m_iTime = 0;
  67.  
  68.     RECT r;
  69.     GetDlgItem(IDC_LINE1)->GetClientRect(&r);
  70.     m_iLimit = r.right;
  71.     m_iDirection = m_iLimit / 20;
  72.     
  73.     SetTimer(TIMER_ID, 100, NULL);
  74.     ((CButton*)GetDlgItem(IDC_SOLID))->SetCheck(TRUE);
  75.     
  76.     return TRUE;  // return TRUE  unless you set the focus to a control
  77. }
  78.  
  79. // If you add a minimize button to your dialog, you will need the code below
  80. //  to draw the icon.  For MFC applications using the document/view model,
  81. //  this is automatically done for you by the framework.
  82.  
  83. void CLineDemoDlg::OnPaint() 
  84. {
  85.     if (IsIconic())
  86.     {
  87.         CPaintDC dc(this); // device context for painting
  88.  
  89.         SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  90.  
  91.         // Center icon in client rectangle
  92.         int cxIcon = GetSystemMetrics(SM_CXICON);
  93.         int cyIcon = GetSystemMetrics(SM_CYICON);
  94.         CRect rect;
  95.         GetClientRect(&rect);
  96.         int x = (rect.Width() - cxIcon + 1) / 2;
  97.         int y = (rect.Height() - cyIcon + 1) / 2;
  98.  
  99.         // Draw the icon
  100.         dc.DrawIcon(x, y, m_hIcon);
  101.     }
  102.     else
  103.     {
  104.         CDialog::OnPaint();
  105.     }
  106. }
  107.  
  108. // The system calls this to obtain the cursor to display while the user drags
  109. //  the minimized window.
  110. HCURSOR CLineDemoDlg::OnQueryDragIcon()
  111. {
  112.     return (HCURSOR) m_hIcon;
  113. }
  114.  
  115. void CLineDemoDlg::OnDash() 
  116. {
  117.     m_solid = 1;
  118.     SetLineStyle();
  119. }
  120.  
  121. void CLineDemoDlg::OnDashdot() 
  122. {
  123.     m_solid = 3;
  124.     SetLineStyle();
  125. }
  126.  
  127. void CLineDemoDlg::OnDashdotdot() 
  128. {
  129.     m_solid = 4;
  130.     SetLineStyle();
  131. }
  132.  
  133. void CLineDemoDlg::OnDot() 
  134. {
  135.     m_solid = 2;
  136.     SetLineStyle();
  137. }
  138.  
  139. void CLineDemoDlg::OnSolid() 
  140. {
  141.     m_solid = 0;
  142.     SetLineStyle();
  143. }
  144.  
  145. void CLineDemoDlg::OnDestroy() 
  146. {
  147.     KillTimer(TIMER_ID);
  148.     CDialog::OnDestroy();
  149. }
  150.  
  151. void CLineDemoDlg::OnTimer(UINT nIDEvent) 
  152. {
  153.     CDialog::OnTimer(nIDEvent);
  154.     int right, bottom;
  155.     if(m_iTime > 0)
  156.     {
  157.         right = m_iLimit - m_iTime;
  158.         bottom = m_iLimit;
  159.     }
  160.     else
  161.     {
  162.         right = m_iLimit;
  163.         bottom = m_iLimit + m_iTime;
  164.     }
  165.     GetDlgItem(IDC_LINE1)->SetWindowPos(&wndTop, 0, 0, 
  166.         right, bottom, SWP_NOMOVE | SWP_NOZORDER);
  167.     GetDlgItem(IDC_LINE2)->SetWindowPos(&wndTop, 0, 0, 
  168.         right, bottom, SWP_NOMOVE | SWP_NOZORDER);
  169.     m_iTime = m_iTime + m_iDirection;
  170.     if(m_iTime >= m_iLimit)
  171.     {
  172.         m_iDirection = -m_iDirection;
  173.         m_iTime = m_iLimit;
  174.     }
  175.     if(m_iTime <= -m_iLimit)
  176.     {
  177.         m_iDirection = -m_iDirection;
  178.         m_iTime = -m_iLimit;
  179.     }
  180. }
  181.  
  182. void CLineDemoDlg::SetLineStyle()
  183. {
  184.     ((CLine3D*)GetDlgItem(IDC_LINE1))->SetLineStyle(m_solid);
  185.     ((CLine3D*)GetDlgItem(IDC_LINE2))->SetLineStyle(m_solid);
  186.     ((CLine3D*)GetDlgItem(IDC_LINE3))->SetLineStyle(m_solid);
  187.     ((CLine3D*)GetDlgItem(IDC_LINE4))->SetLineStyle(m_solid);
  188.     ((CLine3D*)GetDlgItem(IDC_LINE5))->SetLineStyle(m_solid);
  189.     ((CLine3D*)GetDlgItem(IDC_LINE6))->SetLineStyle(m_solid);
  190.     ((CLine3D*)GetDlgItem(IDC_LINE7))->SetLineStyle(m_solid);
  191.     ((CLine3D*)GetDlgItem(IDC_LINE8))->SetLineStyle(m_solid);
  192.     ((CLine3D*)GetDlgItem(IDC_LINE9))->SetLineStyle(m_solid);
  193.     ((CLine3D*)GetDlgItem(IDC_LINE10))->SetLineStyle(m_solid);
  194. }
  195.