您的位置:首页 > 其它

半透明信息显示浮动窗口的实现

2016-12-05 20:57 225 查看
快乐鹦鹉 原文 半透明信息显示浮动窗口的实现

实现目的

在一些画图软件中,经常需要向用户展示鼠标移动到的位置的对象的一些参数信息。此时,完成一个交互性友好的信息显示界面就相当的重要了。因为一个软件的好坏,在用户的眼中,第一感觉甚至是第一重要的就是视觉效果和可操作性。当然,软件本身的稳定性和效率也很重要。特别对于产品性的软件,在用户展示时,一个优秀的界面效果可以大大加深软件在用户心里的印象分。

功能简介

本功能是作者根据自身软件在用户实际使用过程中对交互性的更高要求而开发的。浮动窗口其实是一个对话框,设置为无标题的风格,然后进行自绘制而成。能够根据需要显示的内容自动调整窗口的大小,保证正好能够容纳需要显示的内容。如以下效果:

void CShip::GetMsgTipInfo(CMsgTipArray &arMsgTip)
{
MSG_TIP mt;
mt.nInfoShowColor = -1;
mt.sMsgItemName = "它船位置信息";
mt.sMsgItemInfo = "";
arMsgTip.Add(mt);
mt.sMsgItemInfo = m_ShipBaseInfo.sEngName;
mt.sMsgItemName = "船舶名称";
mt.nInfoShowColor = COLOR_GRASS;
arMsgTip.Add(mt);
mt.sMsgItemInfo = m_ShipBaseInfo.sMMSIID;
mt.sMsgItemName = "MMSI";
arMsgTip.Add(mt);
CString sDate = m_ShipBaseInfo.tNowReptTime.Format("%Y-%m-%d %H:%M:%S");
mt.sMsgItemInfo = sDate;
mt.sMsgItemName = "报告时间";
arMsgTip.Add(mt);
CString sLat = CoordFormatDouble2Str(m_ShipBaseInfo.nowPos.dLatitude,true,theApp.m_sysINIFile.GetLatLongConfig().eLatLongFmt);
CString sLong = CoordFormatDouble2Str(m_ShipBaseInfo.nowPos.dLongitude,false,theApp.m_sysINIFile.GetLatLongConfig().eLatLongFmt);
mt.sMsgItemInfo = sLat;
mt.sMsgItemName = "纬度";
arMsgTip.Add(mt);
mt.sMsgItemInfo = sLong;
mt.sMsgItemName = "经度";
arMsgTip.Add(mt);
if(m_ShipBaseInfo.fNowCOG > 359.9)
mt.sMsgItemInfo = "NA";
else
mt.sMsgItemInfo.Format("%.1f°",m_ShipBaseInfo.fNowCOG);
mt.sMsgItemName = "航向";
arMsgTip.Add(mt);
if(m_ShipBaseInfo.fNowSOG > 102)
mt.sMsgItemInfo = "NA";
else
mt.sMsgItemInfo.Format("%.1f",m_ShipBaseInfo.fNowSOG);
mt.sMsgItemName = "航速";
arMsgTip.Add(mt);
if(m_ShipBaseInfo.wTrueHeading == 511)
mt.sMsgItemInfo = "NA";
else
mt.sMsgItemInfo.Format("%d°",m_ShipBaseInfo.wTrueHeading);
mt.sMsgItemName = "船首向";
arMsgTip.Add(mt);
if(abs(m_ShipBaseInfo.lROT) >= 720)
mt.sMsgItemInfo = "NA";
else
mt.sMsgItemInfo.Format("%d°/分",m_ShipBaseInfo.lROT);
mt.sMsgItemName = "转向率";
arMsgTip.Add(mt);
mt.sMsgItemName = "船位来源";
mt.sMsgItemInfo = m_ShipBaseInfo.sPosFromName;
if(mt.sMsgItemInfo.GetLength() == 0)
mt.sMsgItemInfo = m_ShipBaseInfo.sPosFromCode;
arMsgTip.Add(mt);
}


View Code

以上工作即可实现一个浮动的鼠标移动选中的对象的半透明的提示窗。当鼠标移开或者移动到提示窗上时,提示窗将立刻隐藏。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: