--- /dev/null
+//////////////////////////////////////////////\r
+// CMyScrollBar.cpp\r
+\r
+#include "stdafx.h"\r
+#include "ScrollBar.h"\r
+#include "DialogApp.h"\r
+\r
+\r
+CMyScrollBar::CMyScrollBar()\r
+{\r
+ ZeroMemory(&m_si, sizeof(SCROLLINFO));\r
+}\r
+\r
+void CMyScrollBar::OnInitialUpdate()\r
+{\r
+ // Called automatically via AttachDlgItem\r
+\r
+ // Set the Scroll bar position\r
+ SetScroll(0);\r
+}\r
+\r
+LRESULT CMyScrollBar::OnMessageReflect(UINT uMsg, WPARAM wParam, LPARAM lParam)\r
+{\r
+ UNREFERENCED_PARAMETER(lParam);\r
+\r
+ switch (uMsg)\r
+ {\r
+ case WM_HSCROLL:\r
+ {\r
+ // Get a reference to the MyDialog object\r
+ CMyDialog& MyDialog = GetDialogApp().GetDialog();\r
+\r
+ GetScrollInfo(&m_si);\r
+\r
+ switch (LOWORD (wParam))\r
+ {\r
+ // user clicked left arrow\r
+ case SB_LINELEFT:\r
+ m_si.nPos -= 1;\r
+ break;\r
+\r
+ // user clicked right arrow\r
+ case SB_LINERIGHT:\r
+ m_si.nPos += 1;\r
+ break;\r
+\r
+ // user clicked the scroll bar shaft left of the scroll box\r
+ case SB_PAGELEFT:\r
+ m_si.nPos -= m_si.nPage;\r
+ break;\r
+\r
+ // user clicked the scroll bar shaft right of the scroll box\r
+ case SB_PAGERIGHT:\r
+ m_si.nPos += m_si.nPage;\r
+ break;\r
+\r
+ // user dragged the scroll box\r
+ case SB_THUMBTRACK:\r
+ m_si.nPos = m_si.nTrackPos;\r
+ break;\r
+\r
+ default :\r
+ break;\r
+ }\r
+\r
+ MyDialog.SetScroll(m_si.nPos); // Set the scroll bar position\r
+ MyDialog.SetSlider(m_si.nPos); // Set the slider position\r
+ MyDialog.SetProgress(m_si.nPos); // Set the progress bar position\r
+ MyDialog.SetStatic(FALSE, m_si.nPos); // Set the static text\r
+\r
+ break;\r
+ }\r
+ }\r
+\r
+ return 0;\r
+}\r
+\r
+void CMyScrollBar::SetScroll(int nPos)\r
+{\r
+ m_si.cbSize = sizeof(SCROLLINFO);\r
+ m_si.nPos = nPos;\r
+ m_si.nPage = 10;\r
+ m_si.nMax = 100 + (m_si.nPage -1);\r
+ m_si.fMask = SIF_ALL;\r
+\r
+ // Set the scroll bar position\r
+ SetScrollInfo(&m_si, TRUE);\r
+}\r
+\r