我想给一个按纽加一个提示信息,就是当鼠标在按纽上停留一会儿后提示它的信息~~
VC里面怎么设置啊?
VC里面怎么设置啊?
解决方案 »
- 如何利用opencv 从内存 dc 中 读 bmp 图片
- 哪位能给个模拟小球在平面上滚动,带摩擦力的公式或者代码,谢谢!
- 新手求教,UDP向客户端回复消息
- 关于activemovie 控件
- 局域网通讯干涉问题
- 如何动态的在状态栏添加一个进度条?
- 求软件:Install Shield Professional 6.22及其东方语言包
- !!!请问,几个asp调用同一个COM组件时,该如何避免或释放这些丢失的内存资源??
- VC++操作EXCEL进行排序sort的问题??????
- 请教SDK有关画刷的一个小问题
- DLL调用出错。。。。。。。。。。。。。。。
- 如何用ADO实现对其他服务器的建库?非常急!!!!!!!
假设你有了名为My的对话框的工程.首先建立一个Button,方法:在ResourceView中双击Dialog,添加Button采用默认值:IDC_BUTTON1.实现PreTranslateMessage消息的相应函数.
class CMyDlg : public CDialog
{
public:
CToolTipCtrl m_ToolTips;
...............
}; BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog(); // TODO: Add extra initialization here CButton *pButton;
pButton=(CButton *)GetDlgItem(IDC_BUTTON1);
m_ToolTips.Create(this);
m_ToolTips.AddTool(pButton,"This is a ToolTips text for this Button");
return TRUE; // return TRUE unless you set the focus to a control
} BOOL CMyDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
switch(pMsg->message)
{
case WM_LBUTTONDOWN:
case WM_LBUTTONUP:
case WM_MOUSEMOVE:
m_ToolTips.RelayEvent(pMsg);
}
return CDialog::PreTranslateMessage(pMsg);
}
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);
}O.K.
(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属性。比较麻烦的方法。