MFC定时器、进度条和滑动条
创建和销毁定时器
MFC的CWnd类提供的成员函数SetTimer用于设置并启动定时器。第一个参数是我们设置的定时器ID,第二个参数是定时时间(单位毫秒),第三个参数是回调函数地址(如果设置为NULL,则通过WM_TIMER消息的消息响应函数处理定时事件)。
void CDemoDlg::OnBnClickedBtnStart()
{
SetTimer(1001, 1000, NULL);
}
void CDemoDlg::OnBnClickedBtnStop()
{
KillTimer(1001);
}
void CDemoDlg::OnTimer(UINT_PTR nIDEvent)
{
if (nIDEvent == 1001) {
CTime now = CTime::GetCurrentTime();
CString str = now.Format(_T("%Y-%m-%d %H:%M:%S"));
SetDlgItemText(IDC_STATIC_Show_Time, str);
}
CDialogEx::OnTimer(nIDEvent);
}
滑动条控件
用Windows的定时器实现按钮按下滑动条自动增加,到达最大值归零。
初始化:
g_dlg = this;
m_progress.SetRange(0, 100);
m_progress.SetPos(0);
设置定时器,自定义回调函数:
void CDemoDlg::OnBnClickedButnStartProgress() {
::SetTimer(GetSafeHwnd(), 1002, 10, TimerProc);
m_btn_start_progress.EnableWindow(FALSE);
}
设置回调函数(固定格式):
VOID CALLBACK TimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime) {
int minv, maxv;
g_dlg->m_progress.GetRange(minv, maxv);
int pos = g_dlg->m_progress.GetPos();
pos++;
if (pos > maxv) {
pos = 0;
::KillTimer(hwnd, 1002);
g_dlg->m_btn_start_progress.EnableWindow(TRUE);
}
g_dlg->m_progress.SetPos(pos);
}
滑动条
一般和静态文本框搭配使用,用于显示
给滑动条添加拖动事件:
void CDemoDlg::OnNMCustomdrawSlider(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
m_static_show_slider_value = m_slider.GetPos();
UpdateData(FALSE);
*pResult = 0;
}
相关文章
- Linux服务器硬件信息查询与日常运维命令总结
- Linux服务器带宽跑不满?用ethtool调优网卡参数,性能提升30%
- 如何在 Rocky Linux 中查看网卡流量?跟着小编学习iftop安装和使用
- Linux查看网卡速率_linux查看网卡当前速率
- 五一我要看七天小说!免费开源的轻量化书库talebook搭建流程。
- 我是如何用这3个小工具,助力小姐姐提升100%开发效率的
- html5和css3的常用参考网_基于html5和css3的网页制作
- 超详细的网络抓包神器 tcpdump 使用指南
- Vue 技术栈(全家桶)_vue全栈项目教程
- 学习ES6- 入门Vue(大量源代码及笔记,带你起飞)