【怎么改变滑块按钮的鼠标响应区域的大小】

大树学长 2015-01-15 08:56:43
RT
我自己写的滑块类,现在感觉滑块上面的那个按钮太小了,替换的位图也显示不清楚。
按钮的大小我能改变,关键是响应区域的大小改变不了,

怎么做到像下面的




...全文
212 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
大树学长 2015-01-17
  • 打赏
  • 举报
回复
引用 15 楼 dingxz105090 的回复:
或者是这个:PostMessageToParent(TB_THUMBPOSITION);

其中:
void PostMessageToParent(const int nTBCode) const;

void PostMessageToParent(const int nTBCode) const
{
CWnd* pWnd = GetParent();
if(pWnd) pWnd->PostMessage(WM_HSCROLL, (WPARAM)((GetPos() << 16) | nTBCode), (LPARAM)GetSafeHwnd());
}


有点问题啊,
比如滑块按钮的区域是A,而我想要是大于A区域的B;

我按照这个思路将鼠标放在B区域进行拖地的时候,拖地肯定是先按下鼠标,但是在按下鼠标的时候按钮就直接挑走了,

滑块按钮应该是响应了鼠标单击。TB_PAGEDOWN(用户单击了滑块下面或右边的通道)或者TB_PAGEUP(用户单击了滑块上面或左边的通道)
凌乱哥 2015-01-17
  • 打赏
  • 举报
回复
或者是这个:PostMessageToParent(TB_THUMBPOSITION); 其中: void PostMessageToParent(const int nTBCode) const; void PostMessageToParent(const int nTBCode) const { CWnd* pWnd = GetParent(); if(pWnd) pWnd->PostMessage(WM_HSCROLL, (WPARAM)((GetPos() << 16) | nTBCode), (LPARAM)GetSafeHwnd()); }
凌乱哥 2015-01-17
  • 打赏
  • 举报
回复
引用 13 楼 bigtree_mfc 的回复:
[quote=引用 12 楼 MJ_dangerous 的回复:] PtInRect(RECT* lprc, POINT pt) ;判断鼠标是否在某个区域点击。你值得拥有
我帮你完善一下这个思路: 在OnMouseMove函数中先获取滑块按钮的区域 this->GetThumbRect(rect); 然后将这个区域宽和长扩大一点,达到变大的效果。 RECT rt = { rect.左,rect.上,rect.右+10,rect.下+10}; 然后用PtInRect(RECT* lprc, POINT pt) ;进行判断是否在这个扩大的区域内 if(PtInRect(&rt,point)) { //在这个区域 } 然后列? 我要能够在扩大的区域内能够拖动滑块移动。 [/quote] if(PtInRect(&rt,point)) { //在这个区域 PostMessageToParent(TB_THUMBTRACK); }
大树学长 2015-01-16
  • 打赏
  • 举报
回复
引用 12 楼 MJ_dangerous 的回复:
PtInRect(RECT* lprc, POINT pt) ;判断鼠标是否在某个区域点击。你值得拥有
我帮你完善一下这个思路: 在OnMouseMove函数中先获取滑块按钮的区域 this->GetThumbRect(rect); 然后将这个区域宽和长扩大一点,达到变大的效果。 RECT rt = { rect.左,rect.上,rect.右+10,rect.下+10}; 然后用PtInRect(RECT* lprc, POINT pt) ;进行判断是否在这个扩大的区域内 if(PtInRect(&rt,point)) { //在这个区域 } 然后列? 我要能够在扩大的区域内能够拖动滑块移动。
MJ_dangerous 2015-01-16
  • 打赏
  • 举报
回复
PtInRect(RECT* lprc, POINT pt) ;判断鼠标是否在某个区域点击。你值得拥有
大树学长 2015-01-16
  • 打赏
  • 举报
回复
引用 10 楼 wqvbjhc 的回复:
纯贴图
鼠标响应区域的大小改变不了,贴再大的图片也没用啊
wqvbjhc 2015-01-16
  • 打赏
  • 举报
回复

纯贴图
大树学长 2015-01-16
  • 打赏
  • 举报
回复
引用 7 楼 boylafong 的回复:
你可以在类里面加个参数啊,设置响应区域大小,你贴了图后再设置下响应区域大小
设置响应区域大小的函数名称???????????????
大树学长 2015-01-16
  • 打赏
  • 举报
回复
boylafong 2015-01-15
  • 打赏
  • 举报
回复
你可以在类里面加个参数啊,设置响应区域大小,你贴了图后再设置下响应区域大小
信阳毛尖 2015-01-15
  • 打赏
  • 举报
回复
引用 3 楼 bigtree_mfc 的回复:
[quote=引用 1 楼 lsq19871207 的回复:] 按钮的大小我能改变,关键是响应区域的大小改变不了 -------------------------------------------------------------------------- 自己绘图?自己相应WM_LBUTTONDOWN消息? 如果是的话,自己相应WM_LBUTTONDOWN消息我们的一般思路是使用 PtInRect(RECT* lprc, POINT pt) 来判断鼠标当前所在的位置是否处于某一区域。你可以改变按钮的大小,你只需要记住按钮在OnPaint之后的RECT就好了呀,在处理WM_LBUTTONDOWN消息的时候判断鼠标是否在按钮RECT范围内即可
我不是用的按键响应也没有paint 位图的插入用的是StretchBlt()函数,可以改变位图的大小,这个就是我说的位图大小改变,但响应区域没有改变[/quote] 我奇怪的是你的按钮类不自己去贴图,却在按钮类外部去对按钮贴图,这种设计本身就存在问题啊!! 如果你非要这么干的话,你StretchBlt的时候是知道Blt的区域大小的吧,你先对按钮movewindow一下,再StretchBlt
大树学长 2015-01-15
  • 打赏
  • 举报
回复
如图
红色区域是滑块按钮的区域也是响应鼠标的区域
黑色的是插入的位图大小区域
大树学长 2015-01-15
  • 打赏
  • 举报
回复
引用 2 楼 boylafong 的回复:
响应区域的大小改变不了 什么意思? 图片大小不就是响应区域吗? 不就是判断鼠标在某个矩形区域内吗?
那是按钮类 滑块类的按钮大小改变不了,但我插入的位图大小可以超过滑块按钮的区域大小,所以图片能改变大小,但滑块按钮还没没有改变,所以响应鼠标的区域还是按钮的区域,也就是鼠标响应区域的大小
大树学长 2015-01-15
  • 打赏
  • 举报
回复
引用 1 楼 lsq19871207 的回复:
按钮的大小我能改变,关键是响应区域的大小改变不了 -------------------------------------------------------------------------- 自己绘图?自己相应WM_LBUTTONDOWN消息? 如果是的话,自己相应WM_LBUTTONDOWN消息我们的一般思路是使用 PtInRect(RECT* lprc, POINT pt) 来判断鼠标当前所在的位置是否处于某一区域。你可以改变按钮的大小,你只需要记住按钮在OnPaint之后的RECT就好了呀,在处理WM_LBUTTONDOWN消息的时候判断鼠标是否在按钮RECT范围内即可
我不是用的按键响应也没有paint 位图的插入用的是StretchBlt()函数,可以改变位图的大小,这个就是我说的位图大小改变,但响应区域没有改变
boylafong 2015-01-15
  • 打赏
  • 举报
回复
响应区域的大小改变不了 什么意思? 图片大小不就是响应区域吗? 不就是判断鼠标在某个矩形区域内吗?
信阳毛尖 2015-01-15
  • 打赏
  • 举报
回复
按钮的大小我能改变,关键是响应区域的大小改变不了 -------------------------------------------------------------------------- 自己绘图?自己相应WM_LBUTTONDOWN消息? 如果是的话,自己相应WM_LBUTTONDOWN消息我们的一般思路是使用 PtInRect(RECT* lprc, POINT pt) 来判断鼠标当前所在的位置是否处于某一区域。你可以改变按钮的大小,你只需要记住按钮在OnPaint之后的RECT就好了呀,在处理WM_LBUTTONDOWN消息的时候判断鼠标是否在按钮RECT范围内即可

16,372

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧