
vc 为VIEW添加滚动条
为视图添加水平滚动条。create后滚动条却并没有显示。希望点击滚动条后,当前视图位置不改变,只改变一些显示的细节内容。哪位大侠知道该怎么做,希望不吝赐教。不胜感激!环境...
为视图添加水平滚动条。create后滚动条却并没有显示。
希望点击滚动条后,当前视图位置不改变,只改变一些显示的细节内容。哪位大侠知道该怎么做,希望不吝赐教。不胜感激!
环境是MFC。最好能提供原码~ 展开
希望点击滚动条后,当前视图位置不改变,只改变一些显示的细节内容。哪位大侠知道该怎么做,希望不吝赐教。不胜感激!
环境是MFC。最好能提供原码~ 展开
2个回答
展开全部
第一个问题:好像默认视图大于文档窗口就会出现滚动条,是不是你自己做了什么设置啊?
第二个问题:响应OnScroll(),在里进行你想要的调整,最后return 0;告诉程序不要处理滚动消息,就行了
第二个问题:响应OnScroll(),在里进行你想要的调整,最后return 0;告诉程序不要处理滚动消息,就行了
展开全部
滚动条必须处理-_-!(不能偷懒)如下↓:
SetScrollRange(hDlg,SB_VERT,0,40,FALSE); // 多少行
SetScrollPos(hDlg, SB_VERT,0,TRUE); //起点行
其实就一个CASE
case WM_VSCROLL:
{
switch(LOWORD(wParam))
{
case SB_LINEDOWN: //通知码
nVScrollPos ++; //向下
break;
case SB_LINEUP:
nVScrollPos --;//向上
break;
}
if(nVScrollPos<0) // 。。。。。。。。。
nVScrollPos = 0;
else if(nVScrollPos>40)
nVScrollPos = 40;
SCROLLINFO si; // 又一结构体
===================================SCROLLINFO=====================================
typedef struct tagSCROLLINFO {
UINT cbSize; -- Specifies the size, in bytes, of this structure.
UINT fMask; -- Specifies the scroll bar parameters to set or retrieve(有6个参数类型)
int nMin; -- Specifies the minimum scrolling position
int nMax; -- Specifies the maximum scrolling position.
UINT nPage; -- Specifies the page size
int nPos; -- Specifies the position of the scroll box
int nTrackPos; -- Specifies the immediate position of a scroll box that the user is dragging.
} SCROLLINFO;
====================================================================================
ZeroMemory(&si, sizeof(SCROLLINFO));
si.cbSize = sizeof(SCROLLINFO);
si.fMask = SIF_TRACKPOS;
// Call GetScrollInfo to get current tracking
// position in si.nTrackPos
if (!GetScrollInfo(hDlg, SB_VERT, &si) )
break;
if(nVScrollPos!= si.nPos)
{
SetScrollPos(hDlg, SB_VERT,nVScrollPos,TRUE);
InvalidateRect(hDlg,NULL,TRUE); ============repaint
}
break;
}
SetScrollRange(hDlg,SB_VERT,0,40,FALSE); // 多少行
SetScrollPos(hDlg, SB_VERT,0,TRUE); //起点行
其实就一个CASE
case WM_VSCROLL:
{
switch(LOWORD(wParam))
{
case SB_LINEDOWN: //通知码
nVScrollPos ++; //向下
break;
case SB_LINEUP:
nVScrollPos --;//向上
break;
}
if(nVScrollPos<0) // 。。。。。。。。。
nVScrollPos = 0;
else if(nVScrollPos>40)
nVScrollPos = 40;
SCROLLINFO si; // 又一结构体
===================================SCROLLINFO=====================================
typedef struct tagSCROLLINFO {
UINT cbSize; -- Specifies the size, in bytes, of this structure.
UINT fMask; -- Specifies the scroll bar parameters to set or retrieve(有6个参数类型)
int nMin; -- Specifies the minimum scrolling position
int nMax; -- Specifies the maximum scrolling position.
UINT nPage; -- Specifies the page size
int nPos; -- Specifies the position of the scroll box
int nTrackPos; -- Specifies the immediate position of a scroll box that the user is dragging.
} SCROLLINFO;
====================================================================================
ZeroMemory(&si, sizeof(SCROLLINFO));
si.cbSize = sizeof(SCROLLINFO);
si.fMask = SIF_TRACKPOS;
// Call GetScrollInfo to get current tracking
// position in si.nTrackPos
if (!GetScrollInfo(hDlg, SB_VERT, &si) )
break;
if(nVScrollPos!= si.nPos)
{
SetScrollPos(hDlg, SB_VERT,nVScrollPos,TRUE);
InvalidateRect(hDlg,NULL,TRUE); ============repaint
}
break;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询