BOOL CMyListBox::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{//这个消息,我却不知道怎么判断滚动条的滚动"时",滚到初始位置(初始位置:就是程序运行后,列表控件的滚动条的开始位置),还是不是初始位置,有办法吗??? 是否,可以直接操作滚动条对象呀???
//return CListBox::OnMouseWheel(nFlags, zDelta, pt);
return 1;}
解决方案 »
- 为何我用双缓冲 不能避免 图形的闪烁?
- 有什么函数可以获得到QQ用户名和密码的句柄?
- AfxBeginThread的第一个参数只能是全局函数,不能用成员函数么?
- 如何设置vc,使vc能加入/链接汇编产生的obj文件?
- 菜鸟的紧急求助!!!---绝非灌水,具体进来看!
- 在toolbar上制做不排斥的按钮组,怎么做?
- 服务端开始监听,客户端知道服务端的IP及端口号并连接上服务端,服务端怎么知道客户端的IP呢?用什么函数呢?
- 请问,如何能让我的程序的图表在WINDOWS的右下角,就是放在QQ图标和输入法图标的那个位置
- 串口通信 len太短咋办
- RAR解压问题。求帮助。
- 基于对话框的程序,用CToolTipCtr如何给工具栏实现动态提示?
- 求助:从txt文件里读取数据的问题
比如SetScrollInfo设置滚动条 滑块的pos以及高度
ShowScrollBar来显示或隐藏滚动条
SCROLLINFO sif;
用GetScrollInfo获取后,
如果sif.nPos == 0,做你想做的
{
// TODO: Add your message handler code here and/or call default
afxDump << m_vPos << "\n";
if(m_Total > m_Client)
{
int dir=zDelta > 0 ? SB_LINEUP : SB_LINEDOWN;
OnVScroll(dir, 0, 0);
}
return TRUE;// done
}
WM_VSCROLL
WPARAM wParam;
LPARAM lParam;
参数
wParam
SB_TOP 滚动到顶端//这个消息咋使用???赶紧加上我qq行不。//按你的意思,写成这样。但是,发现滚轮滚动第一次之后,没反应。滚动第二次,才有反应!
滚回去也是。滚到头 也没反应。再滚动一次才行!有参数是记录滚动次数的吗?
BOOL CMyListBox::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
SCROLLINFO sif;
GetScrollInfo(SB_VERT,&sif); if(sif.nPos == 0)
{
Valbmp = 0;//==0 切换一张图片,
}
else if(sif.nPos > 0)
{
Valbmp = 1;//==1 切换另一张,
} Invalidate();
return CListBox::OnMouseWheel(nFlags, zDelta, pt);
//return 1;
}
WM_VSCROLL WPARAM wParam; LPARAM lParam;
参数 wParam SB_TOP 滚动到顶端//这个消息咋使用???
GetScrollInfo(SB_VERT,&sif);
最后记得SetScrollInfo
m_ 模块变量
v 垂直 vertical
Pos 滚动位置。
if(m_Total > m_Client)
//这俩变量啥意思
m_Client 是 listbox 客户区域 能 包含的 项数
m_Total 是 addstring 或 insert 时 ++;
m_Client 是 listbox 客户区域 高 除以 每项 高。
以 搜索 这 2 项 ,可以看到 在 哪里 初始化
if(m_Total > m_Client)
//滚动时,第一页数据全部滚动完,
然后,int dir=zDelta > 0 ? SB_LINEUP : SB_LINEDOWN;
//如何滚轮是整数是up 负数时down 对吧;我记的如何此时down是-360 再up一下时,不是-240,你怎么能根据正负来判断呢 ?????????????????????
下面在调用滚轮函数
他不是 +120 就是 -120. 没见过 240 的。
BOOL CMyListBox::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
SCROLLINFO sif = { sizeof(SCROLLINFO),SIF_ALL,0,0,0,0 }; ;
GetScrollInfo(SB_VERT,&sif);
//Get ,再Set有啥区别呢??? 还是那个样子,我滚轮初始时,滚一次,nPos还是 == 0,滚回去,也是滚到头 不是0;要滚俩次 0 变 1
//滚回去也是 滚俩次才是0
SetScrollInfo(SB_VERT,&sif);
if(sif.nPos == 0)
{
Valbmp = 0;
}
else if(sif.nPos > 0)
{
Valbmp = 1;
}
Invalidate();
return CListBox::OnMouseWheel(nFlags, zDelta, pt);
//return 1;
}