如何在基于对话框中使鼠标指向菜单或按钮显示tooltip 谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.vckbase.com/bbs/prime/viewprime.asp?id=30 1、选择“Project”菜单,然后“Set Active Project” 。2、选择“Project”菜单 -->“Add to Project” -->“Components and Controls” -->“VC++ Components” --> “ToolTip Support” 3、选择“Insert” 4、在对话框资源中加入一个按钮,ID为IDC_ToolTip5、在 CDialog::OnInitDialog() 中找到下面的注释行: // TODO: Use one of the following forms to add controls: // m_tooltip.AddTool(GetDlgItem(IDC_), ); // m_tooltip.AddTool(GetDlgItem(IDC_), "");然后在注释行后加入一行代码: m_tooltip.AddTool(GetDlgItem(IDC_ToolTip), "显示 ToolTip");经过上面的步骤之后:头文件(*.h)中会自动加入下面的代码: public: virtual BOOL PreTranslateMessage(MSG* pMsg);实现文件(*.cpp)会加入方法实现: PreTranslateMessage(MSG* pMsg);编译程序执行吧,将鼠标指针移到ToolTip按钮上就会显示出一个ToolTip信息。 以下提供一篇工具栏中的ToolTip实现,可以转换到Button上去。1、选择按钮的风格中加入TOOLTIPS的风格。2、然后增加一个消息函数定义: afx_msg BOOL OnToolTipText(UINT, NMHDR *pNMHDR, LRESULT *pResult);3、增加消息映射: ON_NOTIFY_EX(TTN_NEEDTEXT, 0, OnToolTipText);4、消息函数实现: ……………………………… TOOLTIPTEXTA *pTTTA = (TOOLTIPTEXTA *)pNMHDR; TOOLTIPTEXTW *pTTTW = (TOOLTIPTEXTW *)pNMHDR; CString strTipText; UINT uID = pNMHDR->idForm; if(pNMHDR->code == TTN_NEEDTEXTA && (pTTTA ->uFlags & TTF_IDISHWND_\) || pNMHDR->code == TTN_NEADTEXTW && (pTTTW->uFlags & TTF_IDISHWND)) uID = ::GetDlgCtrlID((HWND)uID); //idForm位工具栏的HWND if(uID != 0) //不为分割符 { strTipText.LoadString(uID); strTipText = strTip.Mid(strTipText.Find('\n', 0) + 1);#ifndef _UNICODE if(pNMHDR->code == TTN_NEEDTEXTA) lstrcpyn(pTTTA->szText, strTipText, sizeof(pTTTA->szText)); else _mbstowcsz(pTTTW->szText, strTipText, sizeof(pTTTW->szText));#else if(pNMHDR->code == TTN_NEEDTEXTW) _wcstombsz(pTTTA->szText, strTipText, sizeof(pTTTW->szText)); else lstrcpyn(pTTTW->szText, strTipText, sizeof(pTTTW->szText));#endif *pResult = 0; ::SetWindowPos(pNMHDR->hwndForm, HWND_TOP, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE | SWP_NOOWNERZORDER); return TRUE; } return TRUE;} 为什么ssl vpn能通过gfw ? 程序启动后如何让它显示在屏幕正中间 MFC单文档小球反弹运动代码 添加控件后对话框不显示? WTL 的CHyperLink 刚刚接到的小课题,茫然^^^^^^关于文件操作的! 有关数据库的小问题 关于组件注册(Jmail),100分送上 使用ODBC连接数据库,使用CRecordset类需要什么样的头文件? ATL control with Connection point 怎么建立多线程 请问现在有什么软件使用了rtp实时传输协议?怎样编程实现它? ExitWindows(0,0)在XP中不是关机,而是注销?
2、选择“Project”菜单 -->“Add to Project” -->“Components and Controls” -->“VC++ Components” --> “ToolTip Support”
3、选择“Insert”
4、在对话框资源中加入一个按钮,ID为IDC_ToolTip
5、在 CDialog::OnInitDialog() 中找到下面的注释行: // TODO: Use one of the following forms to add controls:
// m_tooltip.AddTool(GetDlgItem(IDC_), );
// m_tooltip.AddTool(GetDlgItem(IDC_), "");
然后在注释行后加入一行代码:
m_tooltip.AddTool(GetDlgItem(IDC_ToolTip), "显示 ToolTip");
经过上面的步骤之后:头文件(*.h)中会自动加入下面的代码:
public:
virtual BOOL PreTranslateMessage(MSG* pMsg);实现文件(*.cpp)会加入方法实现:
PreTranslateMessage(MSG* pMsg);编译程序执行吧,将鼠标指针移到ToolTip按钮上就会显示出一个ToolTip信息。 以下提供一篇工具栏中的ToolTip实现,可以转换到Button上去。1、选择按钮的风格中加入TOOLTIPS的风格。
2、然后增加一个消息函数定义:
afx_msg BOOL OnToolTipText(UINT, NMHDR *pNMHDR, LRESULT *pResult);
3、增加消息映射:
ON_NOTIFY_EX(TTN_NEEDTEXT, 0, OnToolTipText);
4、消息函数实现:
………………………………
TOOLTIPTEXTA *pTTTA = (TOOLTIPTEXTA *)pNMHDR;
TOOLTIPTEXTW *pTTTW = (TOOLTIPTEXTW *)pNMHDR;
CString strTipText;
UINT uID = pNMHDR->idForm;
if(pNMHDR->code == TTN_NEEDTEXTA && (pTTTA ->uFlags & TTF_IDISHWND_\) || pNMHDR->code == TTN_NEADTEXTW && (pTTTW->uFlags & TTF_IDISHWND))
uID = ::GetDlgCtrlID((HWND)uID); //idForm位工具栏的HWND
if(uID != 0) //不为分割符
{
strTipText.LoadString(uID);
strTipText = strTip.Mid(strTipText.Find('\n', 0) + 1);#ifndef _UNICODE
if(pNMHDR->code == TTN_NEEDTEXTA)
lstrcpyn(pTTTA->szText, strTipText, sizeof(pTTTA->szText));
else
_mbstowcsz(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
#else
if(pNMHDR->code == TTN_NEEDTEXTW)
_wcstombsz(pTTTA->szText, strTipText, sizeof(pTTTW->szText));
else
lstrcpyn(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
#endif *pResult = 0;
::SetWindowPos(pNMHDR->hwndForm, HWND_TOP, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE | SWP_NOOWNERZORDER);
return TRUE;
}
return TRUE;
}