学习:Scroll Bar/Spin Control/Progress Control/Timer
滚动条
实现的结构体为:SCROLLINFO
/* D:\Visual_Studio_repos\MFC\5\ */ BOOL CMy4Dlg::OnInitDialog() { CDialogEx::OnInitDialog(); SCROLLINFO si; si.cbSize = sizeof(SCROLLINFO); si.fMask = SIF_ALL; si.nMax = 100; si.nMin = 0; si.nPage = 10; m_scrollbar.SetScrollInfo(&si); }
void CMy4Dlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)// nPos为事件发生的时候,当前Scroll的滚动大小 { SCROLLINFO sc = { 0 }; sc.cbSize = sizeof(SCROLLINFO); sc.fMask = SIF_ALL; m_scrollbar.GetScrollInfo(&sc, true); //初始化窗口中的si结构体赋值给当前sc的结构体 int NewPos = sc.nPos; switch (nSBCode) { case SB_THUMBTRACK: //拖动 NewPos = nPos; break; case SB_LINELEFT: //左箭头 NewPos = NewPos - 10; break; case SB_LINERIGHT: //右箭头 NewPos = NewPos + 10; break; case SB_PAGELEFT: //左拖动行 NewPos = NewPos - sc.nPage; break; case SB_PAGERIGHT: //右拖动行 NewPos = NewPos + sc.nPage; break; default: break; } bool ret; ret = m_scrollbar.SetScrollPos(NewPos); //判断是否设置成功 if (NewPos > sc.nMax) { NewPos = sc.nMax; } if (NewPos < sc.nMin) { NewPos = sc.nMin; } wchar_t szbuffer[1024]; SetDlgItemText(IDC_STATIC_1, _itow(NewPos, szbuffer, 10)); CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar); }
Spin Control:
BOOL CMy5Dlg::OnInitDialog(){ ...... CSpinButtonCtrl *spin2 = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_2); spin2->SetBase(16); CSpinButtonCtrl *spin1 = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_1); spin1->SetRange(-20, 20); ...... }
进度条和定时器:
void CMy5Dlg::OnBnClickedButton1() { int pcP; CProgressCtrl *pc = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS_1); SetTimer(1,200,NULL); //用来发送WM_TIMER消息,第三个参数为空则就交给内核进行消息处理 pcP = 0; pc->SetPos(0); GetDlgItem(IDC_BUTTON1)->EnableWindow(false); } void CMy5Dlg::OnTimer(UINT_PTR nIDEvent) { int pcP; CProgressCtrl *pc = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS_1); //接收到WM_TIMER消息之后的处理 pc->SetRange(0, 100); pcP = pc->GetPos() + 10; if (pcP == 100) { KillTimer(1); GetDlgItem(IDC_BUTTON1)->EnableWindow(true); } pc->SetPos(pcP); CDialogEx::OnTimer(nIDEvent); }
标签:
MFC
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY