实现的功能如下所示: 关键代码如下: 开始按钮对应的代码如下所示:
为了避免界面被卡死的情况,我们还需要添加一个定时器timer,通过类向导添加WM_TIMER消息即可。
void CProgressDemoDlg::OnTimer(UINT_PTR nIDEvent){ // TODO: 在此添加消息处理程序代码和/或调用默认值 int nMax, nMin, nPos; m_progress.GetRange(nMin, nMax); nPos = m_progress.GetPos(); ++nPos; if (nPos > nMax) { KillTimer(1); //nPos = 0; GetDlgItem(IDC_BTN_START)->EnableWindow(); } m_progress.SetPos(nPos); CDialogEx::OnTimer(nIDEvent);}实现的功能如下所示:
这个控件实现起来稍微有一些麻烦,主要代码如下所示: 通过类向导添加WM_HSCROLL消息,代码如下:
void CScrollBarDemoDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar){ // TODO: 在此添加消息处理程序代码和/或调用默认值 SCROLLINFO scrollinfo = { 0 }; scrollinfo.cbSize = sizeof(SCROLLINFO); scrollinfo.fMask = SIF_ALL; pScrollBar->GetScrollInfo(&scrollinfo); int nNewPos = scrollinfo.nPos; switch (nSBCode) { case SB_THUMBTRACK: // 用户拖动滚动条 nNewPos = nPos; break; case SB_LINELEFT: // 左边的按钮 nNewPos -= 1; break; case SB_LINERIGHT: // 右边的按钮 nNewPos += 1; break; case SB_PAGELEFT: // 按页数向左边滚动 nNewPos -= scrollinfo.nPage; break; case SB_PAGERIGHT: // 按页数向右边滚动 nNewPos += scrollinfo.nPage; break; default: break; } scrollinfo.nPos = nNewPos; pScrollBar->SetScrollInfo(&scrollinfo); if (nNewPos > scrollinfo.nMax) { nNewPos = scrollinfo.nMax; } if (nNewPos < scrollinfo.nMin) { nNewPos = scrollinfo.nMin; } CString str; str.Format(L"滚动条当前的位置是:%d", nNewPos); GetDlgItem(IDC_POS)->SetWindowTextW(str); CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);}只有这个还不够,我们必须要在初始化对话框函数中添加如下代码:
BOOL CScrollBarDemoDlg::OnInitDialog(){ CDialogEx::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 SCROLLINFO scrollinfo = { 0 }; scrollinfo.cbSize = sizeof(SCROLLINFO); scrollinfo.fMask = SIF_RANGE | SIF_PAGE; scrollinfo.nMax = 109; scrollinfo.nMin = 0; scrollinfo.nPage = 10; m_scrollbar.SetScrollInfo(&scrollinfo); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE}// TODO: 在此添加额外的初始化代码 SCROLLINFO scrollinfo = { 0 }; scrollinfo.cbSize = sizeof(SCROLLINFO); scrollinfo.fMask = SIF_RANGE | SIF_PAGE; scrollinfo.nMax = 109; scrollinfo.nMin = 0; scrollinfo.nPage = 10; m_scrollbar.SetScrollInfo(&scrollinfo);这一段代码是我们需要添加的。
实现的功能如下所示: 这个基本上不需要什么代码,大概步骤是: 先拖放一个EditControl,然后再拖放一个SpinControl,注意,一定要是这个顺序,因为SpinControl是按照Z顺序来绑定的。如果我们想再放一个这样的功能,那么还是按照前面的顺序拖放即可。 关键的几行代码,在初始化对话框函数中添加如下代码:
新闻热点
疑难解答