不能解决的给分,解决的给钱,时间限制在,13日之前!!!!!!!!!!!!

woaini5994 2003-09-11 05:03:38
我在一个基于对话框的程序中,希望当鼠标移动的一个按扭的区域的时候这个按扭可以隐藏,
m_not_love是一个CBUTTON的变量,下面是我实现的代码,但是不好用,请问是什么原因,如果有什么问题
请指教
MOUSEMOVE中
m_not_love.GetClientRect(&rect);
if(point.x >=rect.left&&point.x<=rect.left&&point.y<=rect.bottom&&point.y>=rect.top)//&&point.y<=rect.bottom&&point.y>=rect.top)
{
m_not_love.ShowWindow(SW_HIDE);
}
m_not_love.ShowWindow(SW_SHOW);
...全文
29 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
flinming 2003-09-12
  • 打赏
  • 举报
回复
up
cvip11 2003-09-12
  • 打赏
  • 举报
回复
怎么给钱???
yangsiwei 2003-09-12
  • 打赏
  • 举报
回复
你干嘛不做个移动到按钮上按钮就变成个嘴巴咬光标一口
philis 2003-09-12
  • 打赏
  • 举报
回复
楼主编程泡妞两不误,高,实在是高。
nonocast 2003-09-11
  • 打赏
  • 举报
回复
呵呵,永远点不到的Button
DIY
masterz 2003-09-11
  • 打赏
  • 举报
回复
在PreTranslateMessage中应该可以捕捉到mouse move 消息
  • 打赏
  • 举报
回复
单从代码上看:2个问题
MOUSEMOVE中
m_not_love.GetClientRect(&rect);
if(point.x >=rect.left////////////////////两个left总为假,除非在left线上
&&point.x<=rect.left
&&point.y<=rect.bottom
&&point.y>=rect.top)
//&&point.y<=rect.bottom&&point.y>=rect.top)
{
m_not_love.ShowWindow(SW_HIDE);
}
m_not_love.ShowWindow(SW_SHOW);///////////没else,这句总会执行
popyyb 2003-09-11
  • 打赏
  • 举报
回复
up
Oversense 2003-09-11
  • 打赏
  • 举报
回复
up
coohai 2003-09-11
  • 打赏
  • 举报
回复
可以实现。但你的代码还需要改动,另外还得改变思想。
先说不对之处,你所得到的窗口矩形是基于m_not_move的,需要转换成在父窗口中的坐标。

再说指导思想:
  你需要在两个地方分别处理WM_MOUSEMOVE的消息,一个是在m_not_move这个类中,另一个是在m_not_move的父窗口中。
  要处理第一个消息,m_not_move不能是CButton类型的变量,而应该是CButton的派生类,原因呢,楼上有位朋友说得对,只能在这个派生类中处理MOUSEMOVE的消息。
  具体方法是,在发生这个消息即可这样:this->ShowWindow(SW_HIDE)。这就可以了,你的按钮已经隐去,下个MOUSEMOVE消息便发生在父窗口中了。
  然后是第二个消息。这个在m_not_move中处理,我相信你能做了。
  具体方法是,检查该点是否已出了你的按钮所在矩形(这个矩形应该保存在你的父窗口类中)。要得到矩形得分两种情况。1,这个按钮是动态创建的,这种情况你创建它时所指定的矩形就是所需要的;2,这个按钮是你的Dialog或FormView中的,可以这样得到:
在父窗口类中
    CRect rct;
m_not_move.GetWindowRect(&m_not_move);
    ScreenToClient(&rct);//rct这个矩形即为所求。
  得到后,若在矩形之处了,可以调用m_not_move.ShowWindow(SW_SHOW);
因为在矩形外会多次触发MOUSEMOVE消息,可以设置m_not_move的成员变量表示它是否是隐藏的,若是则m_not_move.ShowWindow(SW_SHOW);同时将该变量置为FALSE,并且在你隐藏时将它置为TRUE。这样是为了避免每次都调用m_not_move.IsWindowVisible()。
  
  好了,这就实现了。
whoishere 2003-09-11
  • 打赏
  • 举报
回复
示例代码已发,请查收!
如有问题请今晚提出,后天晚10点之前估计都无法上网
Coder 青田 2003-09-11
  • 打赏
  • 举报
回复
UP
woaini5994 2003-09-11
  • 打赏
  • 举报
回复
to 风清扬,
我做的按钮并不是要触发实现命令的作用,只不过是在整体设计一个花哨的东西
不过上面两位的话使小弟觉悟不少,真的是很感谢,
中秋快乐,祝愿天下的程序员都 银子大大的 要不怎么你们的星星比我多呢
谢谢了
whoishere 2003-09-11
  • 打赏
  • 举报
回复
当鼠标移到按钮上时,WM_MOVE被发送给了该按钮,窗口是接收不到该消息的,
正确的做法是你应该派生一个CButton类,在该Button类中处理WM_MOUSEHOVER消息和WM_MOUSELEAVE消息,在前一个消息隐藏按钮,在后一个消息显示按钮。
如果需要具体的代码,可以留个MAIL给我
lygfqy 2003-09-11
  • 打赏
  • 举报
回复
首先我想说的是,如果你把它实现成一个按钮,你移到上面的时候就消失的话,你还做成个按钮干什么?因为它永远也不会被按下去。
不能实现的原因是,当你把鼠标移动到按钮窗口上的时候,mousemove的消息,就分发给了按钮窗口了,而不是你的父窗口,所以你的代码永远也不会运行的。
akiko 2003-09-11
  • 打赏
  • 举报
回复
没看见else??哪总会执行m_not_love.ShowWindow(SW_SHOW);
不要问我低多少钱! 多低的价格能满足你的欲望? 没有利润的服务,如果我敢做,你敢用吗? 请记着祖先的一句老话【一份价钱一货】! 天上不会掉馅饼! 便宜的东西,在你买的那一刻是开心的, 之后用(看)一次闹心一次。 贵的东西,在你买的那一刻是肉疼的 但之后的每一次都是舒心的。 生活的格调在于你的品味, 生命的质量在于你的选择, 时间会证明你的理性和瞻远的眼光。 外行人比的是价格, 内行人比的是价值、比的是品质、比的是知识! 没有一点点利润,哪来的高大上服务? 单纯的比价格,时间久了 ,你就发现: 一降再降的价格永远满足不了自己的心 永远会觉得自己买贵了、买的不值, 自己一直在闹心! 如果你在乎的是服务,就不要管价格的高低! 问了价格,可能会破坏你享受的心情! 如果你在乎的是质量,就请尊重产品的价格; 如果你想要的是便宜,请不要企图会有好质量! "一钱一货",道理亘古不变 再美的语言没有质量佐证就是谎言! 切记:想要人参的功效,花的是买萝卜的钱, 后,买到的就不可能是人参! 好贵、好贵、好才贵! 在竞争激烈,价格透明的今天, 价格取决于产品的真实价值(包括知识)! 信不信,你自己说了算…… 【课程目标】 一次成功SSM+辅助插件整合 【课程结构】 1.项目的整体架构。 2.项目的技术选型。 3.SSM析建立数据库 4.淘宝列表页展示 5.万能页:让天底下没有难做的页 6.springmvc4+Mybatis3+Spring4的增删改查 7.Echarts3整合 8.jQuery ,jQuery-ui,ajax的整合json。 9.谷歌json技术处理

16,470

社区成员

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

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

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