WEB开发网
开发学院软件开发VC Visual C++ MFC 简明教程(4) 阅读

Visual C++ MFC 简明教程(4)

 2007-03-18 21:27:52 来源:WEB开发网   
核心提示: 事件处理函数OnHScroll来自CWnd类,我们使用该函数是因为该代码建立了水平滚动条,Visual C++ MFC 简明教程(4)(9),对于垂直滚动条应使用OnVScroll,在代码中,然后确保它在设置其新位置时仍然在范围内,一旦设置了滚动条,消息映射与滚动函数相联系,并使滚动条在用

事件处理函数OnHScroll来自CWnd类。我们使用该函数是因为该代码建立了水平滚动条。对于垂直滚动条应使用OnVScroll。在代码中,消息映射与滚动函数相联系,并使滚动条在用户操作时发出鸣笛声。当你运行该程序时,你可以单击箭头、拖动滚动条上的小方块等等。每次操作都会出现鸣笛声,但是滚动条上的小方块实际上不会移动,因为我们还没有把它与实际的代码相关联。

每次滚动条调用OnHScroll时,你的代码都要确定用户的操作。在OnHScroll函数内部,你可以检验传递给处理函数的第一参数,如下所示。如果你与上面的代码一起使用,滚动条的小方块就会移动到用户操作的位置处。

  // The message handling function
   void CScrollBarWindow::OnHScroll(UINT nSBCode,
   UINT nPos, CScrollBar* pScrollBar)
   {
   int pos;
   pos = sb->GetScrollPos();
   switch ( nSBCode )
   {
   case SB_LINEUP:
   pos -= 1;
   break;
   case SB_LINEDOWN:
   pos += 1;
   break;
   case SB_PAGEUP:
   pos -= 10;
   break;
   case SB_PAGEDOWN:
   pos += 10;
   break;
   case SB_TOP:
   pos = MIN_RANGE;
   break;
   case SB_BOTTOM:
   pos = MAX_RANGE;
   break;
   case SB_THUMBPOSITION:
   pos = nPos;
   break;
   default:
   return;
   }
   if ( pos < MIN_RANGE )
   pos = MIN_RANGE;
   else if ( pos > MAX_RANGE )
   pos = MAX_RANGE;
   sb->SetScrollPos( pos, TRUE );
   }

SB_LINEUP和SB_LINEDOWN的不同常数值在CWnd::OnHScroll函数文档中有介绍。上面的代码首先使用GetScrollPos函数来恢复滚动条的当前位置。然后使用开关语句来确定用户对滚动条的操作。SB_LINEUP 和SB_LINEDOWN常数值意味着垂直方向,但也可用于水平方向表示左右移动。SB_PAGEUP和SB_PAGEDOWN是用在用户单击滚动条时。SB_TOP和SB_BOTTOM用于当用户移动滚动条小方块到滚动条的顶部和底部。SB_THUMBPOSITION用于当用户拖动小方块到指定位置时。代码会自动调整位置,然后确保它在设置其新位置时仍然在范围内。一旦设置了滚动条,小方块就会移动到适当的位置。

上一页  4 5 6 7 8 9 10  下一页

Tags:Visual MFC 简明教程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接