我的程序问题出在那里?

ren20 2001-05-10 07:31:00
一个对话框,鼠标进入对话框客户区就到屏幕上的一个位置, 离开又换一个位置。

但是我的程序为什么只能响应进入,不能响应离开。 鼠标离开,对话框为什么不换位置。
谢谢

void CRf001Dlg::OnMouseMove(UINT nFlags, CPoint point)
{
CRect rect;
GetWindowRect(&rect);
ClientToScreen(&point);
if (rect.PtInRect(point))
{
::SetWindowPos (GetSafeHwnd(), HWND_TOPMOST,100, 110, 280, 150,SWP_SHOWWINDOW);

}
else
{
::SetWindowPos (GetSafeHwnd(), HWND_TOPMOST,200, 410, 150, 50, SWP_SHOWWINDOW);

}
...全文
472 点赞 收藏 27
写回复
27 条回复
supperlxf 2001年05月10日
oncreate时
::SetWindowPos (GetSafeHwnd(), HWND_TOPMOST,100, -20, 280, 20, SWP_SHOWWINDOW);
分我不要了,你放了我吧
回复 点赞
ren20 2001年05月10日
谢谢 supperlxf(嘿嘿) 

问题解决了。

我会给分的, 还有个问题,
我的程序一开始出现在屏幕中央, 怎样是它一开始就显示在最上方。 再加20分。
回复 点赞
supperlxf 2001年05月10日
运行成功看:
POINT point;
CRect rect;
GetWindowRect(&rect);
::GetCursorPos(&point);
if (rect.PtInRect(point))
{
::SetWindowPos (GetSafeHwnd(), HWND_TOPMOST,100, 110, 280, 100, SWP_SHOWWINDOW);
::MessageBox(0," "," ",0);
}
else
{
::SetWindowPos (GetSafeHwnd(), HWND_TOPMOST,200, 410, 250, 100, SWP_SHOWWINDOW);

}

CDialog::OnTimer(nIDEvent);
回复 点赞
ren20 2001年05月10日
是呀, 只在对话框有效。
回复 点赞
supperlxf 2001年05月10日
对不起是GetCaretPos();
回复 点赞
seedundersnow 2001年05月10日
我问一句,您的设置是否只在那个小框框里面有效?
回复 点赞
ren20 2001年05月10日
supperlxf(嘿嘿) 

你先试一下吧,还是不行。
回复 点赞
supperlxf 2001年05月10日
这分挣的可真不容易
回复 点赞
supperlxf 2001年05月10日
吐血:

void CRf001Dlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default

CPoint point;
CRect rect;
GetWindowRect(&rect);
// ClientToScreen(&point);
point=GetCapture();
if (rect.PtInRect(point))
{
::SetWindowPos (GetSafeHwnd(), HWND_TOPMOST,100, 110, 280, 100, SWP_SHOWWINDOW);

}
else
{
::SetWindowPos (GetSafeHwnd(), HWND_TOPMOST,200, 410, 250, 100, SWP_SHOWWINDOW);

}
CDialog::OnTimer(nIDEvent);
}



回复 点赞
supperlxf 2001年05月10日
看我这:
void CRf001Dlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default

CPoint point;
CRect rect;
GetWindowRect(&rect);
// ClientToScreen(&point);
GetCapture(point)
if (rect.PtInRect(point))
{
::SetWindowPos (GetSafeHwnd(), HWND_TOPMOST,100, 110, 280, 100, SWP_SHOWWINDOW);

}
else
{
::SetWindowPos (GetSafeHwnd(), HWND_TOPMOST,200, 410, 250, 100, SWP_SHOWWINDOW);

}
CDialog::OnTimer(nIDEvent);
}

回复 点赞
ren20 2001年05月10日
void CRf001Dlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default

CPoint point;
CRect rect;
GetWindowRect(&rect);
// ClientToScreen(&point);
GetCapture();

if (rect.PtInRect(point))
{
::SetWindowPos (GetSafeHwnd(), HWND_TOPMOST,100, 110, 280, 100, SWP_SHOWWINDOW);

}
else
{
::SetWindowPos (GetSafeHwnd(), HWND_TOPMOST,160, 110, 250, 100, SWP_SHOWWINDOW);

}
CDialog::OnTimer(nIDEvent);
}
回复 点赞
supperlxf 2001年05月10日
你最后是怎么写的?
回复 点赞
supperlxf 2001年05月10日
我为什么要说“又”啊,嘿嘿
回复 点赞
ren20 2001年05月10日
还是不行呀
回复 点赞
ren20 2001年05月10日
呵呵, 我再试试
回复 点赞
supperlxf 2001年05月10日
哈哈,我又写错了
回复 点赞
ren20 2001年05月10日
to supperlxf(嘿嘿) 

鼠标离开后,还是没有响应
回复 点赞
supperlxf 2001年05月10日
漏了:

void CRf001Dlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default

CPoint point;
CRect rect;
//GetWindowRect(&rect);
// ClientToScreen(&point);
GetCapture(.....)
if (rect.PtInRect(point))
{
::SetWindowPos (GetSafeHwnd(), HWND_TOPMOST,100, 110, 280, 100, SWP_SHOWWINDOW);

}
else
{
::SetWindowPos (GetSafeHwnd(), HWND_TOPMOST,200, 410, 250, 100, SWP_SHOWWINDOW);

}
CDialog::OnTimer(nIDEvent);
}

回复 点赞
supperlxf 2001年05月10日
这样:
void CRf001Dlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default

CPoint point;
CRect rect;
GetWindowRect(&rect);
// ClientToScreen(&point);

if (rect.PtInRect(point))
{
::SetWindowPos (GetSafeHwnd(), HWND_TOPMOST,100, 110, 280, 100, SWP_SHOWWINDOW);

}
else
{
::SetWindowPos (GetSafeHwnd(), HWND_TOPMOST,200, 410, 250, 100, SWP_SHOWWINDOW);

}
CDialog::OnTimer(nIDEvent);
}
回复 点赞
ren20 2001年05月10日
谢谢 In355Hz(好象一条狗) 

请看看,我现在改成这样。
好象只能响应else 的语句了。鼠标放上去,没有反应。

void CRf001Dlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default

CPoint point;
CRect rect;
GetWindowRect(&rect);
ClientToScreen(&point);

if (rect.PtInRect(point))
{
::SetWindowPos (GetSafeHwnd(), HWND_TOPMOST,100, 110, 280, 100, SWP_SHOWWINDOW);

}
else
{
::SetWindowPos (GetSafeHwnd(), HWND_TOPMOST,200, 410, 250, 100, SWP_SHOWWINDOW);

}
CDialog::OnTimer(nIDEvent);
}
回复 点赞
发动态
发帖子
VC/MFC
创建于2007-09-28

7893

社区成员

42.1w+

社区内容

VC/MFC相关问题讨论
社区公告
暂无公告