本人初学,今天看到滚动条,试验了一个小程序,就是一个水平的滚动条,里面要响应的消息有SB_THUMBPOSITION,SB_LINELEFT,SB_LINERIGHT。
    程序可以执行,但是对SB_LINELEFT和SB_LINERIGHT却不能做出响应,百思不得其解,请问这是为什么?
    还有滚动条消息里面有一个SBM_ENABLE_ARROWS,是不是和它有关系呀?

解决方案 »

  1.   


    void CSBTestDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
    {
    // TODO: Add your message handler code here and/or call default
    int nTemp1,nTemp2;
        nTemp1=pScrollBar->GetScrollPos();
    switch(nSBCode)
    {
    case SB_THUMBPOSITION:
    pScrollBar->SetScrollPos(nPos);
    break;
    case SB_LINELEFT:
    nTemp2=(nMax-nMin)/10;
    if((nTemp1-nTemp2)>nMin)
    {
    nTemp1-=nTemp2;
    }
    else{
    nTemp1=nMin;
    }
    break;
    case SB_LINERIGHT:
    nTemp2=(nMax-nMin)/10;
    if((nTemp1+nTemp2)<nMax)
    {
    nTemp1+=nTemp2;
    }
    else{
    nTemp1=nMax;
    }
            break;
    }
    CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
    }
    之前已经作了初始化了,编译和连接都没有问题
      

  2.   

    呵呵,你在SB_LINELEFT和SB_LINERIGHT的程序中,没有调用pScrollBar->SetScrollPos(nTimp1);啊!!!
      

  3.   

    哦,就是的,谢谢鹦鹉大哥!那个关于滚动条的消息SBM_ENABLE_ARROWS有什么作用呀,怎么应用?