MFC 状态栏 定时器 进度条 菜单 和 浏览器控件

创建对话框

1.状态栏

在头文件中添加公有成员CStatusBar m_stateBar;

	// 状态栏
	CStatusBar m_stateBar;

然后在初始化函数中添加代码来显示状态栏

	// TODO:  在此添加额外的初始化代码
	// 设置状态栏
	UINT statusBars[6] = { 0 };
	// 创建状态栏
	m_stateBar.Create(this); 
	// 将状态栏标志保存在数组里
	m_stateBar.SetIndicators(statusBars, sizeof(statusBars) / sizeof(UINT)); 
	// 设置状态栏宽度
	m_stateBar.SetPaneInfo(0, statusBars[0], 0, 60);
	m_stateBar.SetPaneInfo(1, statusBars[1], 1, 80);
	m_stateBar.SetPaneInfo(2, statusBars[2], 2, 60);
	m_stateBar.SetPaneInfo(3, statusBars[3], 3, 150);
	m_stateBar.SetPaneInfo(4, statusBars[4], 4, 60);
	m_stateBar.SetPaneInfo(5, statusBars[5], 5, 105);
	// 在状态栏中显示字符串
	CString strs[6] = { L"当前用户:", L"Administrator", L"当前时间:", L"", L"运行状态:", L"良好" };
	for (int i = 0; i < 6; i++)
		m_stateBar.SetPaneText(i, strs[i]);
	RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
	CTime tm = CTime::GetCurrentTime();
	m_stateBar.SetPaneText(3, tm.Format(L"%Y-%m-%d %H:%M:%S %a"));

2.添加定时器,让状态栏的时间能够动态显示

在"类视图"中,右键点击Dlg类的属性,点击消息,添加WN_TIMER函数

再添加代码:

	CTime tm = CTime::GetCurrentTime();
	m_stateBar.SetPaneText(3, tm.Format(L"%Y-%m-%d %H:%M:%S %a"));
在初始化函数中启动计时器:

	// 启动计时器
	SetTimer(0, 1000, NULL);
运行程序,此时状态栏中就能够动态显示系统时间了.

3.添加进度条

从工具箱中添加Progress Control 到对话框中,并为进度条添加变量m_progress
在初始化函数中添加代码:

	// 进度条
	CRect rect;
	m_stateBar.GetItemRect(5, &rect);         // 获取状态栏第6个栏的位置
	m_progress.SetParent(&m_stateBar);        // 设置进度条的父窗口为状态栏
	m_progress.MoveWindow(&rect);             // 将进度条移动到指定位置
	m_progress.SetRange(0, 60);               // 设置进度条的范围为0~60
在定时器函数中设置进度条,让进度条随时间变化

void CMFC_sta_menu_progr_ticker_webDlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO:  在此添加消息处理程序代码和/或调用默认值
	CTime tm = CTime::GetCurrentTime();
	m_stateBar.SetPaneText(3, tm.Format(L"%Y-%m-%d %H:%M:%S %a"));
	m_progress.SetPos(tm.GetSecond());
	CDialogEx::OnTimer(nIDEvent);
}
运行后进度条能随时间变化



4.添加菜单

可以添加分隔符:


此时就能够把菜单显示出来了。

下面再添加时间处理程序:


选择Dlg,然后添加打开文件的代码:

void CMFC_sta_menu_progr_ticker_webDlg::On32771()
{
	// TODO:  在此添加命令处理程序代码
	BOOL isOpen = TRUE;          // 等于TRUE时打开文件
	CString defDir = L"E:\\";    // 默认打开的文件夹
	CString defFile = L"";       // 默认打开的文件
	CString filter = L"文件(*.docx;*.ppt;*.xls)|*.docx;*.ppt;*.xls||";
	CFileDialog openFileDlg(isOpen, defDir, defFile, OFN_HIDEREADONLY | OFN_READONLY, filter, NULL);

	if (openFileDlg.DoModal() == IDOK){       // 如果点击确认按钮
		CString filePath = openFileDlg.GetFileName();
		MessageBox(filePath, L"打开文件", MB_ICONINFORMATION);
	}
}
同上,为保存添加代码

void CMFC_sta_menu_progr_ticker_webDlg::On32772()
{
	// TODO:  在此添加命令处理程序代码
	BOOL isSave = FALSE;         // 为FALSE时是保存
	CString defDir = L"E:\\";	// 默认文件夹
	CString filter = L"文件(*.docx;*.ppt;*.xls)|*.docx;*.ppt;*.xls||";  // 过滤文件
	CFileDialog SaveFileDlg(isSave, defDir, L"", OFN_OVERWRITEPROMPT, filter, NULL);

	if (SaveFileDlg.DoModal() == IDOK){
		CString filePath = SaveFileDlg.GetFileName();
		MessageBox(filePath, L"保存");
	}
}

添加退出:

void CMFC_sta_menu_progr_ticker_webDlg::On32773quit()
{
	// TODO:  在此添加命令处理程序代码
	this->EndDialog(NULL);
}
关于:


void CMFC_sta_menu_progr_ticker_webDlg::On32775about()
{
	// TODO:  在此添加命令处理程序代码
	MessageBox(L"版权所有,违反必究!", L"关于");
}
5.添加浏览页面




在初始化函数添加代码:

	// 浏览器
	m_web.Navigate(L"www.youkuaiyun.com", NULL, NULL, NULL, NULL);



还可以在菜单 百度一下 添加操作:

void CMFC_sta_menu_progr_ticker_webDlg::On32774ABOUT()
{
	// TODO:  在此添加命令处理程序代码
	m_web.Navigate(L"www.baidu.com", NULL, NULL, NULL, NULL);
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值