如何将SCrollView中ScrollBra的滚动条隐藏,本人已尝试了用MFC中的函数GetSCrollBarCtrl和ShowScrollBar(false),根本不行,VC真的很不好用! 如何将SCrollView中ScrollBra的滚动条隐藏,本人已尝试了用MFC中的函数GetSCrollBarCtrl和ShowScrollBar(false),根本不行,VC真的很不好用!!!!!!!!!!!!!(不用SetSCrollRange()); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 人为设置SCrollView的尺寸,调用SetScrollSizes( MM_TEXT, SIZE(1,1)); 一个最简单的办法:重载OnSize消息,直接调用CView::OnSize()——绕开CScrollView::OnSize()。即 :C$$$ScrollView::OnSize(****){ CView::OnSize(****);//<-} 最简单的方法用CView用CScrollView干什么?不就为了滚动吗? 要真正隐藏滚动条, 必须响应ON_WM_WINDOWPOSCHANGING(),如下隐蔽了水平滚动条:void CMyView::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) { CScrollView::OnWindowPosChanging(lpwndpos); // TODO: Add your message handler code here ShowScrollBar (SB_HORZ, FALSE); ModifyStyle (WS_HSCROLL, 0, SWP_DRAWFRAME);}但是为为了能使视图滚动,必须响应ON_WM_HSCROLL(),设置视图的Pos,如下:void CBaseView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: Add your message handler code here and/or call default CPoint pt = GetScrollPosition(); CSize sz = GetTotalSize(); if(nSBCode == SB_LEFT || nSBCode == SB_LINELEFT || nSBCode == SB_PAGELEFT) { pt.x -= 10; pt.x = (pt.x<0)?0:pt.x; } else if(nSBCode == SB_RIGHT || nSBCode == SB_LINERIGHT || nSBCode == SB_PAGERIGHT) { pt.x += 10; pt.x = (pt.x>sz.cx)?sz.cx:pt.x; } else if(nSBCode == SB_THUMBPOSITION || nSBCode == SB_THUMBTRACK) { pt.x = ((LONG)nPos>=0 && (LONG)nPos<sz.cx)?nPos:pt.x; } ScrollToPosition(pt); Invalidate();}某种意义上说,这种方可实现使水平滚动条搬家. C$$$ScrollView::OnSize(****){ CView::OnSize(****);//<- ShowScrollBar(SB_BOTH,FLASE);}是在我的机器上通过了的。 多进程之间数据共享,如何对数据进程保护 断点不能用的问题? CAsyncSocket 多客户端 关于Vc++和Sql中删除问题 vc2005中如何更新数据库栏位 软件的收费问题 ? 求TFTP服务端代码 如何使程序暂停一段时间一后在运行 动态链接库dll都能被加载吗?[ 关于C的两个简单问题 怎样制作帮助模块? 怎么固定FormView的大小
C$$$ScrollView::OnSize(****)
{
CView::OnSize(****);//<-
}
void CMyView::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
{
CScrollView::OnWindowPosChanging(lpwndpos);
// TODO: Add your message handler code here
ShowScrollBar (SB_HORZ, FALSE);
ModifyStyle (WS_HSCROLL, 0, SWP_DRAWFRAME);
}但是为为了能使视图滚动,必须响应ON_WM_HSCROLL(),设置视图的Pos,如下:void CBaseView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CPoint pt = GetScrollPosition();
CSize sz = GetTotalSize();
if(nSBCode == SB_LEFT || nSBCode == SB_LINELEFT || nSBCode == SB_PAGELEFT)
{
pt.x -= 10;
pt.x = (pt.x<0)?0:pt.x;
}
else if(nSBCode == SB_RIGHT || nSBCode == SB_LINERIGHT || nSBCode == SB_PAGERIGHT)
{
pt.x += 10;
pt.x = (pt.x>sz.cx)?sz.cx:pt.x;
}
else if(nSBCode == SB_THUMBPOSITION || nSBCode == SB_THUMBTRACK)
{
pt.x = ((LONG)nPos>=0 && (LONG)nPos<sz.cx)?nPos:pt.x;
}
ScrollToPosition(pt);
Invalidate();
}
某种意义上说,这种方可实现使水平滚动条搬家.
{
CView::OnSize(****);//<-
ShowScrollBar(SB_BOTH,FLASE);
}
是在我的机器上通过了的。