中国石油大学(华东)VC实验报告实验六 下载本文

中国石油大学传VC实验报告

中国石油大学(华东)自动化专业VC实验报告

实验日期: 成 绩:

班级: 自动化1602 姓名: 谢清涛 学号: 1605010224 实验六 Windows 数据采集应用编程

一、实验目的

1、熟悉 Visual Studio 开发环境,掌握类向导的使用方法,熟练使用类向导进 行消息映射,添加类的数据成员;

2、掌握数据采集的概念和应用程序的开发方法; 3、掌握 MFC 环境下标准控件的编程方法; 4、掌握第三方动态连接库的编程方法; 5、掌握定时器消息的编程方法。 二、实验内容

基于对话框的数据采集应用程序,在数据曲线显示区绘制网格和数据曲线。

通过滚动条控件设置曲线颜色,并在编辑框中显示颜色的 RGB 值, 通过单选按钮可以设置曲线的线型,“启动”可以控制启动数据采集流程,“停止”按 钮可以控制停止数据采集流程。 三、实验报告

1、主要程序代码展示

BOOL CDemoDlg::OnInitDialog() { CDialog::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。

// IDM_ABOUTBOX 必须在系统命令范围内。

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } }

// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动执行此操作

中国石油大学传VC实验报告

SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 for(int k=0; k<100;k++) { m_Point[k].x = 10+5*k; m_Point[k].y = 10+rand()00; } // 滚动条控件初始化 m_Red.SetScrollRange(0,255); m_Red.SetScrollPos(255); m_Green.SetScrollRange(0,255); m_Green.SetScrollPos(0); m_Blue.SetScrollRange(0,255); m_Blue.SetScrollPos(0); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE }

void CDemoDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } }

// 如果向对话框添加最小化按钮,则需要下面的代码

// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。

void CDemoDlg::OnPaint() { CPaintDC dc(this); CPen PenGrid; CPen PenLine;

中国石油大学传VC实验报告

}

CPen *pOldPen = NULL; dc.Rectangle(0,0,520,320);

PenGrid.CreatePen(PS_DASH,1,RGB(255,0,0)); pOldPen = dc.SelectObject(&PenGrid); for(int k=0; k<7;k++) { dc.MoveTo(10,10+50*k); dc.LineTo(510,10+50*k); }

for(int k=0; k<11; k++) { dc.MoveTo(10+50*k,10); dc.LineTo(10+50*k,310);

} //此处为绘制网格代码 UpdateData(TRUE);//DDX 控件--〉变量 switch(m_nLineStyle) {

case 0: //此时选择实线 PenLine.CreatePen(PS_SOLID,3, RGB(m_Red.GetScrollPos(), m_Green.GetScrollPos(), m_Blue.GetScrollPos())); break;

case 1: //此时选择虚线 PenLine.CreatePen(PS_DASH,1, RGB(m_Red.GetScrollPos(), m_Green.GetScrollPos(), m_Blue.GetScrollPos())); break;

case 2: //此时选择点线 PenLine.CreatePen(PS_DOT,1, RGB(m_Red.GetScrollPos(), m_Green.GetScrollPos(), m_Blue.GetScrollPos())); break; }

dc.SelectObject(&PenLine); dc.Polyline(m_Point,100); dc.SelectObject(pOldPen);

//当用户拖动最小化窗口时系统调用此函数取得光标显示。