时钟显示程序实验报告

  • 格式:docx
  • 大小:31.81 KB
  • 文档页数:7
//将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
//设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
//执行此操作
SetIcon(m_hIcon, TRUE);//设置大图标
三、基本要求:
完成时钟显示程序的功能要求,并能对所涉及的语句以及程序流程进行说明以及验证。
四、前面板:
五、源程序:
// clockDlg.cpp :实现文件
//
#include "stdafx.h"
#include "clock.h"
#include "clockDlg.h"
#include "afxdialogex.h"
}
void CclockDlg::OnBnClickedButton1()
{
// TODO:在此添加控件通知处理程序代码
SetTimer(1,100,NULL);
}
void CclockDlg::OnBnClickedButton2()
{
// TODO:在此添加控件通知处理程序代码
KillTimer(1);
二、Microsoft Visual Studio 2010简介:
Visual Studio是微软公司推出的开发环境,是目前最流行的Windows平台应用程序开发环境。Visual Studio 2010版本于2010年4月12日上市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。Visual Studio 2010同时带来了NET Framework 4.0、Microsoft Visual Studio 2010 CTP( Community Technology Preview--CTP),并且支持开发面向Windows 7的应用程序。除了Microsoft SQL Server,它还支持IBM DB2和Oracle数据库。
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}
//如果向对话框添加最小化按钮,则需要下面的代码
//来绘制该图标。对于使用文档/视图模型的MFC应用程序,
//这将由框架自动完成。
void CclockDlg::OnPaint()
ON_WM_TIMER()
ON_EN_CHANGE(IDC_EDIT1, &CclockDlg::OnEnChangeEdit1)
END_MESSAGE_MAP()
// CclockDlg消息处理程序
BOOL CclockDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
时钟显示程序实验报告
河北工业大学
机械工程学院
测控技术与仪器
姓名:
学号:
__年_月_日
一、实验要求:
采用VS2010的VC语言,设计程序实现时钟显示。本实验的目的在于熟悉VS2010软件的操作。基于VS2010的MFC标准设计程序,采用对话框模式设计时钟程序。其中包括三个按钮:“开始计时”、“停止计时”、“退出”和一个EDIT对话框。当程序运行后,点“开始计时”,对话框内显示当前时间(到秒或毫秒,兵实时更新;点“停止计时”,则显示停留在当前时间;点“退出”则该程序关闭。
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, &CclockDlg::OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON2, &CclockDlg::OnBnClickedButton2)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()
// CclockDlg对话框
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
if (IsIconic())
{
CPaintDC dc(this); //用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
//使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
SetIcon(m_hIcon, FALSE);//设置小图标
// TODO:在此添加额外的初始化代码
return TRUE; //除非将焦点设置到控件,否则返回TRUE
}
void CclockDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV支持
//实现
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
}
void CclockDlg::OnTimer(UINT_PTR nI程序代码和/或调用默认值
st_str=CTime::GetCurrentTime();
st.Format(_T("%.4d年%.2d月%.2d日%.2d:%.2d:%.2d\n"),st_str.GetYear(),st_str.GetMonth(),st_str.GetDay(),st_str.GetHour(),st_str.GetMinute(),st_str.GetSecond());
//绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}
//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CclockDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
//用于应用程序“关于”菜单项的CAboutDlg对话框
class CAboutDlg : public CDialogEx
{
public:
CAboutDlg();
//对话框数据
enum { IDD = IDD_ABOUTBOX };
//同时将ENM_CHANGE标志“或”运算到掩码中。
// TODO:在此添加控件通知处理程序代码
}
六、实验现象:
点击“开始计时”按钮,显示系统时间;点击“停止计时”按钮,显示框时间停止变化。点击“退出”按钮,程序关闭。
七、心得体会:
通过这次的课程设计的训练,深刻体会到了自己在这方面还很不足,需要加强,虽然这个程序对我们有点难度,但是老师指导的很详细,就像老师说的还有很大的提升空间,同时,感觉我们学好一个编程很有用,编出程序的那一刻还是很高兴的,因此,这次的最大的收获就是培养出了自己对编程的兴趣。最重要的是自己动手的能力,扩宽自己的视角,提高自己的能力,即使作为一个测控专业的学生,我们一定要自己多学习新知识,新软件。
}
void CclockDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, st);
}
BEGIN_MESSAGE_MAP(CclockDlg, CDialogEx)