怎么实现“即指即提示”,(50分)

  • 主题发起人 主题发起人 Yves
  • 开始时间 开始时间
Y

Yves

Unregistered / Unconfirmed
GUEST, unregistred user!
很多语言开发环境的代码编辑器都有一个所谓“即指即提示”的功能,比如我们的鼠标指向编辑器中的一个单词——一个变量,它就会显示出这个变量的信息,这个功能怎么实现呢?请帮帮忙!我希望能给出一个在vc下的实现方法,如果是delphi的只要能移植到vc上的也好,谢谢!最好有控件啊,源码之类的,呵呵
 
用CMFECToolTip类可以实现鼠标提示功能。
新建一个基于对话框的程序InfoTip。
添加几个控件。比如一个静态文本,一个编辑框,CComboxbox控件和一个按钮。
ID分别为IDC_TEXT1,IDC_EDIT1,IDC_COMBO1,IDC_BUTTON1.
给对话框增加CMFECToolTip类型的成员变量m_toolTip.
将所有需要显示提示信息的控件信息告诉CMFECToolTip对象.
在OnIiniDialog()函数中添代码
Bool CinfoTipDlg::OnInitDialog();
{
.........
//TODO:Add extra initalizetion here
m_toolTip.Create(this);
CStringArray straInfo;
straInfo.RemoveAll();
straInfo.Add("Button Control");
m_toolTip.AddControlInfo(IDC_BUTTON1,straInfo,RGB(0,0,255),RGB(255,0,129));

straInfo.RemoveAll();
straInfo.Add("Text Control");
m_toolTip.AddControlInfo(IDC_TEXT1,straInfo,RGB(255,255,0));
straInfo.RemoveAll();
straInfo.Add("Edit Control");
m_toolTip.AddControlInfo(IDC_EDIT1,straInfo,RGB(255,255,0));
straInfo.RemoveAll();
straInfo.Add("ComBox Control");
straInfo.Add("Data in the list:");
straInfo.Add("Data1");
straInfo.Add("data2");
m_toolTip.AddControlInfo(IDC_COMBO1,straInfo,RGB(192,0,192));
return TRUE;//return TRUE unless you set the focus to a control
}
然后在对话框的PreTranslateMessage(MSG *pMsg)函数中捕捉WM_MOUSEMOVE消息
BOOL CInfoTipDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_MOUSEMOVE)
{
POINT pt=pMsg->pt;
ScreenToClient(&pt);
m_toolTip.ShowToolTip((CPoint)pt);
}
return CDialog::PreTranslateMessage(pMsg);
}
你试试,可能有打错的地方,你改一改就可以了。
 
接受答案了.
 
后退
顶部