ScrollBar不能使用的问题

simonchenxu 2003-08-24 08:01:59
我在dialog里面放了一个scrollbar
然后还分别连上了一个control,一个value
在dialog::initdialog()里面,我setscrollrange(xx,xx)

但是显示出来的scrollbar不能滑动,滑动块在闪动

后来我也是过了动态的new一个scrollbar,然后连到IDC_SCROLLBAR,但是还是一样。

是不是还有什么操作?
谢谢帮助!
...全文
321 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
simonchenxu 2003-08-26
  • 打赏
  • 举报
回复
确实可以,给分给分!
:-)
simonchenxu 2003-08-25
  • 打赏
  • 举报
回复
现在的问题是,我在dialog里面放上了标准的滑动条,现在dialog一启动,滑动块不能移动,还在闪!

m_pScroll = new CScrollBar; ASSERT_VALID(m_pScroll);

if (!m_pScroll->Create(SBS_HORZ,
CRect(0, 0, 0, 0), this, IDC_SCROLL1)){
TRACE0(_T("Failed to create Scroll Control 1.\n"));
}

if (totlen > avail.right - avail.left){
m_pScroll->SetScrollRange(0, totlen - (avail.right - avail.left));
}else{
m_pScroll->SetScrollRange(0, 0);
}
m_pScroll->SetScrollPos(0);

这是我初始化的代码,IDC_SCROLL1是dialog里面scrollbar的id
m_pScroll是一个*CScrollBar
wudhu 2003-08-25
  • 打赏
  • 举报
回复
转自msdn
void CMyView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// Get the minimum and maximum scroll-bar positions.
int minpos;
int maxpos;
pScrollBar->GetScrollRange(&minpos, &maxpos);
maxpos = pScrollBar->GetScrollLimit();

// Get the current position of scroll box.
int curpos = pScrollBar->GetScrollPos();

// Determine the new position of scroll box.
switch (nSBCode)
{
case SB_LEFT: // Scroll to far left.
curpos = minpos;
break;

case SB_RIGHT: // Scroll to far right.
curpos = maxpos;
break;

case SB_ENDSCROLL: // End scroll.
break;

case SB_LINELEFT: // Scroll left.
if (curpos > minpos)
curpos--;
break;

case SB_LINERIGHT: // Scroll right.
if (curpos < maxpos)
curpos++;
break;

case SB_PAGELEFT: // Scroll one page left.
{
// Get the page size.
SCROLLINFO info;
pScrollBar->GetScrollInfo(&info, SIF_ALL);

if (curpos > minpos)
curpos = max(minpos, curpos - (int) info.nPage);
}
break;

case SB_PAGERIGHT: // Scroll one page right.
{
// Get the page size.
SCROLLINFO info;
pScrollBar->GetScrollInfo(&info, SIF_ALL);

if (curpos < maxpos)
curpos = min(maxpos, curpos + (int) info.nPage);
}
break;

case SB_THUMBPOSITION: // Scroll to absolute position. nPos is the position
curpos = nPos; // of the scroll box at the end of the drag operation.
break;

case SB_THUMBTRACK: // Drag scroll box to specified position. nPos is the
curpos = nPos; // position that the scroll box has been dragged to.
break;
}

// Set the new position of the thumb (scroll box).
pScrollBar->SetScrollPos(curpos);

CView::OnHScroll(nSBCode, nPos, pScrollBar);
}

wudhu 2003-08-25
  • 打赏
  • 举报
回复
你要自己在对话框类中响应WM_HSCROLL(横)或WM_VSCROLL(竖)函数
wudhu 2003-08-25
  • 打赏
  • 举报
回复
下面的代码我试了是没错的
// TODO: Add extra initialization here
m_pScroll = new CScrollBar;
ASSERT_VALID(m_pScroll);

if (!m_pScroll->Create( SBS_HORZ | SBS_TOPALIGN | WS_CHILD | WS_VISIBLE, CRect(0, 0, 200, 30), this, IDC_SCROLL1))
{
TRACE0(_T("Failed to create Scroll Control 1.\n"));
}

m_pScroll->SetScrollRange(0, 100);

m_pScroll->SetScrollPos(0);
simonchenxu 2003-08-24
  • 打赏
  • 举报
回复
有没有人知道呀~
或者告诉我一个简单易行的办法也行
谢谢!

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧