创建对话框
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);
}