如题.拖动时,scrollbar在新pos上停留1秒后,自动跑到0位置
BOOL OnSize(WPARAM wParam, LPARAM lParam)
{
RECT rcClient;
GetClientRect(m_hwnd,&rcClient);
MoveWindow(m_homepage1->m_hwnd,0,0,rcClient.right,rcClient.bottom,TRUE);
SCROLLINFO si;
memset(&si,0,sizeof(SCROLLINFO));
si.cbSize=sizeof(SCROLLINFO);
si.fMask=SIF_RANGE | SIF_PAGE;
si.nMax=m_max;
si.nPage=rcClient.bottom;
SetScrollInfo(m_hwnd,SB_VERT,&si,TRUE); return 0;
}BOOL OnVScroll(WPARAM wParam,LPARAM lParam)
{
SCROLLINFO si;
memset(&si,0,sizeof(SCROLLINFO));
si.cbSize=sizeof(SCROLLINFO);
si.fMask=SIF_RANGE | SIF_PAGE | SIF_POS;
GetScrollInfo(m_hwnd,SB_VERT,&si); int newPos=0;
switch(LOWORD(wParam))
{
case SB_LINEUP:
newPos=si.nPos-1;
break;
case SB_LINEDOWN:
newPos=si.nPos+1;
break;
case SB_PAGEUP:
newPos=si.nPos-si.nPage;
break;
case SB_PAGEDOWN:
newPos=si.nPos+si.nPage;
break;
case SB_THUMBPOSITION:
newPos=HIWORD(wParam);
break;
}
if(newPos == si.nPos)
return 0;
if(newPos<0)
newPos=0;
if(newPos>si.nMax-(si.nPage-1))
newPos=si.nMax-(si.nPage-1); ScrollWindowEx(m_hwnd,0,-(newPos-si.nPos),NULL,NULL,NULL,NULL,SW_INVALIDATE);
UpdateWindow(m_hwnd);
UpdateWindow(m_homepage1->m_hwnd); SetScrollPos(m_hwnd,SB_VERT,newPos,TRUE);
return 0;
}
BOOL OnSize(WPARAM wParam, LPARAM lParam)
{
RECT rcClient;
GetClientRect(m_hwnd,&rcClient);
MoveWindow(m_homepage1->m_hwnd,0,0,rcClient.right,rcClient.bottom,TRUE);
SCROLLINFO si;
memset(&si,0,sizeof(SCROLLINFO));
si.cbSize=sizeof(SCROLLINFO);
si.fMask=SIF_RANGE | SIF_PAGE;
si.nMax=m_max;
si.nPage=rcClient.bottom;
SetScrollInfo(m_hwnd,SB_VERT,&si,TRUE); return 0;
}BOOL OnVScroll(WPARAM wParam,LPARAM lParam)
{
SCROLLINFO si;
memset(&si,0,sizeof(SCROLLINFO));
si.cbSize=sizeof(SCROLLINFO);
si.fMask=SIF_RANGE | SIF_PAGE | SIF_POS;
GetScrollInfo(m_hwnd,SB_VERT,&si); int newPos=0;
switch(LOWORD(wParam))
{
case SB_LINEUP:
newPos=si.nPos-1;
break;
case SB_LINEDOWN:
newPos=si.nPos+1;
break;
case SB_PAGEUP:
newPos=si.nPos-si.nPage;
break;
case SB_PAGEDOWN:
newPos=si.nPos+si.nPage;
break;
case SB_THUMBPOSITION:
newPos=HIWORD(wParam);
break;
}
if(newPos == si.nPos)
return 0;
if(newPos<0)
newPos=0;
if(newPos>si.nMax-(si.nPage-1))
newPos=si.nMax-(si.nPage-1); ScrollWindowEx(m_hwnd,0,-(newPos-si.nPos),NULL,NULL,NULL,NULL,SW_INVALIDATE);
UpdateWindow(m_hwnd);
UpdateWindow(m_homepage1->m_hwnd); SetScrollPos(m_hwnd,SB_VERT,newPos,TRUE);
return 0;
}
解决方案 »
- 求助:跨进双击systreeview32的节点,高手请入[测试成功立付]
- 想做一个计算器 菜鸟求指点
- 重载文档类OnOpenDocument函数
- 如何设置和判断TreeView前的CheckBox选中
- [VC/MFC] 求如何转换uniform的spline data --> bezier的控制点 ?
- 怎样显示创建的工具栏资源
- 怎样使用ListBox
- *******源码放送*******
- 急,请问在如何动创建控件时,将一个CString转换为控件的ID?
- 怎样把焦点从CFormView中的一个Button移到另一个Button?
- MFC开发的Windows 应用程序可否禁止旋转?
- 请问怎么使用 VC6.0编写软件,可以发送信息?
BOOL OnVScroll(WPARAM wParam,LPARAM lParam)
中的 si.fMask=SIF_RANGE | SIF_PAGE | SIF_POS; //改成SIF_ALL
GetScrollInfo(m_hwnd,SB_VERT,&si);
int newPos=0; //static
//加上:
newPos=si.npos; switch(LOWORD(wParam))
{
3. 是否设置的范围太大了, 滚动一次才一个像素