-
使用C++和MFC编写的单文档程序实现绘制正弦曲线
资源介绍
// ChildView.cpp : CChildView 类的实现
//
#include "stdafx.h"
#include "12222222222222222222张三.h"
#include "ChildView.h"
#include "ParaDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CChildView
CChildView::CChildView()
{
}
CChildView::~CChildView()
{
}
BEGIN_MESSAGE_MAP(CChildView, CWnd)
ON_WM_PAINT()
ON_COMMAND(ID_SET_PARA, &CChildView::OnSetPara)
ON_COMMAND(ID_SIN_GO, &CChildView::OnGo)
ON_COMMAND(ID_SIN_BACK, &CChildView::OnBack)
ON_COMMAND(ID_SIN_STOP, &CChildView::OnStop)
ON_WM_TIMER()
END_MESSAGE_MAP()
// CChildView 消息处理程序
BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs)
{
if (!CWnd::PreCreateWindow(cs))
return FALSE;
cs.dwExStyle |= WS_EX_CLIENTEDGE;
cs.style &= ~WS_BORDER;
cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS,
::LoadCursor(NULL, IDC_ARROW), reinterpret_cast(COLOR_WINDOW+1), NULL);
return TRUE;
}
void CChildView::OnPaint()
{
CPaintDC dc(this); // 用于绘制的设备上下文
// TODO: 在此处添加消息处理程序代码
// 不要为绘制消息而调用 CWnd::OnPaint()
m_Sin.Draw(&dc);
}
void CChildView::OnSetPara()
{
// TODO: 在此添加命令处理程序代码
CParaDlg dlg(m_Sin.m_iA, m_Sin.m_iF, m_Sin.m_iP);
if(IDOK == dlg.DoModal())
{
m_Sin.m_iA = dlg.m_iA;
m_Sin.m_iF = dlg.m_iF;
m_Sin.m_iP = dlg.m_iP;
RedrawWindow();
}
}
void CChildView::OnGo()
{
SetTimer(1000,50,NULL);//响应一个图标按下时打开一个 ID 为 1000 的定时器,周期50ms
KillTimer(2000);
}
void CChildView::OnBack()
{
SetTimer(2000,50,NULL);//响应一个图标按下时打开一个 ID 为 1000 的定时器,周期50ms
KillTimer(1000);
}
void CChildView::OnStop()
{
KillTimer(1000);//响应停止图标按下时关掉 ID 为 1000 的定时器
KillTimer(2000);//响应停止图标按下时关掉 ID 为 2000 的定时器
}
void CChildView::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
switch (nIDEvent)//判断响应的是哪个定时器
{
case 1000:
m_Sin.m_iP --;//动作
break;
case 2000:
m_Sin.m_iP ++;//动作
break;
}
RedrawWindow();//上面的动作只是改变了参数,这里是重画窗口,展示动作
CWnd::OnTimer(nIDEvent);
}