mfc_scrollbar - 8BitsCoding/RobotMentor GitHub Wiki
μ€ν¬λ‘€λ°λ₯Ό λ£λ λ°©λ²μ λ€μ΄μΌλ‘κ·Έμ μμ±μ Vertical Scrollbar λ₯Ό Trueλ‘ λλ©΄λλ€.
μ€ν¬λ‘€ λ©μμ§λ₯Ό μ²λ¦¬ν΄ μ€μΌνλ€.
void CMFCApplication1Dlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
if (pScrollBar == NULL) // 컨νΈλ‘€λ‘ λ§λ€μ΄μ§ μ€ν¬λ‘€λ°μ κ²½μ° μμ΄λκ° μμ§λ§, λ€μ΄μΌλ‘κ·Έμ λ§λ€μ΄μ§ μ€ν¬λ‘€ λ°λ μμ΄λκ° μλ€
{
int scroll_pos = GetScrollPos(SB_VERT), min = 0, max = 0;
GetScrollRange(SB_VERT, &min, &max);
switch (nSBCode) {
// μ€ν¬λ‘€λ° νμ΄ν ν΄λ¦
case SB_LINEDOWN :
if(scroll_pos < max) SetScrollPos(SB_VERT, ++scroll_pos);
break;
case SB_LINEUP :
if (scroll_pos > min) SetScrollPos(SB_VERT, --scroll_pos);
break;
// μ€ν¬λ‘€λ° μ체λ₯Ό ν΄λ¦
case SB_PAGEDOWN:
if (scroll_pos + 24 < max) SetScrollPos(SB_VERT, scroll_pos + 24);
break;
case SB_PAGEUP:
if (scroll_pos - 24 > min) SetScrollPos(SB_VERT, scroll_pos - 24);
break;
// μ€ν¬λ‘€λ° μ‘κ³ λλ κ·Έ
case SB_THUMBPOSITION:
case SB_THUMBTRACK:
SetScrollPos(SB_VERT, nPos);
break;
}
}
CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar);
}
void CMFCApplication1Dlg::OnSize(UINT nType, int cx, int cy)
{
CDialogEx::OnSize(nType, cx, cy);
CRect r;
GetClientRect(r);
SetScrollRange(SB_VERT, 0, 8 * 9 * 24 - r.Height(), 0);
}
void CMFCApplication1Dlg::OnPaint()
{
CPaintDC dc(this); // 그리기λ₯Ό μν λλ°μ΄μ€ 컨ν
μ€νΈμ
λλ€.
if (IsIconic())
{
// ...
}
else
{
CString str;
int count = 0;
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(RGB(255, 0, 0));
int scroll_pos = GetScrollPos(SB_VERT);
for (int dan = 2; dan <= 9; dan++) {
for (int i = 1; i < 9; i++) {
str.Format(L"%d * %d = %d", dan, i, dan * 2);
dc.TextOut(10, count*24- scroll_pos, str);
count++;
}
}
// CDialogEx::OnPaint();
}
}
BOOL CMFCApplication1Dlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// μ΄ λν μμμ μμ΄μ½μ μ€μ ν©λλ€. μμ© νλ‘κ·Έλ¨μ μ£Ό μ°½μ΄ λν μμκ° μλ κ²½μ°μλ
// νλ μμν¬κ° μ΄ μμ
μ μλμΌλ‘ μνν©λλ€.
SetIcon(m_hIcon, TRUE); // ν° μμ΄μ½μ μ€μ ν©λλ€.
SetIcon(m_hIcon, FALSE); // μμ μμ΄μ½μ μ€μ ν©λλ€.
// TODO: μ¬κΈ°μ μΆκ° μ΄κΈ°ν μμ
μ μΆκ°ν©λλ€.
CRect r;
GetClientRect(r);
SetScrollRange(SB_VERT, 0, 8*9*24-r.Height(), 0);
return TRUE; // ν¬μ»€μ€λ₯Ό 컨νΈλ‘€μ μ€μ νμ§ μμΌλ©΄ TRUEλ₯Ό λ°νν©λλ€.
}