社区
界面
帖子详情
关于响应CListCtrl滚动条消息
hzy694358
2010-05-19 04:46:47
一个继承的CListCtrlEx类,
我在里面也添加了 垂直和水平滚动条消息函数,可以响应得到
但是在对话框的垂直和水平滚动条消息函数里捕获不到消息
但是我想在这个CListCtrlEx滚动条消息里处理其他的控件
这样的话,如果放到CListCtrlEx的滚动条消息中处理,变量没法传进去
怎么能在对话框的消息函数中处理呢
...全文
1765
30
打赏
收藏
关于响应CListCtrl滚动条消息
一个继承的CListCtrlEx类, 我在里面也添加了 垂直和水平滚动条消息函数,可以响应得到 但是在对话框的垂直和水平滚动条消息函数里捕获不到消息 但是我想在这个CListCtrlEx滚动条消息里处理其他的控件 这样的话,如果放到CListCtrlEx的滚动条消息中处理,变量没法传进去 怎么能在对话框的消息函数中处理呢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
30 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dianhui
2010-05-20
打赏
举报
回复
[Quote=引用 29 楼 happyparrot 的回复:]
吐血。你慢慢绕去吧。
[/Quote]
只想把问题问题清楚点,好向各位大虾学习学习,那有绕了!
那……唉,还是算了吧!
快乐鹦鹉
2010-05-20
打赏
举报
回复
吐血。你慢慢绕去吧。
dianhui
2010-05-20
打赏
举报
回复
[Quote=引用 13 楼 hzy694358 的回复:]
引用 12 楼 happyparrot 的回复:
==(CScrollBar *)&m_ListCtrl
==还能这样转换啊。
呵呵,我原来是用句柄的,看有些例子是这样的,我就跟着这样了
我发现在按下鼠标移动滚动条的过程中,
CListCtrlEx::OnHScroll()
根本没响应,
怎么让他在移动过程中就不断的响应呢
就跟Slider控件一样的效果
……
[/Quote]
这儿他不是说没响应吗?
还有,happyparrot你在26L问的不正好是我在19L请教你的问题么!你怎么又把这个问题找出来反问了!
Eleven
2010-05-20
打赏
举报
回复
[Quote=引用 25 楼 dianhui 的回复:]
各位大虾,关键人家现在是CListCtrlEx的WM_HSCROLL消息函数CListCtrlEx::OnHScroll()没有被执行,所以消息发送的位置都找不到啊!
[/Quote]
一个继承的CListCtrlEx类,
我在里面也添加了 垂直和水平滚动条消息函数,可以响应得到
但是在对话框的垂直和水平滚动条消息函数里捕获不到消息
------------------------------------------------
lz的上面不是说了吗:
CListCtrlEx类中可以得到WM_HSCROLL消息,对话框得不到。。。。
?????
快乐鹦鹉
2010-05-20
打赏
举报
回复
[Quote=引用 25 楼 dianhui 的回复:]
各位大虾,关键人家现在是CListCtrlEx的WM_HSCROLL消息函数CListCtrlEx::OnHScroll()没有被执行,所以消息发送的位置都找不到啊!
[/Quote]
如果是这样,那么为什么将拖拉条放下就会响应啊?
dianhui
2010-05-20
打赏
举报
回复
各位大虾,关键人家现在是CListCtrlEx的WM_HSCROLL消息函数CListCtrlEx::OnHScroll()没有被执行,所以消息发送的位置都找不到啊!
快乐鹦鹉
2010-05-20
打赏
举报
回复
[Quote=引用 23 楼 visualeleven 的回复:]
引用 22 楼 happyparrot 的回复:
不都是你教的么?
原来如此
有点着急了,晕死
::SendMessage(GetParent()->m_hWnd,WM_HSCROLL,MAKELONG(SB_THUMBTRACK,nPos),(LPARAM)m_hWnd);
他已经在CListCtrlEx中,响应OnHScroll,然后将事件发送给父窗口了。
不过这里最好判断一下Ge……
[/Quote]
晕死。这不是我在问问题,也不是我说的方法......
Eleven
2010-05-20
打赏
举报
回复
[Quote=引用 22 楼 happyparrot 的回复:]
不都是你教的么?
原来如此
有点着急了,晕死
::SendMessage(GetParent()->m_hWnd,WM_HSCROLL,MAKELONG(SB_THUMBTRACK,nPos),(LPARAM)m_hWnd);
他已经在CListCtrlEx中,响应OnHScroll,然后将事件发送给父窗口了。
不过这里最好判断一下GetParent()是否就是父对话框指针
[/Quote]
你定义一个自定义的消息发送给父窗口就可以,不一定要发送WM_HSCROLL消息,或者你在父窗口类中定义个public的方法,调用它,传递给你想要传递给父窗口的参数也可以。。。
你把简单的问题复杂化了吧。。。
快乐鹦鹉
2010-05-20
打赏
举报
回复
不都是你教的么?
原来如此
有点着急了,晕死
::SendMessage(GetParent()->m_hWnd,WM_HSCROLL,MAKELONG(SB_THUMBTRACK,nPos),(LPARAM)m_hWnd);
他已经在CListCtrlEx中,响应OnHScroll,然后将事件发送给父窗口了。
不过这里最好判断一下GetParent()是否就是父对话框指针
dianhui
2010-05-20
打赏
举报
回复
[Quote=引用 20 楼 happyparrot 的回复:]
但是让我不明白的是,为什么在他放开的时候,又在CDialog中捕获到来自CListCtrl上的滚动条发来的消息呢!
==这就说明一点,在CListCtrlEx中的OnHScroll是起作用的,不是你怀疑的消息机制都没有建立好。
[/Quote]
这里与CListCtrlEx有什么相干,你没有看到在他这段代码中用的是CListCtrl在做测试吗?这里还没有用CListCtrlEx呢,用的是MFC的CListCtrl!所以怎么能反映出CListCtrlEx的消息映射机制呢!
快乐鹦鹉
2010-05-20
打赏
举报
回复
但是让我不明白的是,为什么在他放开的时候,又在CDialog中捕获到来自CListCtrl上的滚动条发来的消息呢!
==这就说明一点,在CListCtrlEx中的OnHScroll是起作用的,不是你怀疑的消息机制都没有建立好。
dianhui
2010-05-20
打赏
举报
回复
[Quote=引用 11 楼 hzy694358 的回复:]
还有个问题
//水平滚动条
void CTestDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
switch(nSBCode)
{
case SB_THUMBTRA……
[/Quote]
//////----向happyparrot请教-----///////
在他这段代码里,我理解是这样的:
Slider控件的父窗口是CDialog,而该段代码中的CListCtrl控件父窗口同样是CDialog。
在这里,Slider控件其实就相当CScrollBar控件,它直接响应父窗口的WM_HSCROLL消息,也就是CDialog的WM_HSCROLL消息,所以在CTestDlg::OnHScroll函数中的case SB_THUMBTRACK事件中,Slider控件拖动得到了及时响应;
CListCtrl控件父窗口虽然是CDialog,但是CListCtrl控件上的CScrollBar父窗口却CListCtrl而不是CDialog,所以你拖动CListCtrl上的滑块时,是由CListCtrl的WM_HSCROLL消息来响应处理的,而不是CDialog的WM_HCSROLL消息来响应的,所以在拖动CListCtrl的滚动条时,CTestDlg::OnHScroll函数没有初执行。但是让我不明白的是,为什么在他放开的时候,又在CDialog中捕获到来自CListCtrl上的滚动条发来的消息呢!
快乐鹦鹉
2010-05-20
打赏
举报
回复
[Quote=引用 17 楼 dianhui 的回复:]
拖动的时候CListCtrlEx::OnHScroll()
这个就没响应了,而我是在这个函数里发消息给父窗口处理的,
这样根本就没发
//////////////////////////////
不可思义,你的意思就是你CListCtrlEx::OnHScroll函数根本就没有被WM_HSCROLL响应喽?
如果这样,我要问问你的OnHScroll函数是手动添加的吗?如果是手动添回是……
[/Quote]
楼上你是不是根本没有看前面的回复啊......
dianhui
2010-05-20
打赏
举报
回复
拖动的时候CListCtrlEx::OnHScroll()
这个就没响应了,而我是在这个函数里发消息给父窗口处理的,
这样根本就没发
//////////////////////////////
不可思义,你的意思就是你CListCtrlEx::OnHScroll函数根本就没有被WM_HSCROLL响应喽?
如果这样,我要问问你的OnHScroll函数是手动添加的吗?如果是手动添回是不是忘记在作消息映射了,你检查下消息映射有没有做:
BEGIN_MESSAGE_MAP(CListCtrlEx, CListCtrl)
//{{AFX_MSG_MAP(CListCtrlEx)
ON_WM_PAINT()
ON_WM_CREATE()
ON_WM_HSCROLL()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
红色那句代码有没有!
快乐鹦鹉
2010-05-20
打赏
举报
回复
搞不清楚,会不会被前面截了啊。在对话框的PreTranslateMessage中能截到么?
hzy694358
2010-05-20
打赏
举报
回复
case SB_THUMBTRACK: //拖动滚动滑块时
该消息码不就是用来响应鼠标拖动滑块的吗?你在此处处理鼠标拖动滚动条操作不就行了么?
OnHScroll的nPos参数传过来的就是滑块拖动时滚动条的位置(在其它情况下该值无效),根据这个位置值来对应你当前要操作的数据
-----------------------------
就是没响应,响应了我还来问干么
拖动的时候CListCtrlEx::OnHScroll()
这个就没响应了,而我是在这个函数里发消息给父窗口处理的,
这样根本就没发
dianhui
2010-05-19
打赏
举报
回复
[Quote=引用 13 楼 hzy694358 的回复:]
引用 12 楼 happyparrot 的回复:
==(CScrollBar *)&m_ListCtrl
==还能这样转换啊。
呵呵,我原来是用句柄的,看有些例子是这样的,我就跟着这样了
我发现在按下鼠标移动滚动条的过程中,
CListCtrlEx::OnHScroll()
根本没响应,
怎么让他在移动过程中就不断的响应呢
就跟Slider控件一样的效果
……
[/Quote]
case SB_THUMBTRACK: //拖动滚动滑块时
该消息码不就是用来响应鼠标拖动滑块的吗?你在此处处理鼠标拖动滚动条操作不就行了么?
OnHScroll的nPos参数传过来的就是滑块拖动时滚动条的位置(在其它情况下该值无效),根据这个位置值来对应你当前要操作的数据!
hzy694358
2010-05-19
打赏
举报
回复
[Quote=引用 12 楼 happyparrot 的回复:]
==(CScrollBar *)&m_ListCtrl
==还能这样转换啊。
[/Quote]
呵呵,我原来是用句柄的,看有些例子是这样的,我就跟着这样了
我发现在按下鼠标移动滚动条的过程中,
CListCtrlEx::OnHScroll()
根本没响应,
怎么让他在移动过程中就不断的响应呢
就跟Slider控件一样的效果
快乐鹦鹉
2010-05-19
打赏
举报
回复
==(CScrollBar *)&m_ListCtrl
==还能这样转换啊。
hzy694358
2010-05-19
打赏
举报
回复
还有个问题
//水平滚动条
void CTestDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
switch(nSBCode)
{
case SB_THUMBTRACK: //拖动滚动滑块时
//
这个是Slider控件,我鼠标按下拉动的时候,就会响应
if(pScrollBar==(CScrollBar *)&m_Slider)
{
int iPos = m_Slider.GetPos();//取得当前位置值
SetLayeredWindow(iPos);
CString strPos;
strPos.Format(_T("%d"),iPos);
GetDlgItem(IDC_STATIC_INFO)->SetWindowText(strPos);
}
//这个是CListCtrl控件,我鼠标按下拉动的时候,没响应,放开的时候才响应
//怎么会不一样呢
else if (pScrollBar==(CScrollBar *)&m_ListCtrl)
{
CRect rect;
m_ListCtrl.GetSubItemRect(m_row,m_col,LVIR_BOUNDS,rect);
m_Combobox.MoveWindow(&rect,TRUE);
}
break;
default:
break;
}
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
加载更多回复(10)
CLi
stCtrl
自绘 含
滚动条
挺不错的自绘列表框 含
滚动条
分享一下
MFC 重绘
CLi
stCtrl
、CTreeCtrl的
滚动条
.rar
MFC 重绘
CLi
stCtrl
、CTreeCtrl的
滚动条
,实现了添加滑动条控件的背景重绘,完全和控件完美的结合在一起,用当前的控件可以直接应用到你的项目进行二次开发,非常好的资源。
CLi
stCtrl
完全重绘(包括表头,表项和
滚动条
,带checkbox)
重绘带checkbox的
Cli
stCtrl
,包括表头,表项,
滚动条
全部重绘。
CLi
stCtrl
标题 条目
滚动条
定制
CLi
stCtrl
的定制,可以修改条目,标题,文字的颜色,以及
滚动条
资源。 都是别人的,整合一下,方便大家,虽然有点过时,用的时候,方便一点。
MFC 重绘
CLi
stCtrl
、CTreeCtrl的
滚动条
.rar_
CLi
stCtrl
_HNL2_MFC_MFC
滚动条
_mfc
MFC 重绘
CLi
stCtrl
、CTreeCtrl的
滚动条
界面
15,978
社区成员
115,866
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章