vc 基于对话框实现工具条提示显示
2014-01-05 22:47
387 查看
在用基于对话框的MFC里面,这时我们在工具栏的属性页下的提示是不会显示的,需要加入下面的东东,我已完成,可以,大家可以参考下;
1.在***dlg.h中加入:
afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);
2.在***dlg.cpp中加入:
ON_NOTIFY_EX(TTN_NEEDTEXT,0,OnToolTipText)
3.添加函数OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)
BOOL C******Dlg::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)
{
ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW);
// UNICODE消息
TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
//TCHAR szFullText[512];
CString strTipText;
UINT nID = pNMHDR->idFrom;
if (pNMHDR->code==TTN_NEEDTEXTA && (pTTTA->uFlags&TTF_IDISHWND) || pNMHDR->code==TTN_NEEDTEXTW && (pTTTW->uFlags&TTF_IDISHWND))
{
//idFrom为工具条的HWND
nID = ::GetDlgCtrlID((HWND)nID);
}
if (nID != 0) //不为分隔符
{
strTipText.LoadString(nID);
strTipText = strTipText.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_NEEDTEXTA)
{
_wcstombsz(pTTTA->szText, strTipText,sizeof(pTTTA->szText));
}
else
{
lstrcpyn(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
}
#endif
*pResult = 0;
// 使工具条提示窗口在最上面
::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0,0,SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER);
return TRUE;
}
return TRUE;
}
4。在资源文件的toolbar中的每一个按钮的属性里面Prompt里面输入要提示的信息。
此时可以重建,点击菜单上的组建>重新组建,如果有提示说有错误说定义有误时,这时把第二步中加入的给注释,也就是前加//,具体为什么会这样,我还不清楚,不过注释掉后就可以顺利执行了。
1.在***dlg.h中加入:
afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);
2.在***dlg.cpp中加入:
ON_NOTIFY_EX(TTN_NEEDTEXT,0,OnToolTipText)
3.添加函数OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)
BOOL C******Dlg::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)
{
ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW);
// UNICODE消息
TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
//TCHAR szFullText[512];
CString strTipText;
UINT nID = pNMHDR->idFrom;
if (pNMHDR->code==TTN_NEEDTEXTA && (pTTTA->uFlags&TTF_IDISHWND) || pNMHDR->code==TTN_NEEDTEXTW && (pTTTW->uFlags&TTF_IDISHWND))
{
//idFrom为工具条的HWND
nID = ::GetDlgCtrlID((HWND)nID);
}
if (nID != 0) //不为分隔符
{
strTipText.LoadString(nID);
strTipText = strTipText.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_NEEDTEXTA)
{
_wcstombsz(pTTTA->szText, strTipText,sizeof(pTTTA->szText));
}
else
{
lstrcpyn(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
}
#endif
*pResult = 0;
// 使工具条提示窗口在最上面
::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0,0,SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER);
return TRUE;
}
return TRUE;
}
4。在资源文件的toolbar中的每一个按钮的属性里面Prompt里面输入要提示的信息。
此时可以重建,点击菜单上的组建>重新组建,如果有提示说有错误说定义有误时,这时把第二步中加入的给注释,也就是前加//,具体为什么会这样,我还不清楚,不过注释掉后就可以顺利执行了。
相关文章推荐
- 基于对话框实现工具条提示显示
- 基于对话框实现工具条提示显示
- 【VC++】 实现对话框透明显示
- 基于JQuery实现鼠标点击文本框显示隐藏提示文本
- VC++下实现2048总结(基于控制台和对话框两个程序)
- 基于JS实现密码框(password)中显示文字提示功能代码
- 基于对话框的MFC程序中,实现非模态子窗口在任务栏显示图标以及窗口左上角加图标
- VC 隐藏任务栏,实现对话框的全屏显示
- VC实现对话框上信息的显示
- 实现网页文本框显示灰色提示文字且点击后消失的一个小函数(基于jquery)
- VC中实现基于对话框的应用程序在启动时隐藏
- Asp.net中实现弹出提示显示在控件上对话框()
- 为对话框工具条显示提示(来自codeguru)
- 基于VC与Matlab的混合编程实现图像的三维显示
- VC中实现按钮提示,使用CToolTipCtrl2007年01月23日 星期二 20:09如果你需要对对话框上的一个按钮进行鼠标停靠提示,那么这么做:
- VC MFC 对话框,如何实现鼠标拖动显示一个框,松开鼠标框就消失
- VS.net2005基于VC++实现windows mobile下调用颜色选择对话框
- 基于JQuery实现鼠标点击文本框显示隐藏提示文本
- 用控件子类化实现拖放显示文件名编辑框时遇到的问题【基于对话框】
- 如何实现基于MFC对话框的PCL显示(1)