马上给分:ToolTips问题:如何给一个对话框程序中的一个按钮加提示?
解决方案 »
- 确定p2p通讯数据包顺序的问题
- OCX在IE里,如何做到全屏,不是IE全屏,而是OCX全屏
- CDHtmlDialog的使用问题
- 请问哪位研究过Hermite插值算法,能否给一个源代码?
- 请问学习MFC网络编程应该看什么书???
- 高手帮帮忙 看看这段代码用vc++怎么做?
- 怎样获得对话框失去焦点的消息
- 网络问题( 第三次了仍没有答案)
- MFC 重载CWnd类生成位图按钮
- 哪里有中文或E文的ATL学习参考资料下栽,100分奉上
- VC里ClassView中在一个类上点击右键弹出的菜单中看不到“Add Windows Message Handler...”这一项,怎么回事?
- 如何在程序运行中改变窗体的大小?
http://www.codeproject.com/miscctrl/tooltipex.asp
m_tooltip.Create(...);m_tooltip.AddTool(...);bool CxxDlg::PreTranslateMessage ( MSG *pMsg)
{
m_tooltip.RelayEvent(pMsg);
return CDialog::PreTranslateMessage ( pMsg );
}
显示工具提示文本
(1).如果是菜单或工具栏显示,则只要在ID属性的Prompt栏加"\n提示显示".
(2).在公共控件里显示则需以下步骤:
<1>.激活工具提示,方法在初始化里(OnInitDialog或OnInitUpdate)调用EnableToolTips();
<2>.在头文件的类声明中的类消息声明中添加:
afx_msg BOOL OnNeedToolTipText(UINT id, NMHDR * pTTTStruct, LRESULT * pResult);
<3>.在源文件中BENGIN_MESSAGE_MAP与END_MESSAGE_MAP之间的类消息表定义中添加:
ON_NOTIFY_EX(TTN_NEEDTEXT, 0, OnNeedToolTipText)
<4>.在源文件中添加OnNeedToolTipText函数:
BOOL CMFCSampleDlg::OnNeedToolTipText(UINT id, NMHDR * pNMHdr, LRESULT * pResult)
{
TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *) pNMHdr; if (pTTT->uFlags & TTF_IDISHWND) {
UINT idCtrl = ::GetDlgCtrlID(HWND(pTTT->hdr.idFrom));
pTTT->lpszText = MAKEINTRESOURCE(idCtrl);
pTTT->hinst = AfxGetResourceHandle(); return TRUE;
} return FALSE;
}
<5>.在资源中添加String table资源(要显示的提示信息).一般为IDS_TT_×××_×××.对应控件ID号IDC_×××_×××.
<6>.在Resource.h文件中修改IDS_TT_×××_×××与IDC_×××_×××同一资源号。
<7>.如果控件为静态文本(其他待研究)则需使控件有Notify属性。方法2:
1).在对话框类的.h中加入:
public:
CToolTipCtrl m_tip;
CWnd *pBtn;2).在OnInitDialog中加入:
pBtn=GetDlgItem(IDC_BUTTON1);//获得控件句柄
ASSERT(pBtn!=NULL);//判断句柄是否有效
m_tip.Create(pBtn,TTS_ALWAYSTIP);//创建ToolTip
m_tip.AddTool(pBtn);//将ToolTip与控件建立关联
m_tip.SetTipTextColor(RGB(0,0,0));//设置字体前景色
m_tip.SetTipBkColor(RGB(255,255,255));//设置背景色3).重载PreTranslateMessage
BOOL CtooltipDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if(m_tip.m_hWnd!=NULL)
m_tip.RelayEvent(pMsg); return CDialog::PreTranslateMessage(pMsg);
}4).重载WM_MOUSEMOVE
void CtooltipDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值 m_tip.UpdateTipText("我爱你!!!",pBtn); CDialog::OnMouseMove(nFlags, point);
}