QuakeGod
2022-07-22 dd67df95a7303aee3bed65ffa935465f20ee8b32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
// CPropSysReg1.cpp: 实现文件
//
 
#include "pch.h"
#include "MTerm2.h"
#include "PropSysReg1.h"
#include "afxdialogex.h"
 
 
// CPropSysReg1 对话框
 
IMPLEMENT_DYNAMIC(CPropSysReg1, CDialogEx)
 
CPropSysReg1::CPropSysReg1(CWnd* pParent /*=nullptr*/)
    : CDialogEx(IDD_PROPPAGE_SYSREG1, pParent)
{
 
}
 
CPropSysReg1::~CPropSysReg1()
{
}
 
void CPropSysReg1::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
}
 
 
BEGIN_MESSAGE_MAP(CPropSysReg1, CDialogEx)
    ON_WM_VSCROLL()
    ON_WM_MOUSEHWHEEL()
    ON_WM_SIZE()
END_MESSAGE_MAP()
 
 
// CPropSysReg1 消息处理程序
 
 
BOOL CPropSysReg1::OnInitDialog()
{
    CDialogEx::OnInitDialog();
 
    // TODO:  在此添加额外的初始化
    RECT rect0;
    GetClientRect(&rect0);
    CString s1;
    s1.Format(_T("OnInit H %d "), rect0.bottom - rect0.top);
//    GetDlgItem(IDC_EDIT1)->SetWindowText(s1);
//    ShowParams();
 
    return TRUE;  // return TRUE unless you set the focus to a control
                  // 异常: OCX 属性页应返回 FALSE
}
 
void CPropSysReg1::OnSize(UINT nType, int cx, int cy)
{
    CDialogEx::OnSize(nType, cx, cy);
    CString s1;
    s1.Format(_T("PropSysReg OnSize %d %d %d"),nType, cx, cy);
    SysLog(s1);
    // TODO: 在此处添加消息处理程序代码
}
 
int CPropSysReg1::ShowParams()
{
    // TODO: 在此处添加实现代码.
    SysLog(_T("PropSysReg ShowParams "));
    return 0;
}
 
int CPropSysReg1::GetParams()
{
    // TODO: 在此处添加实现代码.
    SysLog(_T("PropSysReg GetParams"));
    return 0;
}
 
void CPropSysReg1::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    GetDlgItem(IDC_EDIT2)->SetWindowText(_T("OnVScroll"));
    CString s1;
    s1.Format(_T("PropSysReg OnVScroll %d %d"), nSBCode,nPos);
    SysLog(s1);
    int nMin, nMax;
    int TempPos;
    if (pScrollBar == NULL) {
        this->GetScrollRange(SB_VERT, &nMin, &nMax);
        TempPos = this->GetScrollPos(SB_VERT);
    }else{
        pScrollBar->GetScrollRange(&nMin, &nMax);  //取得滚动条范围
        TempPos = pScrollBar->GetScrollPos();
    }
 
    switch (nSBCode)
    {
    case SB_THUMBPOSITION://拖动滑块
    case SB_THUMBTRACK:
        if (pScrollBar == NULL)    {
            SetScrollPos(SB_VERT, nPos);
        }
        else{
            pScrollBar->SetScrollPos(nPos);
        }
        TempPos = nPos;
        break;
    case SB_LINEUP://点击上边/左边的箭头
        if (TempPos > 1)
        {
            TempPos--;
        }
        if (pScrollBar == NULL) {    SetScrollPos(SB_VERT, TempPos);    }
        else {    pScrollBar->SetScrollPos(TempPos);    }
        break;
    case SB_LINEDOWN://点击下边/右边的箭头
        if (TempPos < nMax)
        {
            TempPos++;
        }
        if (pScrollBar == NULL) { SetScrollPos(SB_VERT, TempPos); }
        else { pScrollBar->SetScrollPos(TempPos); }
        break;
 
    case SB_PAGEUP:   // 如果向上/左滚动一页
        if (TempPos > 10) TempPos -= 10;
        if (pScrollBar == NULL) { SetScrollPos(SB_VERT, TempPos); }
        else { pScrollBar->SetScrollPos(TempPos); }
        break;
 
    case SB_PAGEDOWN:    // 如果向下/右滚动一页
        if (TempPos < nMax - 10) TempPos += 10;
        if (pScrollBar == NULL) { SetScrollPos(SB_VERT, TempPos); }
        else { pScrollBar->SetScrollPos(TempPos); }
        break;
    }
    int nNewPos = -TempPos;
    int Scrolldel = nNewPos - m_nScrollPos;
    s1.Format(_T("PropSysReg Scroll %d %d %d"), m_nScrollPos, nNewPos, Scrolldel);
    SysLog(s1);
    this->ScrollWindow(0, Scrolldel);
    m_nScrollPos += Scrolldel;
 
    CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar);
}
 
 
void CPropSysReg1::OnMouseHWheel(UINT nFlags, short zDelta, CPoint pt)
{
    // 此功能要求 Windows Vista 或更高版本。
    // _WIN32_WINNT 符号必须 >= 0x0600。
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    GetDlgItem(IDC_EDIT2)->SetWindowText(_T("OnMouseHWheel"));
    SysLog(_T("PropSysReg OnMouseHWheel"));
    CDialogEx::OnMouseHWheel(nFlags, zDelta, pt);
}