当前位置:C++技术网 > 资讯 > MFC鼠标移动实时提示信息框的自动消失功能实现

MFC鼠标移动实时提示信息框的自动消失功能实现

更新时间:2016-01-10 23:02:11浏览次数:1+次

MFC实现这篇文章没有什么难度,《MFC鼠标移动时的实时提示框的代码实现》加上一些代码就行了。说说我用MFC写这篇文章的心得吧。当提示框闪烁时,其实伴随着主窗口的激活状态的变化,提示框消失后,主窗口被激活。你也必须理解这段话,要不然真不知道怎么实现的。这句话困扰了我很久,一直在研究,最后,雄哥说他写了文章讲述的,我待会再补上。我自己断点调试后发现,只要你创建了鼠标移动消息——WM_MOUSEMOVE,程序就会在该消息处多运行一次。你可以自己测试下。尽管雄哥说这样有点问题,我想应该不影响结果。我强烈希望你研究透原文《win32鼠标移动实时提示信息框的自动消失功能实现

void C鼠标移动Dlg::OnMouseMove(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	if(ptOld.x==point.x&&ptOld.y==point.y)
	{
		return ;
	}
	TCHAR msg[100]=_T("");
	wsprintf(msg,_T("(%d,%d)"),point.x,point.y);
	m_Btn.SetWindowTextW(msg);
	m_Btn.MoveWindow(point.x+5,point.y+5,65,40);
	m_Btn.ShowWindow(SW_NORMAL);
	ptOld.x=point.x;
	ptOld.y=point.y;
	SetTimer(1,5000,NULL);
	CDialogEx::OnMouseMove(nFlags, point);
}


int C鼠标移动Dlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CDialogEx::OnCreate(lpCreateStruct) == -1)
		return -1;
	m_Btn.Create(L"(0,0)",BS_FLAT | WS_CHILD,CRect(0,0,65,40),this,123);
	// TODO:  在此添加您专用的创建代码
	return 0;
}
void C鼠标移动Dlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	m_Btn.ShowWindow(SW_HIDE);
	CDialogEx::OnTimer(nIDEvent);
}
看结果:


鼠标三秒后自动消失