一直在开发一个软件,最近对软件进行升级,想给各个控件增加一些提示,这样方便新手用户熟悉功能。以前没有接触过这方便的知识,于是百度了一下。
对控件添加提示时非常方便的,因为我的软件时给予VC6.0 Dialog的,现在将IDE改成VS2008,基本都是一些很容易就改掉的编译错误。
对于每一个基于CDialog的类,
我们在其头文件中<*.h> 的类定义中,添加声明函数
BOOL OnToolTipNotify(UINT id, NMHDR * pNMHDR, LRESULT * pResult );
然后添加系统消息TTN_NEEDTEXT
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
ON_NOTIFY_EX(TTN_NEEDTEXT, 0, OnToolTipNotify )
END_MESSAGE_MAP()
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
EnableToolTips();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
对于其它的控件,只需要继续添加case项就可以了实现了各种各样的提示了。BOOL CMyDlg::OnToolTipNotify(UINT id, NMHDR * pNMHDR, LRESULT * pResult ) { TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR; UINT nID =pNMHDR->idFrom; if (pTTT->uFlags & TTF_IDISHWND) { nID = ::GetDlgCtrlID((HWND)nID); switch (nID) { default: return(FALSE); break; case IDC_BUTTON_TEST: pTTT->lpszText = "123456";//要显示的Tip break; } pTTT->hinst = AfxGetResourceHandle(); return(TRUE); } return(FALSE); }
缺点:如果一个较大的控件,提示会出现在控件的下方中奖,提示效果不明显。
优点:只需很小的修改量就能满足要求,对于简单的应用非常简单。
PS:很久没有写文章了,没手感。
本文首发于CSDN,转贴请标明来源!