0
이 코드는 가로 스크롤을하는 대신 세로 스크롤을하고 있습니다. 나에게 잘못된 제안을 해주시기 바랍니다. 나는 수평 스크롤을하고 싶다. 나는이 희망가로 스크롤이 작동하지 않습니다
void CFormGridColumnPreviewDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar*
pScrollBar)
{
// TODO: Add your message handler code here and/or call default
int nDelta;
int nMaxPos = m_rcOriginalRect.Width() - m_nCurWidth;
switch (nSBCode)
{
case SB_LINERIGHT:
if (m_nScrollPos >= nMaxPos)
return;
nDelta = min(max(nMaxPos/20,5),nMaxPos-m_nScrollPos);
break;
case SB_LINELEFT:
if (m_nScrollPos <= 0)
return;
nDelta = -min(max(nMaxPos/20,5),m_nScrollPos);
break;
case SB_PAGERIGHT:
if (m_nScrollPos >= nMaxPos)
return;
nDelta = min(max(nMaxPos/10,5),nMaxPos-m_nScrollPos);
break;
case SB_THUMBTRACK:
case SB_THUMBPOSITION:
nDelta = (int)nPos - m_nScrollPos;
break;
case SB_PAGELEFT:
if (m_nScrollPos <= 0)
return;
nDelta = -min(max(nMaxPos/10,5),m_nScrollPos);
break;
default:
return;
}
m_nScrollPos += nDelta;
SetScrollPos(SB_HORZ,m_nScrollPos,TRUE);
ScrollWindow(0,-nDelta);
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CFormGridColumnPreviewDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
m_nCurWidth = cx;
SCROLLINFO si;
si.cbSize = sizeof(SCROLLINFO);
si.fMask = SIF_ALL;
si.nMin = 0;
si.nMax = m_rcOriginalRect.Width();
si.nPage = cx;
si.nPos = 0;
SetScrollInfo(SB_HORZ, &si, TRUE);
}
하드보고 무엇을 ScrollWindow() 할 수도 있지만 두 인수를 바꾸거나 그냥 제거하는 것은 솔루션처럼 들립니다. –
ScrollWindow (-nDelta, 0); – YogeshNC