概要:
本文介绍如何使用来创建一个可调整其大小对话框中滚动条。该过程由四个基本部分组成:
∙ 在资源编辑器中,选择在属性对话框中的水平滚动和垂直滚动样式。
∙ 选择调整大小的边框样式,以使该对话框可调整其大小。
∙ 重写 WM_VSCROLL 和 WM_HSCROLL 消息处理程序。
∙ 重写以设置滚动条区域,如果大小减小到小于原始大小 WM_SIZE 消息处理程序。
更多信息:
若要创建垂直滚动栏可调整其大小的对话框,请执行以下步骤:
1. 使用应用程序向导创建 Microsoft 基础类 (MFC) 基于对话框的应用程序。
2. 在资源编辑器中,将添加到对话框资源模板中,某些控件属性中的对话框中,选择垂直滚
动并选择调整大小的边框样式。
3. 将以下受保护的成员变量添加到对话框类中:
4. int m_nCurHeight;
5. int m_nScrollPos;
6. CRect m_rect;
使用m_nScrollPos来存储当前垂直滚动位置。使用m_nCurHeight来存储对话框中的当前高度并处理OnVScroll方法中滚动。
7. 要获取原始窗口的大小,请将下行添加到OnInitDialog方法:
8. GetWindowRect(m_rect);
9. m_nScrollPos = 0;
10. 向 WM_SIZE 消息设置滚动条范围的OnSize方法中添加消息处理程序。将范围设置为 0,如果大小增大到超过原始大小。
11. void CTestDlg::OnSize(UINT nType, int cx, int cy)
12. {
13. CDialog::OnSize(nType, cx, cy);
14.
yinghan
15. // TODO: Add your message handler code here.
16. m_nCurHeight = cy;
17. int nScrollMax;
18. if (cy < m_rect.Height())
19. {
20. nScrollMax = m_rect.Height() - cy;
21. }
成人教育学校哪个好
22. el
23. nScrollMax = 0;
24.
25. SCROLLINFO si;
26. si.cbSize = sizeof(SCROLLINFO);
27. si.fMask = SIF_ALL; // SIF_ALL = SIF_PAGE | SIF_RANGE | SIF_POS;
28. si.nMin = 0;
29. si.nMax = nScrollMax;
30. si.nPage = si.nMax/10;
31. si.nPos = 0;
32. SetScrollInfo(SB_VERT, &si, TRUE);
33. }
34. 将 WM_VSCROLL 消息的消息处理程序添加到OnVScroll方法:
35. void CTestDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
36. {
37. // TODO: Add your message handler code here and/or call default.
38. int nDelta;
horrible
39. int nMaxPos = m_rect.Height() - m_nCurHeight;
40.
41. switch (nSBCode)
42. {
43. ca SB_LINEDOWN:
44. if (m_nScrollPos >= nMaxPos)
45. return;
46. bility nDelta = min(nMaxPos/100,nMaxPos-m_nScrollPos);
47. break;
48.
49. 泰语入门 ca SB_LINEUP:
50. if (m_nScrollPos <= 0)
51. return;
52. nDelta = -min(nMaxPos/100,m_nScrollPos);
53. break;
54.
55. ca SB_PAGEDOWN:
56. if (m_nScrollPos >= nMaxPos)
深圳瑜伽教练培训学校57. return;
58. nDelta = min(nMaxPos/10,nMaxPos-m_nScrollPos);
59. break;
60.
61. ca SB_THUMBPOSITION:
62. nDelta = (int)nPos - m_nScrollPos;关于梦想的演讲
63. break;
64.
65. ca SB_PAGEUP:
66. if (m_nScrollPos <= 0)
67. return;
68. nDelta = -min(nMaxPos/10,m_nScrollPos);
69. break;
70.
71. default:
72. return;bepositive
73. }
74. m_nScrollPos += nDelta;
75. SetScrollPos(SB_VERT,m_nScrollPos,TRUE);
76. ScrollWindow(0,-nDelta);
77. CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
78. }
79. 生成并运行该应用程序。调整对话框中显示垂直滚动条。
水平滚动,以类似的方式添加 WM_HSCROLL 消息处理程序并将所需的代码添加到OnSize和OnInitDialog方法。
属性:
文章编号: 262954 - 最后修改: 2006年11月21日 - 修订: 3.1lpa
这篇文章中的信息适用于:
∙ Microsoft Foundation Class Library 4.2 当用于
o Microsoft Visual C++ 4.2 企业版
o Microsoft Visual C++ 4.2 专业版
get along
o Microsoft Visual C++ 5.0 企业版
o Microsoft Visual C++ 5.0 专业版
o Microsoft Visual C++ 6.0 企业版
o Microsoft Visual C++ 6.0 专业版
o Microsoft Visual C++, 32-bit Learning Edition 6.0