我用对话框做成一个工具条,可是滚动功能不起作用(垂直方向),我重载了
OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
CDialogBar::OnVScroll(nSBCode, nPos, pScrollBar);
}可是我不知道该添加什么代码,能使滚动生效。
OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
CDialogBar::OnVScroll(nSBCode, nPos, pScrollBar);
}可是我不知道该添加什么代码,能使滚动生效。
解决方案 »
- 有没有办法捕捉特定程序的颜色
- 一个关于iocp的疑问
- 硬件鼠标模拟需要用到哪些API函数,
- 谁知道我没有用recordview基类而是用dialog基类,但在进行面板或视图上增加记录总说记录是只读,问这是什么原因,有没有解决办法呀。
- 请问在CChildView类中如何使用CMainFrame类中的成员
- “FromArgb”: 不是“Gdiplus::Color”的成员
- 如何给对话框的CEdit控件增加“保存编辑区文字到文件”的功能?
- 求微软的Scripting.Encoder的算法(任何语言都可以啊)
- 关于位图的操作,请大家帮我下
- ****CAsyncSocket派生类在线程中关闭出错****
- 请问可以用sql server的触发器调用asp页面吗?
- 帮我参考一哈,50分相送
sfi.fMask=SIF_ALL;
sfi.nMax=1000;
sfi.nMin=0;
sfi.nPage=100;
sfi.nPos=0;
SetScrollInfo(SB_VERT,&sfi);
void ScrollWindow( int xAmount, int yAmount, LPCRECT lpRect = NULL, LPCRECT lpClipRect = NULL );
2。函数 void CIRCEditView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{}
3。 afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
{
SCROLLINFO s;
s.cbSize = sizeof(s);
m_Scroll.GetScrollInfo(&s, SIF_POS|SIF_RANGE|SIF_PAGE);
BOOL bReDraw = FALSE; switch(nSBCode)
{
case SB_PAGEUP:
if(pChannel.GetAt(CurChannel)->m_Lines > m_VisiableLines)
{
if( pChannel.GetAt(CurChannel)->m_TopLine > m_VisiableLines)
pChannel.GetAt(CurChannel)->m_TopLine -= m_VisiableLines;
else
pChannel.GetAt(CurChannel)->m_TopLine = 0;
s.nPos = pChannel.GetAt(CurChannel)->m_TopLine + 1;
bReDraw = TRUE;
pChannel.GetAt(CurChannel)->m_AutoVScroll = FALSE;
}
break;
case SB_PAGEDOWN:
if(pChannel.GetAt(CurChannel)->m_Lines > m_VisiableLines)
{
pChannel.GetAt(CurChannel)->m_TopLine += m_VisiableLines;
if(pChannel.GetAt(CurChannel)->m_TopLine >= (pChannel.GetAt(CurChannel)->m_Lines - m_VisiableLines))
{
pChannel.GetAt(CurChannel)->m_TopLine = pChannel.GetAt(CurChannel)->m_Lines - m_VisiableLines;
pChannel.GetAt(CurChannel)->m_AutoVScroll = TRUE;
}
else
pChannel.GetAt(CurChannel)->m_AutoVScroll = FALSE;
s.nPos = pChannel.GetAt(CurChannel)->m_TopLine + 1;
bReDraw = TRUE;
}
break;
case SB_BOTTOM:
if(pChannel.GetAt(CurChannel)->m_Lines > m_VisiableLines)
if(pChannel.GetAt(CurChannel)->m_TopLine != (pChannel.GetAt(CurChannel)->m_Lines - m_VisiableLines))
{
pChannel.GetAt(CurChannel)->m_TopLine = pChannel.GetAt(CurChannel)->m_Lines - m_VisiableLines;
s.nPos = pChannel.GetAt(CurChannel)->m_TopLine + 1;
bReDraw = TRUE;
pChannel.GetAt(CurChannel)->m_AutoVScroll = TRUE;
}
break;
case SB_LINEDOWN:
if(pChannel.GetAt(CurChannel)->m_Lines > m_VisiableLines)
if(pChannel.GetAt(CurChannel)->m_TopLine < (pChannel.GetAt(CurChannel)->m_Lines - m_VisiableLines))
{
pChannel.GetAt(CurChannel)->m_TopLine ++;
if(pChannel.GetAt(CurChannel)->m_TopLine == (pChannel.GetAt(CurChannel)->m_Lines - m_VisiableLines))
pChannel.GetAt(CurChannel)->m_AutoVScroll = TRUE;
else
pChannel.GetAt(CurChannel)->m_AutoVScroll = FALSE;
s.nPos ++;
bReDraw = TRUE;
}
break;
case SB_LINEUP:
if(pChannel.GetAt(CurChannel)->m_Lines > m_VisiableLines)
{
if(pChannel.GetAt(CurChannel)->m_TopLine == 0)
break;
pChannel.GetAt(CurChannel)->m_TopLine --;
s.nPos --;
bReDraw = TRUE;
pChannel.GetAt(CurChannel)->m_AutoVScroll = FALSE;
}
break;
case SB_TOP:
if(pChannel.GetAt(CurChannel)->m_Lines > m_VisiableLines)
{
pChannel.GetAt(CurChannel)->m_TopLine = 0;
s.nPos = 1;
bReDraw = TRUE;
pChannel.GetAt(CurChannel)->m_AutoVScroll = TRUE;
}
break;
case SB_THUMBTRACK:
case SB_THUMBPOSITION:
if(pChannel.GetAt(CurChannel)->m_Lines > m_VisiableLines)
{
pChannel.GetAt(CurChannel)->m_TopLine = nPos - 1;
if(pChannel.GetAt(CurChannel)->m_TopLine == (pChannel.GetAt(CurChannel)->m_Lines - m_VisiableLines))
pChannel.GetAt(CurChannel)->m_AutoVScroll = TRUE;
else
pChannel.GetAt(CurChannel)->m_AutoVScroll = FALSE;
s.nPos = nPos;
bReDraw = TRUE;
}
break;
}
s.fMask = SIF_POS;
m_Scroll.SetScrollInfo(&s, TRUE);
if(bReDraw == TRUE)
{
pChannel.GetAt(CurChannel)->m_ReloadViBuf = TRUE;
RedrawWindow();
}
}
{
SCROLLINFO s;
s.cbSize = sizeof(s);
m_Scroll.GetScrollInfo(&s, SIF_POS|SIF_RANGE|SIF_PAGE); switch(nSBCode)
{
case SB_PAGEUP:
//上翻一页
break;
case SB_PAGEDOWN:
//下翻一页
break;
case SB_BOTTOM:
//移动到底
break;
case SB_LINEDOWN:
//下翻一行
break;
case SB_LINEUP:
//上翻一行
break;
case SB_TOP:
//移动到顶部
break;
case SB_THUMBTRACK:
case SB_THUMBPOSITION:
//拖动,根据NPOS确定
s.nPos = nPos;
break;
}
s.fMask = SIF_POS;
m_Scroll.SetScrollInfo(&s, TRUE); RedrawWindow();
}
================================================================我是 anothervip ......................