如何使用来创建一个可调整其大小的对话框 Visual C++ 中的滚动条

更新时间:2023-05-16 12:37:19 阅读: 评论:0

概要:
    本文介绍如何使用来创建一个可调整其大小对话框中滚动条。该过程由四个基本部分组成:
在资源编辑器中,选择在属性对话框中的水平滚动垂直滚动样式。
选择调整大小的边框样式,以使该对话框可调整其大小。
重写 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 消息处理程序并将所需的代码添加到OnSizeOnInitDialog方法。
属性:
    文章编号: 262954 - 最后修改: 20061121 - 修订: 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

本文发布于:2023-05-16 12:37:19,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/110631.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:对话框   添加   消息   原始   调整   滚动   处理程序   垂直
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图