怎么用OnMouseMove控制非模态对话框的显示和隐藏?

liujinquan1981 2007-07-03 02:04:29
我的程序是这样的:在主窗口中用鼠标移动来创建非模态对话框,然后当鼠标离开该对话框时,对话框自动隐藏,就象QQ那样,当鼠标移动至其隐藏处其自动显示,当鼠标离开QQ时,QQ又自动隐藏在电脑屏幕上方!
先谢谢各位大虾!
...全文
632 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
liujinquan1981 2007-07-03
  • 打赏
  • 举报
回复
差不多了,谢谢ggglivw
liujinquan1981 2007-07-03
  • 打赏
  • 举报
回复
谢谢楼上的,我再试一下
ggglivw 2007-07-03
  • 打赏
  • 举报
回复
不知道你说的是不是个人资料那个框.
你先搞清楚rect是什么.positonx,positony是鼠标位置
CButton *pCbut5 = (CButton *)GetDlgItem(IDC_BUTTON5);
CRECT rect;
GetWindowRect(rect);
ScreenToClient(rect);
if(positionx>rect.left&&positionx<(rect.left+rect.width())&&positiony>rect.top&&
positiony<(rect.top+rect.height()))
liujinquan1981 2007-07-03
  • 打赏
  • 举报
回复
现在是根本就隐藏不了,这样可以藏
void CMyDialog::OnMouseMove(UINT nFlags,CPoint point)
{
ShowWindow(SW_HIDE);
}
但是加上判断之后就不行了,所以感觉肯定是判断那一段有问题
ggglivw 2007-07-03
  • 打赏
  • 举报
回复
ShowWindow(SW_HIDE)是肯定可以隐藏窗口的,你的隐藏是怎么写的。
用 控件.ShowWindow(SW_HIDE);
还有,建议你做一个标志为来判断,是否隐藏显示,不要在OnMouseMove里面直接写,如果控件数量多的话还要lock,画完了unlock

liujinquan1981 2007-07-03
  • 打赏
  • 举报
回复
这样也不行
if(!rect.PtInRect(rect))
liujinquan1981 2007-07-03
  • 打赏
  • 举报
回复
if(pos.x==rect.Width())
这样也不行,郁闷了
ggglivw 2007-07-03
  • 打赏
  • 举报
回复
if(pos.x==rect.right)
///////////////////////
这个判断肯定有问题,你应该用矩形判断
liujinquan1981 2007-07-03
  • 打赏
  • 举报
回复
是不是前面的判断有问题?
liujinquan1981 2007-07-03
  • 打赏
  • 举报
回复
用ShowWindow(SW_HIDE)也不行
ggglivw 2007-07-03
  • 打赏
  • 举报
回复
晕,你怎么用DestroyWindow,写一个方法隐藏,不是让你销毁
liujinquan1981 2007-07-03
  • 打赏
  • 举报
回复
我那么做了,但是不好使
程序是这样的:
void CMyDialog::OnMouseMove(UINT nFlags,CPoint point)
{
CRect rect;
CPoint pos = point;
GetWindowRect(&rect);
if(pos.x==rect.right)
DestroyWindow()
}
syy64 2007-07-03
  • 打赏
  • 举报
回复
根据鼠标的坐标和对话框的窗口左边来判断。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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