From c819fc2d930dfcd7546cf8fc765c2985d3eb5ba7 Mon Sep 17 00:00:00 2001 From: Zhong Yang Date: Sun, 28 Jun 2020 22:36:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=8E=86=E5=8F=B2=E6=B5=81?= =?UTF-8?q?=E9=87=8F=E7=BB=9F=E8=AE=A1=E5=AF=B9=E8=AF=9D=E6=A1=86=E4=B8=AD?= =?UTF-8?q?=E6=BB=9A=E5=8A=A8=E9=BC=A0=E6=A0=87=E6=BB=9A=E8=BD=AE=E4=BC=9A?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E6=8E=A7=E4=BB=B6=E4=BD=8D=E7=BD=AE=E4=B8=8D?= =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TrafficMonitor/HistoryTrafficDlg.cpp | 2 + TrafficMonitor/TabDlg.cpp | 110 +++++++++++++++------------ TrafficMonitor/TabDlg.h | 3 + 3 files changed, 66 insertions(+), 49 deletions(-) diff --git a/TrafficMonitor/HistoryTrafficDlg.cpp b/TrafficMonitor/HistoryTrafficDlg.cpp index a72a122..8babd74 100644 --- a/TrafficMonitor/HistoryTrafficDlg.cpp +++ b/TrafficMonitor/HistoryTrafficDlg.cpp @@ -97,6 +97,8 @@ BOOL CHistoryTrafficDlg::OnInitDialog() } m_tab.SetCurFocus(m_tab_selected); + m_tab1_dlg.SetScrollEnable(false); + m_tab2_dlg.SetScrollEnable(false); //获取初始时窗口的大小 CRect rect; diff --git a/TrafficMonitor/TabDlg.cpp b/TrafficMonitor/TabDlg.cpp index ac92bd5..09e5ced 100644 --- a/TrafficMonitor/TabDlg.cpp +++ b/TrafficMonitor/TabDlg.cpp @@ -61,26 +61,32 @@ CWnd* CTabDlg::GetParentWindow() void CTabDlg::SetScrollbarInfo(int nPage, int nMax) { - //初始化滚动条 - SCROLLINFO scrollinfo; - GetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); - scrollinfo.nPage = nPage; //设置滑块大小 - scrollinfo.nMin = 0; - scrollinfo.nMax = nMax; //设置滚动条的最大位置 - if (scrollinfo.nMax < 0) - scrollinfo.nMax = 0; - scrollinfo.nPos = scrollinfo.nMin; - SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); + if(m_scroll_enable) + { + //初始化滚动条 + SCROLLINFO scrollinfo; + GetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); + scrollinfo.nPage = nPage; //设置滑块大小 + scrollinfo.nMin = 0; + scrollinfo.nMax = nMax; //设置滚动条的最大位置 + if (scrollinfo.nMax < 0) + scrollinfo.nMax = 0; + scrollinfo.nPos = scrollinfo.nMin; + SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); + } } void CTabDlg::ResetScroll() { - SCROLLINFO scrollinfo; - GetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); - int step = scrollinfo.nPos - scrollinfo.nMin; - scrollinfo.nPos = scrollinfo.nMin; - SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); - ScrollWindow(0, step); + if (m_scroll_enable) + { + SCROLLINFO scrollinfo; + GetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); + int step = scrollinfo.nPos - scrollinfo.nMin; + scrollinfo.nPos = scrollinfo.nMin; + SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); + ScrollWindow(0, step); + } } void CTabDlg::ScrollWindowSimple(int step) @@ -116,33 +122,36 @@ void CTabDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) // TODO: 在此添加消息处理程序代码和/或调用默认值 //参考资料:https://www.cnblogs.com/ranjiewen/p/6013922.html - SCROLLINFO scrollinfo; - GetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); - int unit = 1; - int step = theApp.DPI(8); - switch (nSBCode) + if (m_scroll_enable) { - case SB_LINEUP: //Scroll one line up - ScrollWindowSimple(unit * step); - break; - case SB_LINEDOWN: //Scroll one line down - ScrollWindowSimple(-unit * step); - break; - case SB_PAGEUP: //Scroll one page up. - ScrollWindowSimple(unit * step * 5); - break; - case SB_PAGEDOWN: //Scroll one page down - ScrollWindowSimple(-unit * step * 5); - break; - case SB_ENDSCROLL: //End scroll - break; - case SB_THUMBPOSITION: //Scroll to the absolute position. The current position is provided in nPos - break; - case SB_THUMBTRACK: //Drag scroll box to specified position. The current position is provided in nPos - ScrollWindow(0, (scrollinfo.nPos - nPos)*unit); - scrollinfo.nPos = nPos; - SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); - break; + SCROLLINFO scrollinfo; + GetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); + int unit = 1; + int step = theApp.DPI(8); + switch (nSBCode) + { + case SB_LINEUP: //Scroll one line up + ScrollWindowSimple(unit * step); + break; + case SB_LINEDOWN: //Scroll one line down + ScrollWindowSimple(-unit * step); + break; + case SB_PAGEUP: //Scroll one page up. + ScrollWindowSimple(unit * step * 5); + break; + case SB_PAGEDOWN: //Scroll one page down + ScrollWindowSimple(-unit * step * 5); + break; + case SB_ENDSCROLL: //End scroll + break; + case SB_THUMBPOSITION: //Scroll to the absolute position. The current position is provided in nPos + break; + case SB_THUMBTRACK: //Drag scroll box to specified position. The current position is provided in nPos + ScrollWindow(0, (scrollinfo.nPos - nPos)*unit); + scrollinfo.nPos = nPos; + SetScrollInfo(SB_VERT, &scrollinfo, SIF_ALL); + break; + } } CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar); } @@ -151,14 +160,17 @@ void CTabDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) BOOL CTabDlg::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) { // TODO: 在此添加消息处理程序代码和/或调用默认值 - int step = theApp.DPI(16); - if (zDelta > 0) + if (m_scroll_enable) { - ScrollWindowSimple(step); - } - if (zDelta < 0) - { - ScrollWindowSimple(-step); + int step = theApp.DPI(16); + if (zDelta > 0) + { + ScrollWindowSimple(step); + } + if (zDelta < 0) + { + ScrollWindowSimple(-step); + } } return CDialogEx::OnMouseWheel(nFlags, zDelta, pt); diff --git a/TrafficMonitor/TabDlg.h b/TrafficMonitor/TabDlg.h index bfec418..c7bb7aa 100644 --- a/TrafficMonitor/TabDlg.h +++ b/TrafficMonitor/TabDlg.h @@ -12,12 +12,15 @@ public: void SetScrollbarInfo(int nPage, int nMax); void ResetScroll(); virtual void OnOK(); + void SetScrollEnable(bool enable) { m_scroll_enable = enable; } protected: void ScrollWindowSimple(int step); protected: CWnd* m_pParent; + bool m_scroll_enable{ true }; + public: DECLARE_MESSAGE_MAP() afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);