TimerDlg.cpp

// TimerDlg.cpp : implementation file

//

 

#include "stdafx.h"

#include "Timer.h"

#include "TimerDlg.h"

 

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

 

/////////////////////////////////////////////////////////////////////////////

// CAboutDlg dialog used for App About

 

class CAboutDlg : public CDialog

{

public:

              CAboutDlg();

 

// Dialog Data

              //{{AFX_DATA(CAboutDlg)

              enum { IDD = IDD_ABOUTBOX };

              //}}AFX_DATA

 

              // ClassWizard generated virtual function overrides

              //{{AFX_VIRTUAL(CAboutDlg)

              protected:

              virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

              //}}AFX_VIRTUAL

 

// Implementation

protected:

              //{{AFX_MSG(CAboutDlg)

              //}}AFX_MSG

              DECLARE_MESSAGE_MAP()

};

 

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

              //{{AFX_DATA_INIT(CAboutDlg)

              //}}AFX_DATA_INIT

}

 

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

              CDialog::DoDataExchange(pDX);

              //{{AFX_DATA_MAP(CAboutDlg)

              //}}AFX_DATA_MAP

}

 

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

              //{{AFX_MSG_MAP(CAboutDlg)

                             // No message handlers

              //}}AFX_MSG_MAP

END_MESSAGE_MAP()

 

/////////////////////////////////////////////////////////////////////////////

// CTimerDlg dialog

 

CTimerDlg::CTimerDlg(CWnd* pParent /*=NULL*/)

              : CDialog(CTimerDlg::IDD, pParent)

{

              //{{AFX_DATA_INIT(CTimerDlg)

                             // NOTE: the ClassWizard will add member initialization here

              //}}AFX_DATA_INIT

              // Note that LoadIcon does not require a subsequent DestroyIcon in Win32

              m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

 

void CTimerDlg::DoDataExchange(CDataExchange* pDX)

{

              CDialog::DoDataExchange(pDX);

              //{{AFX_DATA_MAP(CTimerDlg)

              DDX_Control(pDX, IDC_CWBOOLEAN1, m_led1);

              DDX_Control(pDX, IDC_CWBOOLEAN2, m_led2);

              DDX_Control(pDX, IDC_CWBOOLEAN3, m_led3);

              DDX_Control(pDX, IDC_CWBOOLEAN4, m_led4);

              DDX_Control(pDX, IDC_CWBOOLEAN5, m_switch);

              //}}AFX_DATA_MAP

}

 

BEGIN_MESSAGE_MAP(CTimerDlg, CDialog)

              //{{AFX_MSG_MAP(CTimerDlg)

              ON_WM_SYSCOMMAND()

              ON_WM_PAINT()

              ON_WM_QUERYDRAGICON()

              ON_WM_TIMER()

              //}}AFX_MSG_MAP

END_MESSAGE_MAP()

 

/////////////////////////////////////////////////////////////////////////////

// CTimerDlg message handlers

 

BOOL CTimerDlg::OnInitDialog()

{

              CDialog::OnInitDialog();

 

              // Add "About..." menu item to system menu.

 

              // IDM_ABOUTBOX must be in the system command range.

              ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

              ASSERT(IDM_ABOUTBOX < 0xF000);

 

              CMenu* pSysMenu = GetSystemMenu(FALSE);

              if (pSysMenu != NULL)

              {

                             CString strAboutMenu;

                             strAboutMenu.LoadString(IDS_ABOUTBOX);

                             if (!strAboutMenu.IsEmpty())

                             {

                                           pSysMenu->AppendMenu(MF_SEPARATOR);

                                           pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

                             }

              }

 

              // Set the icon for this dialog.  The framework does this automatically

              //  when the application's main window is not a dialog

              SetIcon(m_hIcon, TRUE);                                   // Set big icon

              SetIcon(m_hIcon, FALSE);                   // Set small icon

             

              // TODO: Add extra initialization here

              iTime = 0;

              return TRUE;  // return TRUE  unless you set the focus to a control

}

 

void CTimerDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

              if ((nID & 0xFFF0) == IDM_ABOUTBOX)

              {

                             CAboutDlg dlgAbout;

                             dlgAbout.DoModal();

              }

              else

              {

                             CDialog::OnSysCommand(nID, lParam);

              }

}

 

// If you add a minimize button to your dialog, you will need the code below

//  to draw the icon.  For MFC applications using the document/view model,

//  this is automatically done for you by the framework.

 

void CTimerDlg::OnPaint()

{

              if (IsIconic())

              {

                             CPaintDC dc(this); // device context for painting

 

                             SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

 

                             // Center icon in client rectangle

                             int cxIcon = GetSystemMetrics(SM_CXICON);

                             int cyIcon = GetSystemMetrics(SM_CYICON);

                             CRect rect;

                             GetClientRect(&rect);

                             int x = (rect.Width() - cxIcon + 1) / 2;

                             int y = (rect.Height() - cyIcon + 1) / 2;

 

                             // Draw the icon

                             dc.DrawIcon(x, y, m_hIcon);

              }

              else

              {

                             CDialog::OnPaint();

              }

}

 

// The system calls this to obtain the cursor to display while the user drags

//  the minimized window.

HCURSOR CTimerDlg::OnQueryDragIcon()

{

              return (HCURSOR) m_hIcon;

}

 

BEGIN_EVENTSINK_MAP(CTimerDlg, CDialog)

    //{{AFX_EVENTSINK_MAP(CTimerDlg)

              ON_EVENT(CTimerDlg, IDC_CWBOOLEAN5, 1 /* ValueChanged */, OnValueChangedCwboolean5, VTS_BOOL)

              //}}AFX_EVENTSINK_MAP

END_EVENTSINK_MAP()

 

void CTimerDlg::OnValueChangedCwboolean5(BOOL Value)

{

              // TODO: Add your control notification handler code here

              if(m_switch.Value == 1)

                             SetTimer(1,300,NULL);

              else

                             KillTimer(1);

}

 

void CTimerDlg::OnTimer(UINT nIDEvent)

{

              // TODO: Add your message handler code here and/or call default

              iTime++;

              if(iTime >= 2)

                             iTime = 0;

 

              m_led1.Value=0;

              m_led2.Value=0;

 

              if(iTime==0)

                             m_led1.Value=1;

              else if(iTime==1)

                             m_led2.Value=1;

 

CDialog::OnTimer(nIDEvent);

}

 

처음

중요함수