您必須修改MSDN example稍微用滾輪控制工作:
//add to message map
ON_WM_HSCROLL()
//initialize in OnInitDialog
SCROLLINFO info = { sizeof(SCROLLINFO) };
info.nMin = 0;
info.nMax = 100;
info.nPage = 1;
info.fMask = SIF_ALL;
m_Scroll.SetScrollInfo(&info, TRUE);
如果info.nPage
大於1時,可能會甩掉範圍。添加此行來解決它:
info.nMax += info.nPage - 1;
添加過載:
void CMyDialog::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
if (pScrollBar == &m_Scroll)
{
//get scrollbar information
SCROLLINFO info;
m_Scroll.GetScrollInfo(&info, SIF_ALL);
int pos = info.nPos;
//calculate the new position of scroll box
switch (nSBCode)
{
case SB_LEFT: pos = info.nMin; break;
case SB_RIGHT: pos = info.nMax; break;
case SB_LINELEFT: pos--; break;
case SB_LINERIGHT: pos++; break;
case SB_PAGELEFT: pos -= info.nPage; break;
case SB_PAGERIGHT: pos += info.nPage; break;
case SB_THUMBPOSITION: pos = nPos; break;
case SB_THUMBTRACK: pos = nPos; break;
}
//make sure the new position is within range
if (pos < info.nMin) pos = info.nMin;
//adjust the max value, incase we had changed it earlier in OnInitDialog
int max = info.nMax - info.nPage + 1;
if (pos > max) pos = max;
//set the new position
m_Scroll.SetScrollPos(pos);
}
}
'所以我面臨着一個problem'你似乎忘了解釋* *什麼問題你面對的。 –
@IgorTandetnik處理滾動箭頭的問題..你現在可以回答我嗎? –
你在處理滾動箭頭時有什麼問題? –